参考:步进电机相关文章
使用Arduino和DRV8825控制NEMA 17步进电机
步进电机 是一个直流电机的,在不连续的步骤和工作从监控摄像机到处用于先进的机器人和机器。NEMA 17步进电机的步进角为1.8°,这意味着需要360步才能旋转360°。通过改变施加的控制信号的速率,我们可以轻松地控制电动机速度。通过将适当的逻辑电平应用于步进模块的微步引脚,可以使步进电机以不同的步进模式运行,例如整步,半步,1/4步。在我们之前的项目中,我们使用Arduino控制 28-BYJ48步进电机。28-BYJ48的扭矩比其他步进电机(例如NEMA 14,NEMA17)低。
在本教程中,我们将使用Arduino和DRV8825步进器模块控制NEMA 17步进电机。我们还将使用电位计来控制步进电机的方向,以使其沿顺时针和逆时针方向旋转。我们以前使用A4988步进驱动器和Arduino控制相同的Nema17步进电机。
所需组件
- Arduino UNO
- NEMA17步进电机
- DRV8825步进驱动器模块
- 47 µf电容器
- 电位器
Nema 17步进电机驱动器**-DRV8825**
步进驱动器模块控制步进电机的工作。步进驱动器通过各个相位将电流发送到步进电机。
该DRV8825是类似的微步进驱动模块A4988模块。用于控制双极步进电机。该Nema 17步进驱动器模块具有内置转换器,这意味着它可以仅使用两个引脚(即STEP和DIR)控制NEMA 17之类的双极步进电机的速度和方向。STEP引脚用于控制步进,DIR引脚用于控制旋转方向。
Nema 17电机驱动器DRV8825具有45V的最大输出容量和±2.2A。该驱动器可以在六种不同的步进模式下操作步进电机,即全步,半步,四分之一步,八步,十六步和第三十二步。您可以使用微步针(M0,M1和M2)更改步分辨率。通过为这些引脚设置适当的逻辑电平,我们可以将电动机设置为六步分辨率之一。这些引脚的真值表如下所示:
M0 | M1 | M2 | 微步分辨率 |
---|---|---|---|
低的 | 低的 | 低的 | 全步 |
高的 | 低的 | 低的 | ½步(半步) |
低的 | 高的 | 低的 | ¼步(四分之一步) |
高的 | 高的 | 低的 | 1/8步(第八步) |
低的 | 低的 | 高的 | 1/16步(第16步) |
高的 | 低的 | 高的 | 1/32步长(第30步长) |
低的 | 高的 | 高的 | 1/32步长(第30步长) |
高的 | 高的 | 高的 | 1/32步长(第30步长) |
DRV8825步进电机驱动器模块规格
- 最大限度。工作电压:45 V
- 最小 工作电压:8.2 V
- 最大限度。每相电流:2.5 A
- PCB尺寸:15毫米x 20毫米
特征
- 六步分辨率:全步,1/2步,¼步,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的完整连接。
S. NO。 | DRV8825引脚 | 联系 |
---|---|---|
1个 | 虚拟机 | + ve电池 |
2个 | 地线 | -ve电池 |
3 | RST | Arduino的5V |
4 | SLP | Arduino的5V |
5 | 地线 | Arduino的GND |
6 | STP | Arduino的引脚3 |
7 | DIR | Arduino的Pin 2 |
8 | B2,B1,A1,A2, | 步进电机 |
限流
在使用电机之前,使用限流电位计将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);
现在在主*循环中,我们将从A0引脚读取电位器值。在此循环中,我们使用两个函数,一个是potVal*,另一个是Pval。如果当前值,即potVal高于先前值,则它将沿顺时针方向移动十步;如果当前值小于先前值,则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板上,选择板和端口号,然后单击上载按钮。
现在,您可以使用电位计控制Nema17步进电机的方向。下面的视频显示了Nema 17与Arduino的完整工作。如果您对此项目有任何疑问,请在下面的评论部分中发布。
代码
\#include <Stepper.h>
\#define STEPS 200
//#define dirPin 2
//#define stepPin 3
//定义步进电机连接和电机接口类型。使用驱动程序时,电机接口类型必须设置为1:
Stepper stepper(STEPS,2,3);
\#define motorInterfaceType 1
int Pval = 0;
int 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 <Pval)
stepper.step(-10);
Pval = potVal;
}