单片机驱动步进电机编程教程(使用8051单片机控制步进电机)
8051单片机控制步进电机
步进电机是无刷直流电动机,它能以固定的步距角旋转。步进电机一般采用200步完成360度旋转,即每步旋转1.8度。可以通过适当的指令将步进电机旋转到任何特定的角度,因此步进电机可以用于许多需要精确旋转运动的设备,如机器人,自动控制等。
步进电机基本上有两种类型:单极步进电机和双极步进电机。单极步进电机一般有五或六线,其中四根导线是四个定子线圈的一端(A,B,C,D),四个线圈的另一端连接在一起,代表第五根导线,这称为公共端。单极步进电机由于其使用方便而非常普及。
整步驱动模式:在这个模式下,两个线圈同时通电产生高扭矩,功耗较高。
Steps | A | B | C | D |
1 | 1 | 1 | 0 | 0 |
2 | 0 | 1 | 1 | 0 |
3 | 0 | 0 | 1 | 1 |
4 | 1 | 0 | 0 | 1 |
半步驱动模式:在这种模式下,两个线圈通电,首先一个线圈通电,然后下一线圈通电,然后再下一个线圈通电,以此类推。
Steps | A | B | C | D |
1 | 1 | 0 | 0 | 0 |
2 | 1 | 1 | 0 | 0 |
3 | 0 | 1 | 0 | 0 |
4 | 0 | 1 | 1 | 0 |
5 | 0 | 0 | 1 | 0 |
6 | 0 | 0 | 1 | 1 |
7 | 0 | 0 | 0 | 1 |
8 | 1 | 0 | 0 | 1 |
8051无法提供足够的电流来驱动线圈,因此需要使用一个电流驱动IC。ULN2003A是NPN达林顿晶体管,也可以用L293D芯片代替ULN2003A作为电流放大芯片。
电路原理图:
电路原理图
C语言代码:
// drive Mode 1
#include<reg51.h>
void msdelay(unsigned int time)
{
unsigned i,j ;
for(i=0;i<time;i )
for(j=0;j<1275;j );
}
void main()
{
while(1)
{
P2=0x01; // 0001 P2_0=1,P2_1=0,P2_2=0,P2_3=0
msdelay(1);
P2=0x02; //0010
msdelay(1);
P2=0x04; //0100
msdelay(1);
P2=0x08; //1000
msdelay(1);
}
}
// drive Mode 2
#include<reg51.h>
void msdelay(unsigned int time)
{
unsigned i,j ;
for(i=0;i<time;i )
for(j=0;j<1275;j );
}
void main()
{
while(1)
{
P2 = 0x03; //0011 P2_0=1,P2_1=1,P2_2=0,P2_3=0
msdelay(1);
P2 = 0x06; //0110
msdelay(1);
P2 = 0x0C; //1100
msdelay(1);
P2 = 0x09; //1001
msdelay(1);
}
}
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com