在步進(jìn)電機(jī)的控制中,方向和轉(zhuǎn)角控制簡單,而轉(zhuǎn)速控制則比較復(fù)雜。步進(jìn)電機(jī)工作時,失步或過沖直接影響其定位精度。在設(shè)計系統(tǒng)的時候,除了應(yīng)正確選擇步進(jìn)電機(jī)和驅(qū)動電源之外,還必須對步進(jìn)電機(jī)控制脈沖的頻率進(jìn)行調(diào)節(jié)。
由于步進(jìn)電機(jī)的轉(zhuǎn)速正比于控制脈沖的頻率,所以調(diào)節(jié)步進(jìn)電機(jī)脈沖頻率,實質(zhì)上就是調(diào)節(jié)步進(jìn)電機(jī)速度。
振合電機(jī)工程師在此結(jié)合實例給出軟件實現(xiàn)的方法來分析步進(jìn)電機(jī)的速度調(diào)節(jié)問題:
1 步進(jìn)脈沖的調(diào)頻方法
對步進(jìn)電機(jī)控制的一個中心問題就是速度調(diào)節(jié)。即產(chǎn)生一系列頻率可調(diào)的步進(jìn)脈沖序列,送到驅(qū)動電源,控制電機(jī)繞組的輪流通電,實現(xiàn)電機(jī)的轉(zhuǎn)動。脈沖序列的產(chǎn)生用微處理器實現(xiàn),有軟件延時和硬件定時兩種方法。
(1) 軟件延時:通過調(diào)用標(biāo)準(zhǔn)的延時子程序來實現(xiàn)。假定控制器基于AT89S52單片機(jī) ,晶振頻率為12 MHz,那么可以編制一個標(biāo)準(zhǔn)的延時子程序如下:
該子程序的入口為(0E)(0D)兩個字節(jié),若需要20000 us的延時,則給(0E)(0D)兩個字節(jié)賦值4E20H,即執(zhí)行下面程序:
MOV 0EH,#4EH ;20 000的十六進(jìn)制碼為4E20。
MOV 0DH.#20H
CALL DELAY ;調(diào)用標(biāo)準(zhǔn)延時子程序DELAY。
若要控制步進(jìn)電機(jī)走100步,每兩步之間延時20 000 s,則匯編程序為:
MOV 0FH,#100D ;準(zhǔn)備走100步。
CONTI: CALL I_STEP ;電機(jī)走一步(調(diào)用電機(jī)的脈沖分配子程序)
MOV 0EH,#4EH ;20 000的十六進(jìn)制碼為4E20。
MOV 0DH,#20H
CALL DELAY ;相鄰步之間的延時(決定電機(jī)的轉(zhuǎn)速)。
DJNZ 0FH,CONTI ;循環(huán)次數(shù)減1后,若不為0則繼續(xù),循環(huán)100次。
可以看出,采用軟件延時方法實現(xiàn)速度調(diào)節(jié)的優(yōu)點是程序簡單,思路清晰,不占用硬件資源。缺點是浪費CPU的寶貴時間,在控制電機(jī)轉(zhuǎn)動的過程中,CPU不能做其它事。
(2) 硬件定時:假定控制器仍為AT89S52單片機(jī),晶振頻率為12 MHz,將AT89S52的TD作為定時器使用,設(shè)定T0工作在模式1(16位定時/計數(shù)器)。今要求它能定時地發(fā)出步進(jìn)脈沖,其定時中斷產(chǎn)生的脈沖序列的周期(即步進(jìn)電機(jī)的脈沖間隔)假定為20 000 s,則可算出TD所對應(yīng)的定時常數(shù)為B1E0H,CPU相應(yīng)的程序如下:
主程序:
MOV TMOD,#01H ;設(shè)T0取工作模式1。
MOV TH0.#0B1H ;裝入定時常數(shù)高8位。
MOV TLO,#0E0H ;裝入定時常數(shù)低8位。
SETB TR0 ;啟動T0定時。
SETB ET0 ;允許T0中斷。
SETB EA ;允許CPU中斷。
$ ;CPU等待T0的定時到。
中斷服務(wù)程序:
CLR ET0 ;關(guān)T0中斷。
CALL I_STEP ;控制電機(jī)走一步(調(diào)用電機(jī)的脈沖分配子程序)。
RETI ;T0中斷返回。
本例中,只要改變T0 的定時常數(shù),就可實現(xiàn)步進(jìn)電機(jī)的調(diào)速。這種方法既需要硬件(T0定時器)又需要軟件來確定脈沖序列的頻率,所以是一種軟硬件相結(jié)合的方法。它的缺點是占用了一個定時器。在比較復(fù)雜的控制系統(tǒng)中常采用定時中斷的方法,這樣可以提高CPU的利用率。
更多直線步進(jìn)電機(jī)參數(shù)知識,請咨詢覃工QQ:176340526