风筝
发表于: 2019-9-5 09:01:09 | 显示全部楼层

步进电机是一种直流电机,它可以步进方式工作,从监控摄像机到复杂的机器人,无处不在。 NEMA 17步进电机的步进角为1.8°,这意味着它需要200步才能进行360°旋转。通过改变施加的控制信号的速率,我们可以轻松控制电机速度。通过对步进模块的微步进引脚应用适当的逻辑电平,可以在不同的步进模式下操作步进电机,例如全步、半步、¼步。在我们之前的文章中,我们使用Arduino控制28-BYJ48步进电机。 28-BYJ48的扭矩比NEMA 14、NEMA17等其他步进电机的扭矩相对较低。


在本篇文章中,我们将使用Arduino开发板和DRV8825步进模块控制NEMA 17步进电机。我们还将使用电位器来控制步进电机的方向,使其顺时针和逆时针方向旋转。


需要的组件

●    Arduino UNO开发板

●    NEMA17步进电机

●    DRV8825步进驱动器模块

●    47μf电容

●    电位器


Nema 17步进电机驱动器 -  DRV8825

步进驱动器模块控制步进电机的工作。步进驱动器通过不同相位将电流发送到步进电机。


DRV8825是一个类似于A4988模块的微步驱动器模块。它用于控制双极步进电机。这款Nema 17步进驱动器模块具有内置转换器,这意味着它可以仅使用两个引脚(即STEP和DIR)控制双极步进电机(如NEMA 17)的速度和方向。 STEP引脚用于控制步进,DIR引脚用于控制旋转方向。

Nema-17-Stepper-Motor-Driver-DRV8825.jpg


Nema 17电机驱动器DRV8825的最大输出容量为45V和±2.2 A。该驱动器可以在六种不同的步进模式下操作步进电机,即全步、半步、四分之一步、八分之一步、十六分之一步、以及三十二分之一步。您可以使用微步进引脚(M0、M1和M2)更改步进分辨率。通过为这些引脚设置适当的逻辑电平,我们可以将电机设置为六分之一步的分辨率。这些引脚的真值表如下:

M0
M1
M2
微步进分辨率
低电平
低电平
低电平
全步
高电平
低电平
低电平
半步
低电平
高电平
低电平
四分之一步
高电平
高电平
低电平
八分之一步
低电平
低电平
高电平
十六分之一步
高电平
低电平
高电平
三十二分之一步
低电平
高电平
高电平
三十二分之一步
高电平
高电平
高电平
三十二分之一步

DRV8825步进电机驱动器模块主要性能参数:

●    最大工作电压:45 V

●    最小工作电压:8.2 V

●    每相的最大电流:2.5 A

●    PCB尺寸:15 mm x 20 mm

主要特征:

●    六种分辨率:全步、½步、¼步、1/8、1/16和1/32步

●    通过电位器调节输出电流

●    自动电流衰减模式检测

●    过温关断电路

●    欠压锁定

●    过流关机


DRV8825和A4988 Nema 17电机驱动器之间的区别

A4988和DRV8825都有类似的引脚排列和应用,但这些模块有一些差异,如微步进数量、工作电压等。下面给出了一些关键的区别:

●    DRV8825提供六种步进模式,而A4988提供五种步进模式。较多的步进模式可使操作更平稳、更安静。

●    DRV8825的最小步进脉冲持续时间为1.9μs,而对于A4988,步进脉冲持续时间为1μs。

●    DRV8825可以提供比A4988略高的电流,无需任何额外的冷却。

●    两个模块中限流电位器的位置不同。

●    DRV8825可与更高电压的电机电源一起使用。

●    默认情况下,DRV8825上的SLEEP引脚不会像A4988那样上拉。

●    DRV8825具有FAULT输出引脚。


电路原理图

Circuit-Diagram-for-Controlling- NEMA-17-Stepper-Motor-with-Arduino-and-DRV8825.png

在上图中给出了用Arduino控制Nema 17的电路图。步进电机使用12V电源供电,DRV8825模块通过Arduino供电。 RST和SLEEP引脚都连接到Arduino上的5V,以保持驱动器的使能。电位器连接到Arduino的A0引脚;它用于控制电机的方向。如果顺时针旋转电位器,则步进电机将顺时针旋转,如果逆时针旋转电位器,则逆时针旋转。 47μf电容用于保护电路板免受电压尖峰的影响。 M0、M1和M2引脚保持断开状态,这意味着驱动器将以全步模式运行。

Circuit-Hardware-for-Controlling- NEMA-17-Stepper-Motor-with-Arduino-and-DRV8825.jpg


限流

在使用电机之前,使用限流电位器将DRV8825模块的电流限制更改为350mA。您可以使用万用表测量电流限制。测量GND和电位器两点之间的电流,并将其调整到所需的值。

Measure-Current-using-Multimeter.png


代码说明

在本文的结尾处给出了Arduino控制Nema 17的完整代码,这里我们将解释程序来理解项目的工作过程。


首先,将步进电机库添加到Arduino IDE中。您可以从这里下载步进电机库。

之后定义NEMA 17的步进数。 NEMA 17每转的步数为200。

  1. #include <Stepper.h>
  2. #define STEPS 200
复制代码

之后,指定驱动器模块所连接的引脚,并将电机接口类型定义为Type1,因为电机通过驱动器模块连接。

  1. Stepper stepper(STEPS, 2, 3);
  2. #define motorInterfaceType 1
复制代码

接下来使用stepper.setSpeed函数设置步进电机的速度。 NEMA 17的最大电机速度为4688 RPM,但如果我们运行速度超过1000 RPM,则扭矩会迅速下降。

  1. void setup() {
  2.     stepper.setSpeed(800);
复制代码

loop()函数中,我们将从A0引脚读取电位器值。在这里,我们使用两个变量,一个是potVal,另一个是Pval。如果当前值,即potVal高于先前值,则它将沿顺时针方向移动十步,如果当前值小于先前值,则它将沿逆时针方向移动十步。

  1. potVal = map(analogRead(A0),0,1024,0,500);
  2.   if (potVal>Pval)
  3.       stepper.step(10);
  4.   if (potVal<Pval)
  5.       stepper.step(-10);
  6. Pval = potVal;
复制代码

现在将Arduino连接到您的笔记本电脑,使用Arduino IDE将代码上传到Arduino UNO开发板,选择Board和端口号,然后单击上传按钮。


您可以使用电位器控制Nema17步进电机的方向。 如果您对本文有任何疑问,请在本帖下面进行回复。


代码

以下是本文使用的完整代码: main.rar (429 Bytes, 下载次数: 87)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-27 08:25 , Processed in 0.045422 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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