梁建華
(臨汾職業(yè)技術(shù)學(xué)院,山西 臨汾 041000)
隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)科學(xué)技術(shù)已被廣泛應(yīng)用于各行各業(yè)中,多數(shù)電器設(shè)備的運(yùn)行都離不開(kāi)電機(jī)的拖動(dòng).而步進(jìn)電機(jī)在當(dāng)今工業(yè)信息社會(huì)中所扮演的角色越來(lái)越重要,尤在計(jì)算機(jī)外圍設(shè)備裝置、辦公自動(dòng)化設(shè)備、醫(yī)療器械設(shè)備、SMT設(shè)備、家用電器及工業(yè)自動(dòng)控制系統(tǒng)中更是不可缺少,如打印機(jī)、傳真機(jī)、生化分析儀、空調(diào)和機(jī)器人等各種信息產(chǎn)品都離不開(kāi)它,都是以步進(jìn)電動(dòng)機(jī)作為其傳動(dòng)的核心的.運(yùn)用單片機(jī)控制步進(jìn)電機(jī)技術(shù)則顯得尤為重要,它將為專(zhuān)用電器、機(jī)電一體化設(shè)備及智能設(shè)備正常工作提供有力保障.
步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€(xiàn)位移的開(kāi)環(huán)控制元件,它實(shí)際上是一種單相或多相同步電動(dòng)機(jī).單相步進(jìn)電動(dòng)機(jī)有單路電脈沖驅(qū)動(dòng),輸出功率一般很小,其用途為微小功率驅(qū)動(dòng).多相步進(jìn)電動(dòng)機(jī)有多相方波脈沖驅(qū)動(dòng),用途非常的廣泛.
步進(jìn)電機(jī)轉(zhuǎn)動(dòng)使用的是脈沖信號(hào),而脈沖是數(shù)字信號(hào),這正是計(jì)算機(jī)所能識(shí)別并能加工處理的二進(jìn)制數(shù)據(jù)信息.近些年來(lái)IC驅(qū)動(dòng)電路技術(shù)發(fā)生了突破性的變化.例如在復(fù)印機(jī)、傳真機(jī)、打字機(jī)等辦公自動(dòng)化裝置的位置控制中,步進(jìn)電動(dòng)機(jī)在這些裝置的組成結(jié)構(gòu)中都是必不可少的.現(xiàn)將步進(jìn)電機(jī)的主要特性敘述如下:
(1) 驅(qū)動(dòng)電路是步進(jìn)電機(jī)能夠正常轉(zhuǎn)動(dòng)的必要條件,驅(qū)動(dòng)電路的信號(hào)輸入端必須輸入脈沖信號(hào).如果沒(méi)有脈沖信號(hào)輸入的時(shí)候,轉(zhuǎn)子將保持一定的位置,維持在靜止?fàn)顟B(tài);反之,若加入適當(dāng)?shù)拿}沖信號(hào)時(shí),轉(zhuǎn)子就會(huì)以一定的角度(稱(chēng)為步角)進(jìn)行轉(zhuǎn)動(dòng).所以如果加入脈沖信號(hào)是連續(xù)的,則轉(zhuǎn)子旋轉(zhuǎn)的角度與脈沖頻率成正比.
(2)步進(jìn)電機(jī)完成一轉(zhuǎn)所需要的步數(shù)是由步進(jìn)電機(jī)的步進(jìn)角來(lái)決定的.
(3)瞬間起動(dòng)與急速停止是步進(jìn)電機(jī)具有的兩大顯著特性.
(4)改變步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向比較容易,只需要改變線(xiàn)圈勵(lì)磁的順序來(lái)實(shí)現(xiàn).
有三種方式:(1)1相勵(lì)磁:是簡(jiǎn)單的一種方式,轉(zhuǎn)矩是最小的;(2)2相勵(lì)磁: 此方式的轉(zhuǎn)矩比較大,操作相對(duì)復(fù)雜一些;(3)1-2相勵(lì)磁:此方式是屬于半步進(jìn)的方式,也就是說(shuō)每一步的旋轉(zhuǎn)角度是前兩項(xiàng)勵(lì)磁的平均值.
單片機(jī)80C51控制步進(jìn)電機(jī)運(yùn)行總體設(shè)計(jì)思路是80C51作為控件器件,確定系組成框圖,繪制出控制原理圖,運(yùn)用接口技術(shù) ,通過(guò)ULN2003A驅(qū)動(dòng)步進(jìn)電機(jī),按照四相單雙八拍勵(lì)磁方式,由按鍵來(lái)控制,指示燈顯示出步進(jìn)電機(jī)的運(yùn)行狀態(tài),運(yùn)用開(kāi)發(fā)調(diào)試環(huán)境KeilμV3和Proteus仿真[2]系統(tǒng)組合來(lái)進(jìn)行編輯、設(shè)置、聯(lián)機(jī)調(diào)試及運(yùn)行,達(dá)到設(shè)計(jì)目的.
步進(jìn)電動(dòng)機(jī)控制系統(tǒng)電路由主控制電路、驅(qū)動(dòng)電路、鍵盤(pán)控制電路、指示控制電路及步進(jìn)電機(jī)電路組成.
1)主控制電路.由微處理器80C51、電源、時(shí)鐘振蕩電路及復(fù)位電路構(gòu)成單片機(jī)的最小化系統(tǒng).
2)驅(qū)動(dòng)電路.該步進(jìn)電機(jī)的耗電為200 mA左右,采用ULN2003A[3]驅(qū)動(dòng),驅(qū)動(dòng)端口為P1.0,P1.1,P1.2,P1.3,ULN2003A本身就是一個(gè)反向放大器,包含 7個(gè)單元,具有溫度范圍寬、電流增益高、帶負(fù)載能力強(qiáng)、工作電壓高等特點(diǎn),各類(lèi)要求高速、大功率系統(tǒng)都采用它來(lái)驅(qū)動(dòng).單片機(jī)的I/O口一般輸出的電壓電流較小,所以采用ULN2003A驅(qū)動(dòng)來(lái)放大單片機(jī)產(chǎn)生的信號(hào),實(shí)現(xiàn)了I/O端口微小信號(hào)變大的目的.
3)鍵盤(pán)控制電路.該電路采用獨(dú)立式按鍵結(jié)構(gòu),每個(gè)按鍵單獨(dú)占有一個(gè)I/O口,端口為P3.0,P3.1,P3.2,按鍵和單片機(jī)端口直接使用上拉電阻,當(dāng)按鍵沒(méi)有被按下時(shí),相應(yīng)端口輸入狀態(tài)呈現(xiàn)的是高電位(即“1”),當(dāng)按鍵被按下的時(shí)候,相應(yīng)端口輸入狀態(tài)呈現(xiàn)的是低電位(即“0”),從而實(shí)現(xiàn)端口電位的狀態(tài)變化以達(dá)到按鍵輸入目的,并執(zhí)行相應(yīng)的程序代碼段.
4)指示控制電路.指示燈作用是用來(lái)顯示步進(jìn)電機(jī)的工作狀態(tài),采用I/O端口P0.0,P0.1,P0.2來(lái)驅(qū)動(dòng)指示燈,且低電平有效.當(dāng)按下K1鍵,步進(jìn)電機(jī)正轉(zhuǎn)時(shí),LED1亮;當(dāng)按下K2鍵,步進(jìn)電機(jī)反轉(zhuǎn)時(shí),LED2亮;當(dāng)按下K3鍵,步進(jìn)電機(jī)停止時(shí),LED3亮.
5)步進(jìn)電機(jī)電路.本系統(tǒng)使用的步進(jìn)電機(jī)是四相步進(jìn)電機(jī),轉(zhuǎn)子小齒數(shù)為64.四相步進(jìn)電機(jī)有四相單四拍、四相單雙八拍和四相雙四拍三種控制方式.結(jié)合功能,實(shí)際采用的是四相單雙八拍控制方式,來(lái)控制步進(jìn)電機(jī)的運(yùn)行,步進(jìn)電機(jī)的運(yùn)行編碼如表1:
表1 步進(jìn)電機(jī)運(yùn)行編碼
由步進(jìn)電機(jī)運(yùn)編碼表可得出:
步進(jìn)電機(jī)正轉(zhuǎn)勵(lì)磁序列為A->AB->B->BC->C->CD->D->DA
步進(jìn)電機(jī)反轉(zhuǎn)勵(lì)磁序列為AD->D->CD->C->BC->B->AB->A
程序設(shè)計(jì)一般是先把程序劃分為各功能模塊[4],設(shè)計(jì)出總的控制流程圖,然后編寫(xiě)各個(gè)功能模塊的程序代碼.該控制系統(tǒng)程序由控制模塊、延時(shí)模塊、正轉(zhuǎn)模塊、反轉(zhuǎn)模塊和主程序模塊5部分組成.
1)控制模塊源程序代碼:
#include
#define uchar unsigned char
#define uint unsigned int
//正轉(zhuǎn)勵(lì)磁序列為A->AB->B->BC->C->CD->D->DA
uchar code FFW[]= {0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
//反轉(zhuǎn)勵(lì)磁序列為AD->D->CD->C->BC->B->AB->A
uchar code REV[]= {0x09,0x08,0x0C,0x04,0x06,0x02,0x03,0x01};
sbit K1 = P3^0; //按下K1按鈕時(shí)步進(jìn)電機(jī)正轉(zhuǎn)
sbit K2 = P3^1; //按下K2按鈕時(shí)步進(jìn)電機(jī)反轉(zhuǎn)
sbit K3 = P3^2; //按下K3按鈕時(shí)步進(jìn)電機(jī)停止
2)延時(shí)模塊程序代碼
void delay(uint x)
{
uchar i;
while(x--) for(i = 0;i < 120; i++);
}
3)正轉(zhuǎn)模塊程序代碼
void SETP_MOTOR_FFW(uchar n)
{
uchar i,j;
for(i = 0; i < 5*n; i++ )
{
{
if(K3 == 0) break;
P1 = FFW[j];
delay(25);
}
}
}
4)反轉(zhuǎn)模塊程序代碼
據(jù)石柱縣國(guó)有資產(chǎn)監(jiān)管中心數(shù)據(jù)顯示,2017年,縣國(guó)資監(jiān)管中心共安排資金1億元,審批實(shí)施基金扶貧項(xiàng)目23個(gè),主要涉及種養(yǎng)殖業(yè)、休閑農(nóng)業(yè)與鄉(xiāng)村旅游、生態(tài)工業(yè)、農(nóng)村人居環(huán)境綜合整治等項(xiàng)目。從實(shí)施結(jié)果來(lái)看,基金申報(bào)企業(yè)均能按照合同約定,將應(yīng)兌現(xiàn)給貧困戶(hù)的基金分紅資金劃入縣興農(nóng)擔(dān)保公司專(zhuān)用資金賬戶(hù),并組織專(zhuān)人到各鄉(xiāng)鎮(zhèn)(街道)進(jìn)行現(xiàn)場(chǎng)集中兌現(xiàn)貧困戶(hù)分紅資金,兌現(xiàn)資金總額388.8萬(wàn)元,惠及貧困戶(hù)1307戶(hù),實(shí)現(xiàn)戶(hù)均分紅2975元。
void SETP_MOTOR_REV(uchar n)
{
uchar i,j;
for(i = 0; i < 5*n; i++ )
{
for(j = 0; j < 8; j++)
{
if(K3 == 0) break;
P1 = REV[j];
delay(25);
}
}
}
5)主模塊程序代碼
void main()
{
uchar N = 3;//運(yùn)行圈數(shù)
while(1)
{
if(K1 == 0)
{
P0 = 0xFE;//LED1指示燈亮
SETP_MOTOR_FFW[N];//步進(jìn)電機(jī)正轉(zhuǎn)
if(K3 == 0) break;
}
else if(K2 == 0)
{
P0 = 0xFD;//LED2指示燈亮
SETP_MOTOR_REV(N);//步進(jìn)電機(jī)反轉(zhuǎn)
if(K3 == 0) break;
}
else
{
P0 = 0xFB;//LED3指示燈亮
P1 = 0x03;
}
}
}
首先運(yùn)用Keil微處理器開(kāi)發(fā)軟件平臺(tái)KeilμV3建立工程、先擇微處理器、輸入源程序代碼、選擇Keil的【Project】菜單設(shè)置參數(shù),在對(duì)話(huà)框中選擇“Debug”選項(xiàng)卡,單擊右上方的下三角按鈕選擇“Proteus VSM Monitor-51 Driver”選項(xiàng)卡;然后打開(kāi)Proteus仿真系統(tǒng),繪制步進(jìn)電機(jī)控制原理圖,在Proteus的【Debug】菜單中選擇【use Remote Debug Monitor】選項(xiàng);最后Proteus與KEILμV3聯(lián)合調(diào)試,在Proteus isis界面中加載目標(biāo)方件,進(jìn)行仿真,觀(guān)察步進(jìn)電機(jī)的運(yùn)行狀態(tài).通過(guò)多次仿真.結(jié)果表明所設(shè)計(jì)的控制電機(jī)系統(tǒng)運(yùn)行穩(wěn)定,操作簡(jiǎn)單及精準(zhǔn)度高等優(yōu)點(diǎn),可以被廣泛應(yīng)用.