本設(shè)計(jì)實(shí)例進(jìn)一步拓展了以前將步進(jìn)電機(jī)驅(qū)動(dòng)器集成到CPLD中的設(shè)計(jì)(參考文獻(xiàn)1)。本實(shí)例不僅集成了驅(qū)動(dòng)器,而且還集成了一個(gè)簡(jiǎn)單的單軸步進(jìn)電機(jī)運(yùn)動(dòng)控制器。根據(jù)CPLD大小,可以將多個(gè)運(yùn)動(dòng)控制器設(shè)計(jì)到單一設(shè)備中。例如,單軸運(yùn)動(dòng)控制器采用68%或63%的可用宏單元設(shè)計(jì)到Xilinx XC95108中。運(yùn)動(dòng)控制器以確定的速度與時(shí)間曲線順時(shí)針或逆時(shí)針旋轉(zhuǎn)步進(jìn)電機(jī)指定的步數(shù)。運(yùn)動(dòng)開始時(shí),控制器對(duì)電機(jī)加速,直到其達(dá)到巡航速度,然后減速直到停止(圖1)。
控制器可將電機(jī)速度調(diào)節(jié)到16 個(gè)值,V=VMAX×speed/16, 其中速度值為0到16的整數(shù)。在加速階段,速度從1到16升高,在巡航階段,速度保持在16,最后,在減速階段,速度下降到1,直到停止??刂破髟谶_(dá)到巡航速度階段前如果沒(méi)有足夠的步數(shù),控制器可直接從加速階段進(jìn)入減速階段。在程序中利用恒定“加速”功能可以在1到255間調(diào)節(jié)加速/減速速度。較大值的加速會(huì)造成緩慢的加速/減速;低值就會(huì)得到較快的加速/減速。該CPLD步進(jìn)電機(jī)驅(qū)動(dòng)器的輸入包括時(shí)鐘、方向、完全/半步長(zhǎng)、復(fù)位、下一步、啟動(dòng)和停止等。
時(shí)鐘輸入工作在正向時(shí)鐘脈沖邊沿上。最大電機(jī)速度為16 個(gè)時(shí)鐘一步。方向輸入確定了電機(jī)的旋轉(zhuǎn)方向。電機(jī)順時(shí)針或逆時(shí)針?lè)较蜻\(yùn)行,取決于該輸入的大小和電機(jī)的連接方式。該值在開始向高運(yùn)行后的第一上升時(shí)鐘邊沿鎖定。完全步長(zhǎng)或半步長(zhǎng)輸入決定了電機(jī)在每個(gè)時(shí)鐘脈沖內(nèi)的角旋轉(zhuǎn)。在低態(tài)時(shí),電機(jī)在每個(gè)應(yīng)用的時(shí)鐘脈沖內(nèi)執(zhí)行完全步長(zhǎng),在高態(tài)時(shí)則需要執(zhí)行半步長(zhǎng)。在復(fù)位輸入時(shí)較大的電流可將電機(jī)設(shè)定為已定義好的狀態(tài)。在復(fù)位輸入較大時(shí),電機(jī)可忽略任何時(shí)鐘脈沖。16位的Nstep值定義了下一運(yùn)動(dòng)將要執(zhí)行的步數(shù)。該值在開始向高運(yùn)行后的第一上升時(shí)鐘邊沿鎖定。開始輸入較高的電流可啟動(dòng)運(yùn)動(dòng)。較大的停止輸入電流可停止運(yùn)動(dòng),從而退出當(dāng)前的運(yùn)動(dòng)。
該CPLD步進(jìn)電機(jī)驅(qū)動(dòng)器的輸出為A、A_N、B和B_N(圖2)。A 和A_N 通過(guò)電源驅(qū)動(dòng)器輸出控制一個(gè)電機(jī)線圈,B和B_N輸出通過(guò)電源驅(qū)動(dòng)器控制電機(jī)的第二線圈。
CPLD/FPGA無(wú)法直接驅(qū)動(dòng)電機(jī),所以需要外部驅(qū)動(dòng)器。驅(qū)動(dòng)器必須達(dá)到電機(jī)的額定電壓。每個(gè)驅(qū)動(dòng)器輸出端的肖特基整流二極管允許在電機(jī)線圈中的電流續(xù)流。如果使用MOSFET驅(qū)動(dòng)器,由于MOSFET有內(nèi)置的二極管,就不需要外部肖特基整流二極管了。Microchip TC4424A 雙驅(qū)動(dòng)器可以驅(qū)動(dòng)電機(jī)線圈達(dá)到18V和3A。
參考文獻(xiàn)
1. Roche, Stephan, “Implement a stepper-motor driver in a CPLD,” EDN, Feb 15, 2007, pg 90.