51單片機(jī)學(xué)習(xí)之3-步進(jìn)電機(jī)
這種步進(jìn)電機(jī)叫減速步進(jìn)電機(jī)(里面有減速齒輪),減速比是1/64。
里面減速齒輪轉(zhuǎn)動(dòng)64圈,外面的轉(zhuǎn)子才轉(zhuǎn)動(dòng)1圈。
驅(qū)動(dòng)電壓為5V,步進(jìn)(距)角度5.625*1/64,采用5線4相。
線的順序是VCC、A、B、C、D。
1相勵(lì)磁方式驅(qū)動(dòng)程序代碼:實(shí)現(xiàn)讓步進(jìn)電機(jī)轉(zhuǎn)動(dòng)360°。
現(xiàn)在知道步進(jìn)電機(jī)的最小步距角是5.625*1/64=0.087890625°
1相勵(lì)磁方式每通一相電(即每轉(zhuǎn)動(dòng)一次)的角度應(yīng)該是最小步距角的2倍(即0.087890625°*2=0.17578125)。一個(gè)循環(huán)就是4相:A→B→C→D(即0.17578125*4=0.703125°)。
那么一個(gè)循環(huán)就是0.703125°,要幾個(gè)循環(huán)才能轉(zhuǎn)動(dòng)360°呢?360°/0.703125=512個(gè)循環(huán)。
下面這份代碼是通過(guò)按位方式給A、B、C、D相輪流通電。
#include"reg51.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitDA=P1^0;//A相
sbitDB=P1^1;//B相
sbitDC=P1^2;//C相
sbitDD=P1^3;//D相
voiddelay(uintx)
{
uinty;
for(;x>0;x--)
for(y=10;y>0;y--);
}
voidmain()
{
uinti=512;
uchardelayCout=25;
while(i--)//循環(huán)512次就轉(zhuǎn)動(dòng)360°的角度。
{
DA=1; //A相通電
delay(delayCout); //需要延時(shí)一小段時(shí)間讓硬件反應(yīng)的過(guò)來(lái)
DA=0; //A相斷電
DB=1; //B相通電
delay(delayCout);//需要延時(shí)一小段時(shí)間讓硬件反應(yīng)的過(guò)來(lái)
DB=0; //B相斷電
DC=1; //C相通電
delay(delayCout); //需要延時(shí)一小段時(shí)間讓硬件反應(yīng)的過(guò)來(lái)
DC=0; //C相斷電
DD=1; //D相通電
delay(delayCout);//需要延時(shí)一小段時(shí)間讓硬件反應(yīng)的過(guò)來(lái)
DD=0;//D相斷電
}
while(1);//旋轉(zhuǎn)完后就停在這里,避免重復(fù)執(zhí)行main函數(shù)
}
上面那份源碼很好理解,下面是按邏輯運(yùn)算實(shí)現(xiàn)的通斷A、B、C、D四相:
#include"reg51.h"
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(uintx)
{
uinty;
for(;x>0;x--)
for(y=10;y>0;y--);
}
voidmain()
{
uinti=512;
ucharXh;
uchardelayCout=25;
while(i--)//循環(huán)512次就轉(zhuǎn)動(dòng)360°的角度。調(diào)整角度
{
Xh=3;
P1=0x01;//P1==00000001相當(dāng)于P1^0置1將A相通電
delay(delayCout);//延時(shí)一段時(shí)間讓步進(jìn)電機(jī)能反應(yīng)過(guò)來(lái)
while(Xh--)
{
P1<<=1;//第一次循環(huán)00000001<<1=00000010相當(dāng)于P1^1置1同時(shí)將P1^0置0A相斷電B相通
電每次循環(huán)都會(huì)將1向左移動(dòng)一位
delay(delayCout);//這里是調(diào)節(jié)切換速度,即轉(zhuǎn)動(dòng)速度
}
}
while(1);//旋轉(zhuǎn)完后就停在這里,避免重復(fù)執(zhí)行main函數(shù)
}
步進(jìn)電機(jī)主要知道它的工作原理和計(jì)算角度。步進(jìn)電機(jī)最大的方便是可以精確控制轉(zhuǎn)動(dòng)角度和速度。
評(píng)論