51单片机学习11_四相五线减速步进电机

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 51单片机学习11_四相五线减速步进电机

实验:驱动步进电机。
参考链接:

参考1

参考2
首先看下做完的效果:

效果图

效果图

动态gif图:

动态效果图

动态效果图

晚上,看了下电路图,对步进电机的原理了解了下,发现步进电机是如此的简单,我所认为的简单是一个简单的驱动,具体到步进电机的设计什么的,肯定复杂的很,只不过我现在只是以一个菜鸟级别的身份去写个简单的驱动。步进电机主要是靠对A,B,C,D各个磁极进行通电,然后由于磁力作用,导致电机慢慢转动,转动原理如下,下图采用单三拍的方式,主要是原理弄清楚即可:

电机转动磁性原理

电机转动磁性原理

在开发板上,步进电机的原理图如下:

步进电机原理图

步进电机原理图

实现代码如下:

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit wela = P2 ^ 7;
sbit dula = P2 ^ 6;
uchar code ele[] = {0x20, 0x10, 0x08, 0x04};//顺时针
uchar code ele_v[] = {0x04, 0x08, 0x10, 0x20};//逆时针

void delay(uint time)
{
	uint x, y;
	for (x = time; x > 0; x--)
		for (y = 110; y > 0; y--);
}

//对A,B,C,D口进行电平设置
void diplay()
{
	uint i = 0;
	for (; i < 4; i++) {
		P0 = ele_v[i];
		delay(5);
	}
}

void main()
{
	//关闭数码管显示
	wela = 1;
	P0 = 0xff;
	wela = 0;
	delay(50);

	dula = 1;
	P0 = 0x00;
	dula = 0;
	delay(50);

	while (1) {
		diplay();
	}	
}
原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 51单片机学习11_四相五线减速步进电机

文章的脚注信息由WordPress的wp-posturl插件自动生成



|2|left
打赏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: