步進電機的控制原理及其單片機控制實現(xiàn)


原標題:步進電機的控制原理及其單片機控制實現(xiàn)
步進電機是一種將電脈沖信號轉(zhuǎn)換為相應角位移或線位移的電動機,其控制原理及單片機控制實現(xiàn)方式如下:
一、步進電機的控制原理
步進電機兩個相鄰磁極之間的夾角通常為60°,線圈繞過相對的兩個磁極,構(gòu)成一相(如A-A’、B-B’、C-C’)。磁極上有均勻分布的矩形小齒,而轉(zhuǎn)子上沒有繞組,但有均勻分布的小齒,且相鄰兩個齒之間的夾角固定(如9°)。步進電機的控制原理主要基于以下方面:
工作原理:步進電機基于最基本的電磁鐵原理,是一種可以自由回轉(zhuǎn)的電磁鐵,其動作原理是依靠氣隙磁導的變化來產(chǎn)生電磁轉(zhuǎn)矩。當某組繞組通電時,相應的兩個磁極就分別形成N-S極,產(chǎn)生磁場,并與轉(zhuǎn)子形成磁路。如果這時定子的小齒與轉(zhuǎn)子沒有對齊,則在磁場的作用下轉(zhuǎn)子將轉(zhuǎn)動一定的角度,使轉(zhuǎn)子齒與定子齒對齊,從而使步進電機向前“走”一步。
控制方式:步進電機的轉(zhuǎn)動角度大小與施加的脈沖數(shù)成正比,轉(zhuǎn)動的速度與脈沖頻率成正比,而轉(zhuǎn)動方向則與脈沖的順序有關。通過按順序給繞組施加有序的脈沖電流,就可以控制電機的轉(zhuǎn)動,從而實現(xiàn)數(shù)字角度的轉(zhuǎn)換。
步進角:步進電機旋轉(zhuǎn)的步距角是根據(jù)電機結(jié)構(gòu)通過比例控制產(chǎn)生的。如果控制電路的細分控制不變,那么步進器旋轉(zhuǎn)的步距角理論上是固定角度。實際工作中,電機旋轉(zhuǎn)的步距角會略有不同,這主要是由于電機結(jié)構(gòu)上的固定誤差造成的,而且這種誤差不會累積。
以三相步進電機為例,電流脈沖的施加方式主要有:
單相三拍方式:按單相繞組施加電流脈沖,每一拍步進角為3°。
雙相三拍方式:按雙相繞組施加電流脈沖。
三相六拍方式:單相繞組和雙相繞組交替施加電流脈沖,步進角為1.5°。三相六拍下,步進電機的運行反轉(zhuǎn)平穩(wěn)柔和,但在同樣的運行角度與速度下,三相六拍驅(qū)動脈沖的頻率需提高一倍,對驅(qū)動開關管的開關特性要求較高。
二、步進電機的單片機控制實現(xiàn)
步進電機無法直接接到直流或交流電源上工作,必須使用專用的驅(qū)動電源(步進電機驅(qū)動器)。隨著微電子和計算機技術的發(fā)展,軟硬件結(jié)合的控制方式成為了主流,即通過程序產(chǎn)生控制脈沖,驅(qū)動硬件電路。單片機通過軟件來控制步進電機,可以更好地挖掘電機的潛力。單片機控制步進電機的實現(xiàn)方式主要包括以下步驟:
設計電路:主要元件包括與門、驅(qū)動芯片(如ULN2003A,用于放大電壓以驅(qū)動電機)、單片機(如AT89C52)和步進電機。
編寫程序:通過編程方法,在一定范圍內(nèi)自由設定步進電機的轉(zhuǎn)速、往返轉(zhuǎn)動的角度以及轉(zhuǎn)動次數(shù)等。同時,還可以方便靈活地控制步進電機的運行狀態(tài),以滿足不同用戶的要求。
單片機控制步進電機的程序示例(以三相六拍控制為例)如下:
c復制代碼
#include #define uint unsigned int #define uchar unsigned char
int state=0; //定義電機的狀態(tài):state = 1 正轉(zhuǎn),state = -1 反轉(zhuǎn),state = 0 停止 uint time=50; //定義延時時間 int step[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //每一步的通電順序
sbit drive=P3^5; //控制開關量 sbit stop=P3^6; sbit re_drive=P3^7; sbit add=P3^1; sbit reduce=P3^0;
//延時程序,x*10ms void Delay_xms(uint x) { uint i,j; for(i=0;i<x;i++) for(j=0;j<112;j++); //10ms }
//反轉(zhuǎn) void Move_reverse(uint time) { uint i; for(i=0;i<8;i++) { P2=step[i]; Delay_xms(time); } }
//正轉(zhuǎn) void Move(uint time) { uint i; for(i=7;i>=0;i--) { P2=step[i]; Delay_xms(time); } }
//定義外部中斷INT0的中斷函數(shù),開關量變化時做出反應 void ChangeState() interrupt 0 { if(!drive) {state=1; drive=1;} if(!stop) {state=0; stop=1;} if(!re_drive) {state=-1; re_drive=1;} if(!add) {time-=10; add=1; if(time<=10) time=10;} if(!reduce) {time+=10; reduce=1; if(time>=100) time=100;} }
void main() { EA=1; //CPU中斷允許位 EX0=1; //外部中斷0允許位 IT0=1; //定義下降沿觸發(fā)
while(1) { switch(state) { case 1: Move(time); break; case 0: Delay_xms(10); break; case -1: Move_reverse(time); break; } } }
在這個程序中,通過控制P2口的輸出以及延時函數(shù),實現(xiàn)了對步進電機的三相六拍控制。同時,通過外部中斷INT0來檢測控制開關量的變化,從而改變電機的運行狀態(tài)。
綜上所述,步進電機的控制原理主要基于電磁鐵原理和脈沖控制,而單片機則通過軟硬件結(jié)合的方式實現(xiàn)了對步進電機的精確控制。
責任編輯:David
【免責聲明】
1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對本文的引用持有異議,請聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學習使用,不涉及商業(yè)目的。
3、本文內(nèi)容僅代表作者觀點,拍明芯城不對內(nèi)容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結(jié)果。
4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責任的權(quán)利。
拍明芯城擁有對此聲明的最終解釋權(quán)。