基于ARM芯片S3C4510的步進電機加減速控制
隨著工業的發展,嵌入式技術應用日益廣泛和成熟。ARM嵌入式處理器作為一種32位高性能、低功耗的RISC芯片,支持多種操作系統、主頻高、運算處理能力強,并可兼容8/16位器件,還能帶海量低價的SDRAM數據存儲器。得到各行各業的青睞,已經顯示出強大的功能和巨大的商業價值。尤其在控制領域獲得了越來越為廣泛的應用。利用以ARM為內核的嵌入式微處理器進行運動控制系統的開發,有著廣闊的發展空間。
在一些要求低成本的運動控制系統中,經常用步進電機做執行元件。步進電機在這種應用場合下最大的優勢是:可以開環方式控制而無需反饋就能對位置和速度進行控制。但也正是因為負載位置對控制電路沒有反饋,步進電機就必須正確響應每次勵磁變化。如果勵磁頻率選擇不當,電機不能夠移到新的位置,那么實際的負載位置相對控制器所期待的位置出現永久誤差,即發生失步現象或過沖現象。因此步進電機開環控制系統中,如何防止失步和過沖是開環控制系統能否正常運行的關鍵。
步進電機加減速控制原理
失步和過沖現象分別出現在步進電機啟動和停止的時候。一般情況下,系統的極限啟動頻率比較低,而要求的運行速度往往比較高。如果系統以要求的運行速度直接啟動,因為該速度已超過極限啟動頻率而不能正常啟動,輕則可能發生丟步,重則根本不能啟動,產生堵轉。系統運行起來以后,如果達到終點時立即停止發送脈沖串,令其立即停止,則由于系統慣性作用,會使步進電機轉子轉到接近終點平衡位置的下一個平衡位置,并在該位置停下,從而產生過沖現象。因此,在步進電機啟動或停止時就需要進行加、減速控制。加減速控制多采用軟件來實現,分為加速、勻速和減速三個階段。其控制曲線如圖1所示。
圖1 步進電機加減速控制曲線
加減速控制方法
采用微處理器對步進電機進行加減速控制,實際上就是改變輸出脈沖的時間間隔,升速時脈沖頻率逐漸加快,減速時脈沖頻率逐漸變慢。采用恒加速度算法,易操作性強,效果也很好。如圖2所示,Δtm時間內相鄰脈沖變化完成時,即步進電機轉過一步,所以,圖2中陰影部分面積為1。
圖2 步進電機加減速時脈沖頻率變化圖
設電動機的加速時的第m步頻率為Fm,第m-1步頻率為Fm-1。加速度是F的斜率,設為a,則
a=(Fm-Fm-1)/Δtm;
另有((Fm + Fm-1)Δtm)/2=1;
由以上兩式可推出:
A=((fmax-f0)*(fmax+f0))/(2*trans);
軟件實現
采用定時器中斷方式控制電機變速時,實際上是不斷改變定時器裝載值的大小。控制脈沖由ARM芯片S3C4510的定時器發出,則定時器的溢出頻率應為二倍的控制脈沖頻率。實現函數如下:
void pulse (REG16 f0,REG16 fmax,REG16 tran,REG16 steep)
{ UINT16 I,A;
SysDisableInt(INT_TIMER0);
SysSetInterrupt(INT_TIMER0,OnTimer2);
trans = tran;
A = ((fmax-f0)*(fmax+f0))/(2*trans);
for(i=0;i <= trans;i++)
{ f[i> = sqrt_16(2*A*i+f0*f0);
}
f0 += f0; //2f0
TMOD=0x00; //disable timer0 and timer1
TDATA0=0x2FAF080/f0;//f0=50,000,000/TDATA0
TMOD=0x03; //enable timer0 and timer1 in interval mode
step = steep+steep; //2step
trans = trans+trans;
tempstep=0; //the number of pulse
output = 0;
status = 0; //the state of pulse,high or low
SysEnableInt(INT_TIMER0); }
其中f0為起始脈沖頻率,fmax為到達勻速運行狀態時的最大脈沖頻率,tran為加速或減速時的過渡脈沖步數,steep為該程序段總的脈沖步數。
結語
采用以ARM為內核的微處理器主頻高、指令執行速度快,能輸出較高的脈沖頻率,并采用加減速控制方法控制步進電機能平穩高速的運行,因此非常適合用于經濟型數控機床中,代替原來基于PC機的數控機床,降低成本。
另外需要注意的是,嵌入式數控系統的開發一般都是基于嵌入式實時操作系統的,比如UC/0S-II。而操作系統的本身都要依賴于定時中斷作為調度的基礎,在移植操作系統和選擇控制步進電機的定時器時要特別小心,兩者不能產生沖突和影響,否則整個系統將會崩潰。
文章版權歸西部工控xbgk所有,未經許可不得轉載。