注意事項小提示
1、不同規格的步進電機要選擇相應的驅動器,驅動器的相數、通電方式和電壓、電流都滿足步進電動機的需要。步進電動機的驅動電源主要由脈衝發生器、脈衝分配器和脈衝放大器(也稱功率放大器)三部分組成。單片機發送指令通過控制驅動器來控制步進電機。脈衝發生器是一個脈衝頻率在幾赫到幾十千赫內可連續變化的脈衝信號發生器。脈衝分配器根據指令把脈衝按一定的邏輯關係加到各相繞組的功率放大器上,使電機按一定方式運行,實現正、反轉和定位。
2、步進電機的控制方法,拿三相步進電機來說,不只只有三相三拍的方法。也可以用軟件實現三相六拍的方式。三相六拍的方式較三相三拍的方式步距角小了一半。比如,三拍的步距角為30度,六拍的步距角就是15度。這種將步距角精度提高的手段叫做細分。
3、上面的代碼所用指令是STC 89C52單片機,如需用其它芯片請另行更改。
實現代碼
#include
#include
#define uc unsigned char
#define ui unsigned int
uc code zz[4]={0x01,0x02,0x04,0x08}; //正轉表格,
uc code fz[4]={0x08,0x04,0x02,0x01}; //反轉表格,
ui k,z,y;
void delay(ui z) //z毫秒
{
ui x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
/******正轉*****************/
void zz() //相序為A->B->C
{
for(i=0;i<4;i++)
{
P0=zz[i];
delay(100); //100ms轉動一個步距角
}
}
/******反轉*****************/
void fz() //相序為C->B->A
{
for(i=0;i<4;i++)
{
P0=fz[i];
delay(100); //100ms轉動一個步距角
}
}
void main() //正轉5s,反轉5s後停止。
{
while(1)
{
ZZ();
delay(5000);
fz();
delay(5000);
while(1);
}
}
以上所有信息僅作為學習交流使用,不作為任何學習和商業標準。若您對文中任何信息有異議,歡迎隨時提出,謝謝!
閱讀更多 雲創硬見 的文章