關鍵詞:單片機;步進電機;失步
步進電機是工業(yè)過程控制及儀表中主要執(zhí)行元件之一。其特點是:快速啟停能力強,精度高,轉(zhuǎn)速容
易控制;但步進電機在實際變速過程中,有時會發(fā)生停轉(zhuǎn)現(xiàn)象。其原因主要是由于其本身的響應速度跟不
上控制速度,即通常所說的“失步”;在單片機控制系統(tǒng)中,解決失步的方法很多,但大部分方法占用了
單片機較多時間,且軟件也比較復雜。本文提出的控制方法可以大幅度減少單片機的時間,軟件也較為簡
單,可廣泛應用于各種步進電機的變速運行。
一、基本原理
步進電機的運行一般要經(jīng)過升頻,恒速,降頻等過程,設一個步進電機的控制過程如圖1所示,
從圖 1 可以看出,L2段為恒速運行,L1 段為升頻,L3段為降頻,按照“失步”的定義, 如果在 L1 及 L3 段上升及下降的控制頻率變化大于步進電機的響應頻率變化,步進電機就會失步,失步會導致步進電機停轉(zhuǎn),經(jīng)常會影響系統(tǒng)的正常工作,因此,在步進電機變速運行中,正確的選擇控制頻率是十分重要的,由于各種型號步進電機頻率響應不同,因此需選擇不同的控制頻率,為方便起見,一般選擇控制頻率為均勻的變化,既變化值是一恒定值,相應步進電機也是均勻上升或下降,基于目前市場有成品的環(huán)形脈沖分配器出售,因此不考慮步進電機的時序問題,可以簡單認為,步進電機的轉(zhuǎn)速僅與控制脈沖的頻率有關,改變了脈沖頻率,就改變了步進電機的轉(zhuǎn)速,步進電機控制電路的方框圖,如圖 2 示。
主要由8031單片機、脈沖發(fā)生器、脈沖分配器及驅(qū)動電路組成,增加一個數(shù)控脈沖發(fā)生器,8031單片機只要給出控制數(shù)據(jù),脈沖發(fā)生器就會自動產(chǎn)生一組相應頻率的脈沖,該脈沖經(jīng)過環(huán)形分配器后,再經(jīng)過驅(qū)動電路,直接驅(qū)動步進電機;可以看出在恒速運行中,由于控制數(shù)據(jù)是定值,并一次輸入即可,不需要改變控制數(shù)據(jù),因此,基本上不占用 8031 時間,在變速運行中, CPU只要定時改變控制數(shù)據(jù)、改變脈沖發(fā)生器輸出脈沖的頻率,也同樣不需要占用 CPU 過多時間;定時改變控制數(shù)據(jù)的方法是,將 ,8031中的 T1 設為定時中斷方式,在變速運行時,啟動定時中斷,即每隔一中斷時間將自動執(zhí)行相應的中斷服務程序,根據(jù)不同型號的步進電機改變控制頻率的變化,只要控制頻率的變化小于步進電機的響應頻率變化,步進電機的轉(zhuǎn)速就跟隨控制頻率變化,而不產(chǎn)生失步,每改變一次控制頻率,中斷服務程序?qū)⒆詣优c預期值進行比較,如果沒有到預期值,則保存已改變的當前脈沖數(shù)據(jù),如果到了預期值,則關斷定時中斷,將當前數(shù)據(jù)變?yōu)轭A期值;可以看出,采用這種方法的優(yōu)點是基本不占用 CPU 時間, CPU 的大部分時間可以做其它工作,其次由于中斷服務程序中改變的控制頻率是固定值,因此程序比較簡單,對各種型號步進電機來說,改動也很方便。
二、軟件實現(xiàn)方法
控制軟件流程圖,如圖3示。在主程序中,首先要將 T1設為定時中斷,并判定是否需要改變步進電機轉(zhuǎn)速,如果不需要 CPU 可以執(zhí)行其它程序,也可返回;如果需要,則首先輸入轉(zhuǎn)速需達到的預期值,并啟動 T1 定時中斷,在中斷服務程序中,首先是保護現(xiàn)場,然后將目前步進電機運行的頻率增加或減少一固定值,并與預期值進行比較。如果沒有到預期值,則將增加或減少后的數(shù)據(jù)做為當前值保存并輸出給脈沖發(fā)生器,最后恢復現(xiàn)場返回;如果到了或超過了預期值,則將當前值改寫為預期值并輸出給脈沖發(fā)生器,最后關閉中斷,恢復現(xiàn)場返回。
如果設定步進電機型號為 75BF004 型,需要從停止狀態(tài)變速運行到 1000r/min ,并保證不失步, T1 中斷時間應設為10ms , 每次執(zhí)行中斷服務程序增加頻率應為 20r/min,如果將8031的 p1、p3 輸出作為脈沖發(fā)生器的控制口。則程序清單為:
2.1主程序
ORG 0000H
LJMP STA
ORG 001BH
LJMP INT1
STA: MOV R1, #60H
MOV A, #01H
MOV RO,#05H
STA1:MOV @ R0,A
INC R0
DJNZ R1,STA1;初始化
MOV TMO, #11H
SETB ET1
SETB EA
JB 00H,QT;斷定是否需要變速
MOV 28H,#0E8H
MOV 29H,#03H;送預期值,1000r/min
MOV 2AH,#00H
MOV 2BH,#00H;將當前值置零
MOV TL1,#078H
MOV TL1,#0ECH;設定T1中數(shù)年時間10ms
SETB TR1;啟動T1
QT: LJMP STA1
2.2 中斷服務程序
INT1:MOV TL1,#078H
MOV TH1,#0ECH
PUSH PSW
MOV PSW,#10H
PUSH PSW
PUSH DPH
PUSH DPL;保護現(xiàn)場
MOV R0,28H
MOV R1,29H;讀預期值
MOV R2,2AH
MOV R3,2BH;讀當前值
CLR C
MOV A,R2
ADD A,#14H;增加20r/min
MOV R2,A
MOV A,R3
ADDC A,#00H
MOV R3,A
CLR C
MOV A,R2
SUBB A,R0
MOV A,R3
SUBB A,R1
JC DL;判定是否到預期植
MOV R2,28H
MOV R3,29H
CLR TR1;到預期值,關中斷
SJMP DL1
DL: MOVA,R2
MOV P1,A
MOV A,R3
MOV P3,A;輸出給脈沖發(fā)生器
POP DPL
POP DPH
POP ACC
POP PSW;恢復現(xiàn)場
RET1
三、結(jié)束語
該方法的特點是簡單、可靠,已成功用于汽車車速表校驗儀、汽車組合儀表綜合校驗儀等許多場合,得到了較好的效果,解決了目前遇到的步進電機停轉(zhuǎn)等問題,還可以廣泛應用于其它領域,會產(chǎn)生更好的效果。
(轉(zhuǎn)載)