步进电机是一种 直流电机,它以离散的步骤工作,从监控摄像头到复杂的机器人和机器无处不在。NEMA 17 步进电机的步距角为 1.8°,这意味着 360° 旋转需要 200 步。通过改变施加的控制信号的速率,我们可以很容易地控制电机的速度。通过将适当的逻辑电平应用于步进模块的微步引脚,步进电机可以在不同的步进模式下运行,例如全步、半步、1/4 步。在我们之前的项目中,我们 使用 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)更改步长分辨率。通过为这些引脚设置适当的逻辑电平,我们可以将电机设置为六步分辨率之一。这些引脚的真值表如下:
DRV8825 步进电机驱动器模块规格
最大限度。工作电压:45 V
分钟。工作电压:8.2V
最大限度。每相电流:2.5 A
PCB 尺寸:15 毫米 x 20 毫米
特征
六步分辨率:整步、½ 步、¼ 步、1/8、1/16 和 1/32 步
通过电位器调节输出电流
自动电流衰减模式检测
过温关断电路
欠压锁定
过流关断
DRV8825 和 A4988 Nema 17 电机驱动器之间的区别
A4988 和 DRV8825 都有相似的引脚排列和应用,但是这些模块在编号上有一些差异。微步,工作电压等。一些关键区别如下:
DRV8825 提供六步模式,而 A4988 提供五步模式。更高的步进模式导致更平稳、更安静的操作。
DRV8825 的最小 STEP 脉冲持续时间为 1.9µs,而 A4988 STEP 脉冲持续时间为 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 引脚断开,这意味着驱动器将在全步模式下运行。
下表给出了Arduino Nema 17 DRV8825的完整连接。
电流限制
在使用电机之前,使用限流电位器将 DRV8825 模块的电流限制更改为 350mA。您可以使用万用表测量电流限制。测量两点 GND 和电位器之间的电流,并将其调整到所需的值。
代码说明
本教程末尾提供了完整的代码以及使用 Arduino 控制 Nema 17的工作视频,在这里我们将解释完整的程序以了解项目的工作。
之后定义 NEMA 17 的步骤数。NEMA 17 的每转步数为 200。
#include#define STEPS 200
之后,指定驱动模块连接的引脚,并将电机接口类型定义为 Type1,因为电机是通过驱动模块连接的。
步进步进器(STEPS, 2, 3); #define motorInterfaceType 1
接下来使用stepper.setSpeed函数设置步进电机的速度。NEMA 17 的最大电机速度为 4688 RPM,但如果我们运行它的速度超过 1000 RPM,扭矩会迅速下降。
无效设置(){ stepper.setSpeed(800);
现在在主循环中,我们将从 A0 引脚读取电位器值。在这个循环中,我们使用了两个函数,一个是potVal,另一个是Pval。如果当前值,即potVal高于前一个值,则它将沿顺时针方向移动十步,如果当前值小于前一个值,它将沿逆时针方向移动十步。
potVal = map(analogRead(A0),0,1024,0,500); if (potVal>Pval) stepper.step(10); if (potVal
现在将 Arduino 与您的笔记本电脑连接,并使用 Arduino IDE 将代码上传到您的 Arduino UNO 板,选择板和端口号,然后单击上传按钮。
现在您可以使用电位器控制 Nema17 步进电机的方向。
#include
#define STEPS 200
//#define dirPin 2
//#define stepPin 3
// 定义步进电机连接和电机接口类型。使用驱动时电机接口类型必须设置为1:
Stepper stepper(STEPS, 2, 3);
#define motorInterfaceType 1
int Pval = 0;
诠释potVal = 0;
void setup() {
// 以每秒步数为单位设置最大速度:
stepper.setSpeed(800);
// pinMode(stepPin, OUTPUT);
// pinMode(dirPin, OUTPUT);
}
void loop() {
potVal = map(analogRead(A0),0,1024,0,500);
if (potVal>Pval)
stepper.step(10);
if (potVal
stepper.step(-10);
Pval = potVal;
}
评论
查看更多