基于51的电机驱动

这也太有趣了吧,电机转动的那一刻,小小的成就感产生大大的喜爱,自行焊接的一个51单片机最小系统,这个设计是这样的单片机Io输出到一个ULN2003,ULN2003是一个高耐压,7路反向器的芯片,输入高电平时为低电平,里面是非门电路,每一个单元可以驱动电流最大500mA,用这款芯片输出到一个步进电机,引脚输出信号到A+B+A-B-端。

 

四相步进电机可以在不同的通电方式下运行,常见的通电方式有如下三种:

 a)A+,B+,A-,B-
b)A+B+,B+A-,A-B-,B-A+
c)A+B+,B+,B+A-,A-,A-B-,B-,B-A+,A+
倒过来为反转。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的,电压输入为DC5V—DC12V
I love it

下面是具体例程

刚开始选错了电机仿真转不了,当然实物不会出现这种情况

 

 这是按键模块控制电机正反转跟控制速度快慢。

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit key1 = P2^0;
sbit key2 = P2^1;
sbit key3 = P2^2;
sbit key4 = P2^3;
u8 code right[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//正转
u8 code left[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};//反转
u8 count = 0,speed = 3;//初始速度
u8 key_pro = 1;//初始状态
void delay(u8 s) //延迟
{
	while(s--);
}
void delay1ms(u16 i) //延时1毫秒
{
 char t;
 while(i--)
{
 for(t=0;t<113;t++);
}	
		}    

		
void turn_right()  //右转状态状态
{
	u16 i;
	for(i = 0;i<8;i++)
		{
		P1 =right[i];
		delay1ms(speed);
		}
		if(key3==0)
		{
			delay(30);
				while(key3==0)  //快
		{
			speed = 1;
	}
		}
		if(key4==0) //慢
		{
			delay(30);
			while(key4==0)
			{
			speed = 5;
}
	}
}


void turn_left()  //第一种状态
{
	u16 i;
	for(i = 0;i<8;i++)
		{
		P1 = left[i];
		delay1ms(speed); 
		}
		if(key3==0) //快
		{
			delay(30);
			while(key3==0)
			{
			speed = 1;
	}
	}
		if(key4==0)//慢
		{
			delay(30);
			while(key4==0)
			{
			speed = 5;
}
			}
		}
u8 key_scan()  //检测哪个按键按下
{	
	if(key1==0||key2==0) 
	{
		delay(30);
		if(key1==0||key2==0)
		{		
		if(key1==0)
		{
			key_pro = 1;
		}
		if(key2==0)
		{
			key_pro = 2;
		}
			
		}
	}
	return key_pro;
	}
			
void main()
{  
	int i;
	while(1)
	{
		i = key_scan();//接受信号
		delay(1000);//延时缓冲
		switch(i)  //模式选择
		{
			case 1:turn_right();break;
			case 2:turn_left();break;
	}
}
}


  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焊五弟:

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值