|
步进电机是一种直流电机,它可以步进方式工作,从监控摄像机到复杂的机器人,无处不在。 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电机驱动器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输出引脚。
电路原理图
在上图中给出了用Arduino控制Nema 17的电路图。步进电机使用12V电源供电,DRV8825模块通过Arduino供电。 RST和SLEEP引脚都连接到Arduino上的5V,以保持驱动器的使能。电位器连接到Arduino的A0引脚;它用于控制电机的方向。如果顺时针旋转电位器,则步进电机将顺时针旋转,如果逆时针旋转电位器,则逆时针旋转。 47μf电容用于保护电路板免受电压尖峰的影响。 M0、M1和M2引脚保持断开状态,这意味着驱动器将以全步模式运行。
限流 在使用电机之前,使用限流电位器将DRV8825模块的电流限制更改为350mA。您可以使用万用表测量电流限制。测量GND和电位器两点之间的电流,并将其调整到所需的值。
代码说明 在本文的结尾处给出了Arduino控制Nema 17的完整代码,这里我们将解释程序来理解项目的工作过程。
首先,将步进电机库添加到Arduino IDE中。您可以从这里下载步进电机库。 之后定义NEMA 17的步进数。 NEMA 17每转的步数为200。 - #include <Stepper.h>
- #define STEPS 200
复制代码之后,指定驱动器模块所连接的引脚,并将电机接口类型定义为Type1,因为电机通过驱动器模块连接。 - Stepper stepper(STEPS, 2, 3);
- #define motorInterfaceType 1
复制代码接下来使用stepper.setSpeed函数设置步进电机的速度。 NEMA 17的最大电机速度为4688 RPM,但如果我们运行速度超过1000 RPM,则扭矩会迅速下降。 - void setup() {
- stepper.setSpeed(800);
复制代码
在loop()函数中,我们将从A0引脚读取电位器值。在这里,我们使用两个变量,一个是potVal,另一个是Pval。如果当前值,即potVal高于先前值,则它将沿顺时针方向移动十步,如果当前值小于先前值,则它将沿逆时针方向移动十步。 - potVal = map(analogRead(A0),0,1024,0,500);
- if (potVal>Pval)
- stepper.step(10);
- if (potVal<Pval)
- stepper.step(-10);
- Pval = potVal;
复制代码
现在将Arduino连接到您的笔记本电脑,使用Arduino IDE将代码上传到Arduino UNO开发板,选择Board和端口号,然后单击上传按钮。
您可以使用电位器控制Nema17步进电机的方向。 如果您对本文有任何疑问,请在本帖下面进行回复。
代码 以下是本文使用的完整代码:
main.rar
(429 Bytes, 下载次数: 87)
|