梁建華
(臨汾職業技術學院,山西 臨汾 041000)
隨著科學技術的不斷發展,計算機科學技術已被廣泛應用于各行各業中,多數電器設備的運行都離不開電機的拖動.而步進電機在當今工業信息社會中所扮演的角色越來越重要,尤在計算機外圍設備裝置、辦公自動化設備、醫療器械設備、SMT設備、家用電器及工業自動控制系統中更是不可缺少,如打印機、傳真機、生化分析儀、空調和機器人等各種信息產品都離不開它,都是以步進電動機作為其傳動的核心的.運用單片機控制步進電機技術則顯得尤為重要,它將為專用電器、機電一體化設備及智能設備正常工作提供有力保障.
步進電機是將電脈沖信號轉變為角位移或線位移的開環控制元件,它實際上是一種單相或多相同步電動機.單相步進電動機有單路電脈沖驅動,輸出功率一般很小,其用途為微小功率驅動.多相步進電動機有多相方波脈沖驅動,用途非常的廣泛.
步進電機轉動使用的是脈沖信號,而脈沖是數字信號,這正是計算機所能識別并能加工處理的二進制數據信息.近些年來IC驅動電路技術發生了突破性的變化.例如在復印機、傳真機、打字機等辦公自動化裝置的位置控制中,步進電動機在這些裝置的組成結構中都是必不可少的.現將步進電機的主要特性敘述如下:
(1) 驅動電路是步進電機能夠正常轉動的必要條件,驅動電路的信號輸入端必須輸入脈沖信號.如果沒有脈沖信號輸入的時候,轉子將保持一定的位置,維持在靜止狀態;反之,若加入適當的脈沖信號時,轉子就會以一定的角度(稱為步角)進行轉動.所以如果加入脈沖信號是連續的,則轉子旋轉的角度與脈沖頻率成正比.
(2)步進電機完成一轉所需要的步數是由步進電機的步進角來決定的.
(3)瞬間起動與急速停止是步進電機具有的兩大顯著特性.
(4)改變步進電機的轉動方向比較容易,只需要改變線圈勵磁的順序來實現.
有三種方式:(1)1相勵磁:是簡單的一種方式,轉矩是最小的;(2)2相勵磁: 此方式的轉矩比較大,操作相對復雜一些;(3)1-2相勵磁:此方式是屬于半步進的方式,也就是說每一步的旋轉角度是前兩項勵磁的平均值.
單片機80C51控制步進電機運行總體設計思路是80C51作為控件器件,確定系組成框圖,繪制出控制原理圖,運用接口技術 ,通過ULN2003A驅動步進電機,按照四相單雙八拍勵磁方式,由按鍵來控制,指示燈顯示出步進電機的運行狀態,運用開發調試環境KeilμV3和Proteus仿真[2]系統組合來進行編輯、設置、聯機調試及運行,達到設計目的.
步進電動機控制系統電路由主控制電路、驅動電路、鍵盤控制電路、指示控制電路及步進電機電路組成.
1)主控制電路.由微處理器80C51、電源、時鐘振蕩電路及復位電路構成單片機的最小化系統.
2)驅動電路.該步進電機的耗電為200 mA左右,采用ULN2003A[3]驅動,驅動端口為P1.0,P1.1,P1.2,P1.3,ULN2003A本身就是一個反向放大器,包含 7個單元,具有溫度范圍寬、電流增益高、帶負載能力強、工作電壓高等特點,各類要求高速、大功率系統都采用它來驅動.單片機的I/O口一般輸出的電壓電流較小,所以采用ULN2003A驅動來放大單片機產生的信號,實現了I/O端口微小信號變大的目的.
3)鍵盤控制電路.該電路采用獨立式按鍵結構,每個按鍵單獨占有一個I/O口,端口為P3.0,P3.1,P3.2,按鍵和單片機端口直接使用上拉電阻,當按鍵沒有被按下時,相應端口輸入狀態呈現的是高電位(即“1”),當按鍵被按下的時候,相應端口輸入狀態呈現的是低電位(即“0”),從而實現端口電位的狀態變化以達到按鍵輸入目的,并執行相應的程序代碼段.
4)指示控制電路.指示燈作用是用來顯示步進電機的工作狀態,采用I/O端口P0.0,P0.1,P0.2來驅動指示燈,且低電平有效.當按下K1鍵,步進電機正轉時,LED1亮;當按下K2鍵,步進電機反轉時,LED2亮;當按下K3鍵,步進電機停止時,LED3亮.
5)步進電機電路.本系統使用的步進電機是四相步進電機,轉子小齒數為64.四相步進電機有四相單四拍、四相單雙八拍和四相雙四拍三種控制方式.結合功能,實際采用的是四相單雙八拍控制方式,來控制步進電機的運行,步進電機的運行編碼如表1:

表1 步進電機運行編碼
由步進電機運編碼表可得出:
步進電機正轉勵磁序列為A->AB->B->BC->C->CD->D->DA
步進電機反轉勵磁序列為AD->D->CD->C->BC->B->AB->A
程序設計一般是先把程序劃分為各功能模塊[4],設計出總的控制流程圖,然后編寫各個功能模塊的程序代碼.該控制系統程序由控制模塊、延時模塊、正轉模塊、反轉模塊和主程序模塊5部分組成.
1)控制模塊源程序代碼:
#include
#define uchar unsigned char
#define uint unsigned int
//正轉勵磁序列為A->AB->B->BC->C->CD->D->DA
uchar code FFW[]= {0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
//反轉勵磁序列為AD->D->CD->C->BC->B->AB->A
uchar code REV[]= {0x09,0x08,0x0C,0x04,0x06,0x02,0x03,0x01};
sbit K1 = P3^0; //按下K1按鈕時步進電機正轉
sbit K2 = P3^1; //按下K2按鈕時步進電機反轉
sbit K3 = P3^2; //按下K3按鈕時步進電機停止
2)延時模塊程序代碼
void delay(uint x)
{
uchar i;
while(x--) for(i = 0;i < 120; i++);
}
3)正轉模塊程序代碼
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)反轉模塊程序代碼
據石柱縣國有資產監管中心數據顯示,2017年,縣國資監管中心共安排資金1億元,審批實施基金扶貧項目23個,主要涉及種養殖業、休閑農業與鄉村旅游、生態工業、農村人居環境綜合整治等項目。從實施結果來看,基金申報企業均能按照合同約定,將應兌現給貧困戶的基金分紅資金劃入縣興農擔保公司專用資金賬戶,并組織專人到各鄉鎮(街道)進行現場集中兌現貧困戶分紅資金,兌現資金總額388.8萬元,惠及貧困戶1307戶,實現戶均分紅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;//運行圈數
while(1)
{
if(K1 == 0)
{
P0 = 0xFE;//LED1指示燈亮
SETP_MOTOR_FFW[N];//步進電機正轉
if(K3 == 0) break;
}
else if(K2 == 0)
{
P0 = 0xFD;//LED2指示燈亮
SETP_MOTOR_REV(N);//步進電機反轉
if(K3 == 0) break;
}
else
{
P0 = 0xFB;//LED3指示燈亮
P1 = 0x03;
}
}
}
首先運用Keil微處理器開發軟件平臺KeilμV3建立工程、先擇微處理器、輸入源程序代碼、選擇Keil的【Project】菜單設置參數,在對話框中選擇“Debug”選項卡,單擊右上方的下三角按鈕選擇“Proteus VSM Monitor-51 Driver”選項卡;然后打開Proteus仿真系統,繪制步進電機控制原理圖,在Proteus的【Debug】菜單中選擇【use Remote Debug Monitor】選項;最后Proteus與KEILμV3聯合調試,在Proteus isis界面中加載目標方件,進行仿真,觀察步進電機的運行狀態.通過多次仿真.結果表明所設計的控制電機系統運行穩定,操作簡單及精準度高等優點,可以被廣泛應用.