使用Arduino和DRV8825控制NEMA 17步进电机

参考:步进电机相关文章

使用Arduino和DRV8825控制NEMA 17步进电机

ARDUINO项目

在这里插入图片描述
步进电机 是一个直流电机的,在不连续的步骤和工作从监控摄像机到处用于先进的机器人和机器。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)更改步分辨率。通过为这些引脚设置适当的逻辑电平,我们可以将电动机设置为六步分辨率之一。这些引脚的真值表如下所示:

M0M1M2微步分辨率
低的低的低的全步
高的低的低的½步(半步)
低的高的低的¼步(四分之一步)
高的高的低的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. NODRV8825引脚联系
1个虚拟机+ ve电池
2个地线-ve电池
3RSTArduino的5V
4SLPArduino的5V
5地线Arduino的GND
6STPArduino的引脚3
7DIRArduino的Pin 2
8B2,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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值