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