目录
介绍
步进电机
步进电机是一种无刷直流电机,可将360°的完整旋转角度分成相等的步数。
通过施加一定量的控制信号来旋转电动机。可以通过改变施加控制信号的速率来改变旋转速度。
市场上有各种具有不同步进角和扭矩额定值的步进电机。
微控制器可用于向电机施加不同的控制信号,使其根据应用需要旋转。
步进电机与8051连接
与8051的步进电机接口
- 在这里,我们将连接6线单极步进电机和8051控制器。
- 控制步进电机只需要四根线。
- 步进电机的两根普通电线连接到5V电源。
- ULN2003驱动器用于驱动步进电机。
- 请注意,要知道绕组线圈及其中心抽头引线可测量引线之间的电阻。从中心引线我们将获得该绕组的半电阻值。
例程
让我们编写At89S52将步进电机顺时针旋转360°半步序列,360°逆时针旋转全步序列程序吧。
#include <reg52.h>
#define Stepper_Port P2 /* Define Stepper Motor Port */
/* Function to provide delay of 1ms at 11.0592 MHz */
void delay(unsigned int count)
{int i,j;
for(i=0; i<count; i++)
for(j=0; j<112; j++);
}
int main(void)
{
int i,period;
period = 100; /* Set period in between two steps of Stepper Motor */
while (1)
{
/* Rotate Stepper Motor clockwise with Half step sequence */
for(i=0; i<12; i++)
{
Stepper_Port = 0x09;
delay(period);
Stepper_Port = 0x08;
delay(period);
Stepper_Port = 0x0C;
delay(period);
Stepper_Port = 0x04;
delay(period);
Stepper_Port = 0x06;
delay(period);
Stepper_Port = 0x02;
delay(period);
Stepper_Port = 0x03;
delay(period);
Stepper_Port = 0x01;
delay(period);
}
/* last one step to acquire initial position */
Stepper_Port = 0x09;
delay(period);
delay(1000);
/* Rotate Stepper Motor Anticlockwise with Full step sequence */
for(i=0; i<12; i++)
{
Stepper_Port = 0x09;
delay(period);
Stepper_Port = 0x03;
delay(period);
Stepper_Port = 0x06;
delay(period);
Stepper_Port = 0x0C;
delay(period);
}
Stepper_Port = 0x09;
delay(period);
delay(1000);
}
}
本教程完整项目工程下载: