设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 28287|回复: 6

A4988步进电机驱动器驱动控制42步进电机速度,步进电机调速,调节驱动电流

[复制链接]

签到天数: 63 天

[LV.6]常住居民II

发表于 2015-7-17 16:37:09 | 显示全部楼层 |阅读模式
1  A4988步进电机驱动器简介
方便使用,是我们这些用户最想要的,固有的名词和深入介绍在这就不多说了,您可以百度,或这下载附件,芯片手册中有详细的说明。
A4988是一款带转换器和过流保护的DMOS微步进电机驱动器,它用于操作双极步进电机,在步进模式,输出驱动的能力35V和±2A
转换器是A4988易于实施的关键。只要在“STEP”引脚输入一个脉冲,即可驱动电动机产生微步。无须进行相位顺序表、高频率控制行或复杂的界面编程。A4988界面非常适合复杂的微处理器不可用或过载的应用。
2  产品特点
1、控制简单,只需要控制STEPDIR两个端口;
2、精度调整,五种不同的步进模式:全、半、1/41/81/16
3、可调电位器可以调节输出电流,从而获得更高的步进率;
4、兼容3.3V5V逻辑输入;
3  芯片典型电路
QQ截图20150716103547.png
注意步进电机的接线方式,步进电机为两相四线的步进电机,OUT1AOUT1B分别接电机同相的两端;OUT2AOUT2B分别接电机另一相的两端。在连接步进电机时,一定要知道哪两个线是同一相。
4  最大额定值
QQ截图20150716134001.png
5  步进模式设置
QQ截图20150716134039.png
例如全模式时,一个脉冲,步进电机旋转角度1.8°;在1/4模式时,一个脉冲,步进电机旋转角度为0.45°。
6  模块连接图
QQ截图20150716103548.png
测试中选择型号为17HS5413(42BYGH)的两相四线步进电机,步距角为1.8°,200个脉冲转动一圈。
STEPDIR分别连接单片机的两个控制端口,EN可以使用单片机端口控制,也可以直接连接GND使能;MS1MS2MS3按照上一节“步进模式设置”,接高低电平,设置步进模式,来选择不同的步距角。设置脉冲的频率,来控制旋转速度。
2B2A1A1B分别接步进电机红、蓝、黑、绿线。
VMOTGND12V左右直流电源(电压大小更具步进电机不同,选择合适电压)。
VDDGND3.3V5V
7  实验代码
  1. //初始化步进电机控制端口
  2. //STEP1 PCout(4)
  3. //DIR1 PCout(5)
  4. void STEP_Init(void)
  5. {
  6.         RCC->APB2ENR|=1<<4;    //使能PORTC时钟
  7.         GPIOC->CRL&=0XFF00FFFF;        
  8.         GPIOC->CRL|=0X00330000;
  9. }

  10. //dir:为方向控制,TRUE:正转 FALSE:反转
  11. //period为周期
  12. //steps:脉冲个数
  13. void Step_Control(u8 dir,u16 period,u32 steps)
  14. {
  15.         u32 i;
  16.         for(i=0; i <= steps;i++)
  17.         {
  18.                 DIR = dir;
  19.                 STEP = 1;
  20.                 delay_us(1);
  21.                 STEP = 0;
  22.                 delay_us(period);
  23.         }
  24. }
  25. #define        TRUE  1
  26. #define FALSE 0
  27. //端口定义
  28. #define STEP PCout(4)
  29. #define DIR PCout(5)
  30. int main(void)
  31. {                                 
  32.         Stm32_Clock_Init(9); //系统时钟设置
  33.         delay_init(72);             //延时初始化        
  34.         STEP_Init();                 //步进电机驱动端口初始化
  35.         LED_Init();                           //初始化与LED连接的硬件接口
  36.         while(1)
  37.         {        
  38.                 LED = !LED;
  39.                 Step_Control(FALSE,1600,200);
  40.                 delay_ms(1000);
  41.                 Step_Control(TRUE,1600,400);
  42.                 delay_ms(1000);
  43.         }         
  44. }
复制代码
程序实现功能:电机反转1圈、正转2圈。
不改变程序,设置不同的步进模式,观察步进电机的旋转角度。
A4988步进电机驱动器使用手册.rar (636.55 KB, 下载次数: 1124)

签到天数: 63 天

[LV.6]常住居民II

 楼主| 发表于 2015-7-28 09:50:22 | 显示全部楼层
大家还有一个比较关心的问题,就是如何调节A4988电机驱动的输出电流
滑动变阻器电路.png

最大输出电流,与Rs和Vref有关,I=Vref/(8*Rs)。
Rs:在驱动板上是0805的贴片电阻封装,通过上面的丝印,R***,可以知道电阻的阻值,我手中的模块上面的电阻丝印为R100,电阻阻值为0.1Ω。
滑动变阻器:驱动板上的滑动变阻器为圆形的,上面有一个缺口,默认向下,顺时针旋转时,相当于上图的滑动电阻指针向左移动,当缺口朝向A4988芯片时,是一个0Ω和10k的临界状态。
VDD加5V电源, Vref的最大电压为1.67,I=1.67/(8*0.1)=2.09A。步进电机实际测得的电压是A4988输出电流的0.7倍,即1.46A。步进电机不同,承受的电流也不同,17HS5413的电流为1.3A,此时的输出电流,已经高于电机所承受电流,需要将滑动变阻器逆时针旋转。


回复 支持 反对

使用道具 举报

签到天数: 2 天

[LV.1]初来乍到

发表于 2015-12-9 20:43:21 | 显示全部楼层
请问好人,中断的调速方法现在实现了吗?能介绍一下吗,学习中。。。
回复 支持 反对

使用道具 举报

签到天数: 63 天

[LV.6]常住居民II

 楼主| 发表于 2015-12-11 14:39:19 | 显示全部楼层
梅长苏 发表于 2015-12-9 20:43
请问好人,中断的调速方法现在实现了吗?能介绍一下吗,学习中。。。

中断就是添加一个中断函数,来实现脉冲输出。
回复 支持 反对

使用道具 举报

签到天数: 2 天

[LV.1]初来乍到

发表于 2015-12-17 10:54:19 | 显示全部楼层
aosini 发表于 2015-12-11 14:39
中断就是添加一个中断函数,来实现脉冲输出。

好人,能给个简单的例子吗?我是新手小白。。谢谢啦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135  

GMT+8, 2018-6-19 10:44 , Processed in 0.114896 second(s), 29 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表