M415步进电机驱动器的使用(C51)

在这里插入图片描
如图为M415步进电机驱动器

Signal端
PUL为脉冲输入信号。
DIR方向输入信号,用于改变电机运转方向;不接该口会朝一个默认方向转动
ENA为使能信号,用于使能或禁止驱动器输出;
OPTO为脉冲、方向、使能信号电源正端,接5v。

High Voltage端
A+和A-接步进电机A相绕组的正负端;B+和B-接步进电机B相绕组的正负端。
步进电机一般有两组共四条线引出,取两条线相连,若用手转电机不能转动,则为一组。将一组线接入A+,A-(正负无所谓),另一组B+,B-。
51单片机没有足够电压驱动步进电机,只能发射脉冲信号。供电电源接到驱动器上,接上电源后,驱动器侧面指示灯会发亮(我的是蓝色灯光)。

Setting端
左上,Micro step是细分数,一个细分数下电机转动1.8°。Pulse/rev是脉冲圈数,即在该细分数下转一圈360°需要多少个脉冲信号。(1 *1.8° *200 =360°)
细分数和脉冲圈数由s1,s2,s3,共同控制,将驱动器侧面s1,s2,s3拨到指定位置即可调节。
左下,Current(A)为平常电流大小,PK current为峰值电流大小,使用时注意不要超过和低于这两值。
两个电流由s4,s5,s6控制,同样在驱动器侧面可以调节

单片机(普中单核A2)左上角又步进电机模块的输出串口(下面的J47)
定义3个段端口PUL,DIR,ENA为P10至P14都可以。

1111
举例:控制步进电机转一圈。
s3为off,其余为on的情况下,细分数1(1个脉冲1.8°),也就是说转一圈需要提供200个脉冲
延时函数不能太小,不然电机来不及转动脉冲信号就变了。k是全局变量,赋值为0.

void stepmotor()	 
{									 
	while(k<=200)
	{
	PUL=0;
	delay(500);
	PUL=1;
	delay(500);
	k++;
	}
}

下面的代码是传入半径和要走的距离,步进电机就会转动该距离然后停止。

#include<reg52.h>
typedef unsigned int u16;	  //s3为off,其余为on的情况下适用
typedef unsigned char u8; 
			 sbit 	 PUL=P1^0; //输出脉冲口,接单片机左上角01
		     sbit	 DIR=P1^2; // 控制方向,接03
			 sbit    ENA=P1^3;	 //使能,接04
								  //OPTO接5v
				 void delay(u16 i)
				 {
					 while(i--);
				 }
				u16 k=0;

void stepmotor(float r ,float s)	 //传入半径和要走的距离 
{									 
	float circle_length;			  
	int quanshu;
	circle_length=3.1415 * r * r;
	quanshu=s/circle_length;
	while(k<=200*quanshu)
	{
	PUL=0;
	delay(500);
	PUL=1;
	delay(500);
	k++;
	}
}
	
void main()
{
ENA=0;
stepmotor(1.23,2.3);
while(1);//while(1)使执行停止,不再重复执行
}
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值