西安工程大學電子信息學院 魏彬 趙婧 馬輝
本文介紹了一種基于單片機的步進電機控制系統(tǒng)實例,詳細闡述了該系統(tǒng)的硬件和軟件設計原理,并給出了控制電路原理圖及部分控制程序。
1 步進電機及控制要求
步進電動機又稱為脈沖電動機,是數(shù)字控制系統(tǒng)中的一種執(zhí)行元件。其功能就是將脈沖電信號變換為相應的角位移或直線位移,即給一個電脈沖信號,電動機就轉(zhuǎn)動一個角度或前進一步。因此只要控制輸入脈沖的頻率以及電機繞組通電相序即可獲得所需的轉(zhuǎn)角、轉(zhuǎn)速及轉(zhuǎn)向,很容易用微機實現(xiàn)數(shù)字控制。
由于步進電機在負載能力范圍內(nèi)有步距值不因電源電壓、負載大小、環(huán)境條件的波動而變化、誤差不長期累積以及控制性能好等優(yōu)點,所以步進電機在紡織、儀器儀表、冶金等行業(yè)得到了廣泛的應用。
2 系統(tǒng)硬件設計
步進電機分為PM型(永磁式),VR型(反應式)和HB型(混合式)3種類型,相數(shù)有兩相、三相、四相、五相、六相等多種形式,目前常用的是兩相和四相混合式步進電機。本文介紹由51單片機和SLA7026兩相功率驅(qū)動器組成的兩相步進電機控制器。其控制框圖如圖1所示。
[IMG=圖1 控制系統(tǒng)框圖]/uploadpic/THESIS/2007/11/2007111616292667004S.jpg[/IMG]
圖1 控制系統(tǒng)框圖
在圖1中由單片機接收來自上位機的脈沖、使能及方向信號,在單片機內(nèi)部由程序?qū)崿F(xiàn)脈沖分配器的功能,產(chǎn)生步進電機工作所需的各相脈沖信號,功率驅(qū)動部分對單片機輸出的弱信號進行放大,產(chǎn)生電機所需要的電流。
本控制系統(tǒng)采用STC單片機作為處理器,本系統(tǒng)選用的步進電機為兩相混合式步進電機,工作電壓為+24V,步距角為1.8。
本系統(tǒng)采用SLA7026作為功率放大器。SLA7026是兩相步進電機集成控制/驅(qū)動模塊。采用SIP18封裝。使用的電源為10~44V,最大輸出電流為3A。其封裝與管角定義如圖2所示。
[IMG=圖2 SLA7026封裝圖]/uploadpic/THESIS/2007/11/2007111616295276921B.jpg[/IMG]
圖2 SLA7026封裝圖
其中INA,IN/A,INB,IN/B(A和/A為步進電機繞組的兩端)為步進電機脈沖控制信號輸入端,由于輸入兼容5V邏輯電平所以與單片機管角可以直接連接。OUTA,OUT/A,OUTB,OUT/B為步進電機輸出控制端,其輸出電流為3A因此可直接與電機連接,不需要光耦驅(qū)動及隔離。CONTROL SUPPLY和GROUND分別為正電源和地。
步進電機具有自鎖能力,電機可以停在最后一個脈沖控制的角位移的終點位置上,這樣不僅電機就可以實現(xiàn)停車時轉(zhuǎn)子定位。但是這時,步進電機的發(fā)熱情況特別嚴重,電機的溫度隨著自鎖時間上升直至一極限值,但是如果該溫度高于一定值得話就會破壞電機內(nèi)部繞線使電機不能正常運轉(zhuǎn),因此我們可以在適當?shù)臅r候(本系統(tǒng)設定時間為1秒鐘)使SLA7026的REFERENCE輸入端有效,當該管角有效時其輸出電流減小為一半,這樣就可以有效的解決電機發(fā)熱問題。半電流鎖定具體電路如圖3所示。
[IMG=圖3 半電流鎖定電路圖]/uploadpic/THESIS/2007/11/2007111616302385512V.jpg[/IMG]
圖3 半電流鎖定電路圖
[IMG=圖4 撥碼開關電路圖]/uploadpic/THESIS/2007/11/2007111616303081474B.jpg[/IMG]
圖4 撥碼開關電路圖
運行時,SLA-7026共有三種運行方式,其中兩種為全步運行,一種為半步運行。三種運行方式可以通過單片機外接的撥碼開關進行選擇。撥碼開關電路圖如圖4所示,當撥碼開關某一段閉合有效時與之相連接的P口即被拉為低電平。
SLA7026作脈沖分配器驅(qū)動步進電機的電路圖如圖5所示。這里上位機發(fā)出的脈沖,使能和方向信號經(jīng)光耦隔離后輸入單片機,SLA7026脈沖輸入端直接與單片機相連,J2是步進電機接口,其中1角是公共段接+24V,其余4個為步進電機繞組。
[IMG=圖5 步進電機驅(qū)動電路圖]/uploadpic/THESIS/2007/11/2007111616304144841R.jpg[/IMG]
圖5 步進電機驅(qū)動電路圖
3 系統(tǒng)軟件設計
在本系統(tǒng)中,單片機的主要作用是在實現(xiàn)環(huán)形分配器的功能,它接受上位機發(fā)出的脈沖、使能和方向信號,通過對輸入的脈沖序列進行計數(shù)然后按順序傳送控制脈沖即相應的控制模型。上電后首先進行使能信號判斷,只有當使能信號有效時其他信號才有意義,然后對旋轉(zhuǎn)方向和工作方式進行判斷,本系統(tǒng)共有三種工作方式通過外部撥碼開關進行選擇,第一種方式通電順序為A→B→/A→/B→A,第二種方式通電順序為AB→/AB→/A/B→A/B→AB,第三種方式通電順序為A→AB→B→/AB→/A→/A/B→/B→A/B→A,如按上述順序通電,步進電機正向轉(zhuǎn)動,反之,如果通電順序相反,則步進電機反向轉(zhuǎn)動。這部分的程序清單如下所示。
if(!P2_2) //通過P口的狀態(tài),判斷用戶所選取的模式
{ if(!P2_3)
m1=1;
else m1=2; }
else m1=3;
switch(i%4) // i是脈沖計數(shù)器,此段程序是在模式1下的控制
{case 0: //模型
{ina1=1; //ina,Nina,inb,Ninb分別對應A,/A,B,/B
Nina1=0;
inb1=0;
Ninb1=0; };
break;
case 1:
{ina1=0;
Nina1=0;
inb1=1;
Ninb1=0; };
break;
case 2:
{ina1=0;
Nina1=1;
inb1=0;
Ninb1=0; };
break;
default:
{ina1=0;
Nina1=0;
inb1=0;
Ninb1=1; }
單片機的主要工作是對輸入的脈沖序列進行計數(shù)然后按順序傳送控制脈沖即相應的控制模型。首先設一個專用計數(shù)器對由單片機P1.2口輸入的脈沖序列進行計數(shù),然后利用該計數(shù)值進行查表選擇所需輸出的控制模型,并在模型的最后狀態(tài)對該計數(shù)器清“零”。該部分程序清單如下所示。
if(dir1) //如果方向信號是1正轉(zhuǎn),計數(shù)器加一,反之則減。
contr1++;
else
if(dir1==0)
contr1- -;
if(i>=12||i<=4) //計數(shù)器清“零”
contr1=8;
如前所述,在鎖定狀態(tài)下步進電機的發(fā)熱是很嚴重的,因此如果兩次脈沖輸入的時間超過一定值(本系統(tǒng)為1秒),就啟動半電流狀態(tài)。該時間標志位是通過定時器定時中斷產(chǎn)生,不使用軟件延時,盡量減小對CPU的占用。該部分子程序清單如下所示。
void timer1(void) interrupt 1
{
counter1++;
if(counter1>=20)
{
counter1=0;
evtimer1=1;
}
}
4 結(jié)束語
步進電機在紡織工業(yè)中的應用十分廣泛,我們研制的基于單片機的步進電機控制系統(tǒng)具有體積小,功耗低,可靠性高及可維護性強等特點。并在電腦橫機控制系統(tǒng)的應用中取得了良好的效果。
第二屆伺服與運動控制論壇論文集
第三屆伺服與運動控制論壇論文集