A4988驱动步进电机

一:驱动原理:

A4988的驱动原理就是每当STEP引脚收到一个脉冲,驱动器就会使步进电机转动一个步距

各个引脚的作用:(只讲重要的引脚,没讲到的如果简单使用的话可以忽略)

1,DIRECTION引脚的高低电平控制步进电机的转动方向

2,STEP引脚用于接收MCU的脉冲信号

3,MS1~MS3是用于控制步进分辨率的:整步、半步、四分之一步、八步和十六步;通过它们的电平组合来实现,其真值表如下图所示:

4,VDD\GND接控制芯片的电源(stm32为3.3v,stc51为5.0v)

5,VMOT\GND接驱动电机的电源(8~35v)

6,ENABLE使能引脚,悬空或则低电平有效,高电平则停止驱动

7,1A、1B分别接步进电机的A+和A-;2A、2B分别接步进电机的B+、B-

8,SLEEP低电平有效,RESET低电平有效,将两者短接即可

二:线路连接:

在步骤一中的引脚介绍中已经描述了各个引脚怎么连接,概括一下用于控制线的连接情况就是:1A、1B和2A、2B连接步进电机,ENABLE接单片机IO用于控制使能(不控制直接接地也可),DIRECTION引脚接单片机IO用于控制转动方向(必须给高电平或低电平,否则步进电机可能抖动且噪音较大),STEP用于连接单片机IO产生脉冲来控制转动的速度。

尤其需要注意的一点是:A4988模块上面有一个电位器,其用于控制驱动器的电流,有些小步进电机不需要太大的电流来驱动,如果电流较大即可能导致电机损坏或故障;因此最开始应该将电流值设置为最小,然后给驱动模块脉冲,根据电机的实际转动情况来调节电位器,使其能正常工作(不过度发热且力矩正常)。为了确保电位器调节的电流为最小,可以使用电压表测量电位器(就是电位器调节的十字口的中间)和地线之间的电压(如果电流为零则其电压应该为零或则很低,我的电压最小可达0v),小点的电机将前面所述的电压调节到0.3v就非常发烫。如果没有电压表,可以根据我的调节方向做个参考,如下图所示,电位器逆时针旋转电流变小,顺时针调节则是调大。

三:程序编写:

这个程序编写非常简单,如果为了验证步进电机的转动的话,只用编写程序来控制IO产生一个脉冲信号即可(用引脚给高给低,并配合延时函数即可实现简单脉冲的输出);如果要控制步进电机的输出速度,则应该控制脉冲的频率即可实现。

下面是一个51单片机通过演示来控制步进电机的转速代码:

#include <reg51.h>
#include <intrins.h>
sbit STEP_PIN=P1^2;
sbit DIR_PIN=P1^1;
void delay_ms(unsigned int ms) {
    //大约1ms的延时
    unsigned int i, j;
    for (i = 0; i < ms; i++) {
        for (j = 0; j < 120; j++) { 
        }
    }
}

void delay_us(unsigned int us) {
    unsigned int i;
    for (i = 0; i < us; i++) {
        _nop_();
    }
}

void main() 
{
    unsigned int delayTime;
    int i;
    DIR_PIN = 1; 
    while (1) 
    {
      for (delayTime = 100; delayTime < 1000; delayTime += 100) 
       {

         DIR_PIN = 1; //正转
         for(i = 0;i<200;i++)
          {
             STEP_PIN = 1; 
             delay_us(30); //速度控制,时间不能太短,否则不转
             STEP_PIN = 0; 
             delay_us(30); //速度控制

             //高低电平时间保持一致,否则会产生剧烈的震动
        }
      }
      for (delayTime = 100; delayTime < 1000; delayTime += 100) 
       {

         DIR_PIN = 0; //反转
         for (i = 0; i < 200; i++) 
         {
          STEP_PIN = 1;
          delay_us(30);//速度控制
          STEP_PIN = 0;
          delay_ms(30);//速度控制
        }
       }
    }
}

当然为了更精准地控制步进电机,可以使用定时器中断进行控制,可以参考前面“STC89C52输出指定频率PWM波控制SG90”博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值