51單片機學(xué)習(xí)筆記:步進電機控制,正轉(zhuǎn)反轉(zhuǎn)等
步進電機應(yīng)用廣泛,
例如打印機、磁盤驅(qū)動器、玩具、汽車雨刷、手機震動、機械夾具、刻錄機等各種機械控制場合
一些概念:
拍數(shù)N
定子控制繞組每改變一次通電方式,即為一拍
一個磁場通電周期是 A-B-C-D-A
完成一個磁場周期性變化所需脈沖數(shù),
也指電機轉(zhuǎn)過一個齒距角所需脈沖數(shù),用N表示
拍數(shù)又等于相數(shù)的1倍或2倍,
以四相電機為例,
有4相4拍, A-B-C-D-A...
4相8拍, A-AB-B-BC-C-CD-D-DA-A...
齒距角θz
一個通電循環(huán)周期(比如4拍)轉(zhuǎn)子轉(zhuǎn)過一個齒距角
齒距角又等于360除以轉(zhuǎn)子齒數(shù)Z, θz=360/Z
步距角θs
步距角,即在沒有減速齒輪的情況下,對于一個脈沖信號,轉(zhuǎn)子所轉(zhuǎn)過的機械角度.
也就是說,每一拍轉(zhuǎn)子轉(zhuǎn)過的角度稱之為步距角,通常用θs表示
θs=齒距角/拍數(shù)
θs=360/(N*Z)
步距角的誤差不會長期積累,只與輸入脈沖信號數(shù)相對應(yīng),
可以組成結(jié)構(gòu)較為簡單而又具有一定精度的開環(huán)控制系統(tǒng),
也可以在要求更高精度時組成閉環(huán)系統(tǒng)。
轉(zhuǎn)速X
每分鐘電機轉(zhuǎn)了多少轉(zhuǎn)?設(shè)脈沖頻率f
一個脈沖,轉(zhuǎn)子轉(zhuǎn)過角度為1/(ZN),
X=60*f/(ZN) 拍數(shù)與齒數(shù)表示法
=(f*θs)/6 步距角表示法
以上都是網(wǎng)上搜到的,整理了下,有不對的敬請指出,謝謝.
---------------------------------------------------------
我手上用到的步進電機
24BYJ48-5v 減速永磁步進電機
功能特點:
采用ULN2003驅(qū)動,使用方便,帶齒輪減速,噪音低,運轉(zhuǎn)平穩(wěn),5V即可驅(qū)動,
器件參數(shù):
1.額定電壓:5-10V DC
2.直流電阻:60Ω±7%(25℃).
3.減速比:1/64
4.步距角:5.625°*(1/64), 含減速比
5.驅(qū)動方式:4相8拍
6.牽入轉(zhuǎn)距:≥350gf.cm(工作頻率:100PPS)
7.打滑扭力:800~1300gf.cm
8.溫升:≤55K(5VDC 工作頻率:100PPS)
9.噪音:≤35dB(空載,100PPS,水平距馬達10cm)
10.絕緣耐壓:600V AC/1秒
11.引線拉力強度:1Kgf/條
12.接線方式:5線4相
1.VCC 紅色
2.A 橙色
3.B 黃色
4.C 粉色
5.D 藍色
============================================================
C代碼
#include"my51.h"
//4相8拍
u8codetableCCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//逆時針旋轉(zhuǎn)相序表
u8codetableCW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//順時針旋轉(zhuǎn)相序表
sbitS3=P3^5;//反轉(zhuǎn)按鍵
sbitS4=P3^6;//正轉(zhuǎn)按鍵
sbitS5=P3^4;//停止按鍵
voidmotorTurn_ccw()//轉(zhuǎn)1圈,逆時針
{
u8i,j;
for(j=0;j<8;j++)//電機內(nèi)部的轉(zhuǎn)子旋轉(zhuǎn)一周
{
if(S5==0)//按鍵沒處理抖動
{
break;//如果停止鍵按下,退出此循環(huán)
}
for(i=0;i<8;i++)//旋轉(zhuǎn)45度,8*5.625°=45°
{
P1=tableCCW[i];
delayms(2);//調(diào)節(jié)轉(zhuǎn)速
}
}
}
voidmotorTurn_cw()//轉(zhuǎn)1圈,順時針
{
u8i,j;
for(j=0;j<8;j++)//8*45°=360°
{
if(S5==0)
{
break;//如果停止鍵按下,退出此循環(huán)
}
for(i=0;i<8;i++)//旋轉(zhuǎn)45度,8*5.625°=45°
{
P1=tableCW[i];
delayms(2);//調(diào)節(jié)轉(zhuǎn)速
}
}
}
voidmain()
{
u8r;
u8N=64;//減速步進電機,減速比1/64,所以N=64時,步進電機外主軸轉(zhuǎn)一圈
P1=0xff;_nop_();
ledLock=LOCK;//我們的P1口接有8個led燈,先鎖定,不要讓它們亮,節(jié)能環(huán)保
while(1)
{
if(S3==0)//按鍵了
{
for(r=0;r { motorTurn_ccw();//電機逆時針轉(zhuǎn) if(S5==0) { break;//俺S5鍵立馬停止 } } } elseif(S4==0) { for(r=0;r { motorTurn_cw();//電機順時針轉(zhuǎn) if(S5==0) { break; } } } else { P1=0xf0;//平時也是停止的 } } }