Arduino UNO使用A4988驱动步进电机


版权声明:本文为博主原创文章,未经博主允许不得转载。

发布

实例效果

Arduino UNO 通过A4988驱动步进电机,转200步后再反转200步,等待一秒,周而复始。

本实例,所用资源下载
https://u16460183.ctfile.com/fs/16460183-289524306

元件说明

A4988 是一款微步电动机驱动器,带有内置转换器,易于操作。该产品可在全、半、1/4、1/8、1/16步进模式时驱动双极步进电动机。只要输入一个“脉冲”,即可驱动电动机产生微步。无须进行相位顺序表、高频率控制行或复杂的界面编程。A4988大量应用在桌面级的3D打印机。

市面上有红色和绿色的,只要是A4988都差不多。
其他详细硬件信息,请自行搜索,这里只是抛一抛砖。

引脚说明

MS1 , MS2 , MS3 跳线说明:(例子里是低电平,悬空或接地线,使用全步进模式)

分别是全步进,1/2步进,1/4步进,1/8步进,1/16步进模式。

步进电机走一步是1.8度,一圈就是200步。例如使用1/16步进,则需要走3200步才等于一圈。

BOM表

Arduino UNO x 1
A4988驱动模块 x 1
42步进电机 x 1
面包板 x 1
USB数据线 x 1
跳线 若干

接线

点击图片查看大图注意:不一定每一个步进电机的AB相的接线位置都一样,如果刚好你的步进电机和我的一样,那么恭喜你,但如果接好线,还是不转动,请找卖家搞清楚步进电机的引脚说明图,搞清除A相B相在哪里。

程序代码

int x;

void setup()
{
  pinMode(6,OUTPUT); // Enable 
  pinMode(5,OUTPUT); // Step 步距
  pinMode(4,OUTPUT); // Dir 方向
  digitalWrite(6,LOW); // 输出低电平,启动电机
}

void loop()
{

  digitalWrite(4,HIGH); // 设置高电平的方向

  for(x = 0; x < 200; x++) // 重复200次,即走200步
  {
      digitalWrite(5,HIGH); // Output high
      delayMicroseconds(800); // 等待800微秒
      digitalWrite(5,LOW); // Output low
      delayMicroseconds(800); // 等待800微秒
    }
  delay(1000); //暂停1000豪秒(相当于1秒)

  digitalWrite(4,LOW); // 设置低电平的方向

  for(x = 0; x < 200; x++) // 重复200次
  {
      digitalWrite(5,HIGH); // Output high
      delayMicroseconds(800); // 等待800微秒
      digitalWrite(5,LOW); // Output low
      delayMicroseconds(800); // 等待800微秒
    }
    delay(1000); // 
}

程序说明

pinMode(6,OUTPUT);

引脚6(接A4988的EN端),输出低电平(LOW)为启动电机(Enable),输出高电平(HIGH)为关闭电机,由于是低电平启动,所以不接,也能正常使用电机。如果需要控制电机的启动与关闭则需要接上。

pinMode(4,OUTPUT);

脚4(接A4988的DIR端) 输出高低电平控制方向。

pinMode(5,OUTPUT);

引脚5(接A4988的STEP端) 用高低电平的切换形成脉冲驱动电机转动.中间间隔等待的微秒值决定电机转到速度,如果间隔太小会导致电机只有声响而并不转动。

程序中使用for语句,控制电机转动200步,一步是高电平+低电平(完整的脉冲),间隔时间是800微秒,大家应尝试设置其他数值,看看结果是怎么样。