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