8051单片机的开发工具 (8051单片机编程方法)

使用8051单片机控制步进电机,制作机器人肯定用的着

8051单片机控制步进电机

步进电机是无刷直流电动机,它能以固定的步距角旋转。步进电机一般采用200步完成360度旋转,即每步旋转1.8度。可以通过适当的指令将步进电机旋转到任何特定的角度,因此步进电机可以用于许多需要精确旋转运动的设备,如机器人,自动控制等。

步进电机基本上有两种类型:单极步进电机和双极步进电机。单极步进电机一般有五或六线,其中四根导线是四个定子线圈的一端(A,B,C,D),四个线圈的另一端连接在一起,代表第五根导线,这称为公共端。单极步进电机由于其使用方便而非常普及。

使用8051单片机控制步进电机,制作机器人肯定用的着

单相步进电机

在双极步进电机中,只有四根导线从两组线圈中接出,没有共用导线。

步进电机是由定子和转子组成的,定子代表四个电磁铁线圈,转子代表旋转的永磁体。当线圈通电产生电磁场时,导致转子(永磁体)的旋转。通电线圈应该以一个特定的顺序来进行旋转,在此基础上,将单极步进电机的工作方式分为细分驱动方式、全步驱动方式和半步驱动方式三种。

细分驱动模式:在这种模式下四个线圈一个接一个通电。与全步驱动方式相比,转矩更小,但功耗更低。

Steps A B C D
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1

整步驱动模式:在这个模式下,两个线圈同时通电产生高扭矩,功耗较高。

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作为电流放大芯片。

电路原理图:

使用8051单片机控制步进电机,制作机器人肯定用的着

电路原理图

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);

}

}