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


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