0°

(十一)51进阶:步进电机与8051连接教程

介绍

(十一)51进阶:步进电机与8051连接教程

步进电机

步进电机是一种无刷直流电机,可将360°的完整旋转角度分成相等的步数。

通过施加一定量的控制信号来旋转电动机。可以通过改变施加控制信号的速率来改变旋转速度。

市场上有各种具有不同步进角和扭矩额定值的步进电机。

微控制器可用于向电机施加不同的控制信号,使其根据应用需要旋转。

步进电机与8051连接

(十一)51进阶:步进电机与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);
	}
}

本教程完整项目工程下载:

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论