使用Arduino和DRV8825控制NEMA17步进电机

使用Arduino和DRV8825控制NEMA17步进电机,第1张

  步进电机是一种 直流电机,它以离散的步骤工作,从监控摄像头到复杂的机器人和机器无处不在。NEMA 17 步进电机的步距角为 1.8°,这意味着 360° 旋转需要 200 步。通过改变施加的控制信号的速率,我们可以很容易地控制电机的速度。通过将适当的逻辑电平应用于步进模块的微步引脚,步进电机可以在不同的步进模式下运行,例如全步、半步、1/4 步。在我们之前的项目中,我们 使用 Arduino 控制了 28-BYJ48 步进电机。28-BYJ48 的扭矩比 NEMA 14、NEMA17 等其他步进电机低。

  在本教程中,我们将使用 ArduinoDRV8825 步进模块控制 NEMA 17 步进电机。我们还将使用电位器来控制步进电机的方向,使其顺时针和逆时针方向旋转。

  所需组件

  Arduino UNO

  NEMA17步进电机

  DRV8825 步进驱动器模块

  47 µf 电容器

  电位器

  Nema 17 步进电机驱动器 - DRV8825

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

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

使用Arduino和DRV8825控制NEMA17步进电机,poYBAGMHH52AC0CeAAROzojXGi8518.png,第2张

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

使用Arduino和DRV8825控制NEMA17步进电机,pYYBAGMHH5qAGlQUAAAdEsjdwqQ018.png,第3张

  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和DRV8825控制NEMA17步进电机,poYBAGMHH5SAH5kRAAMLxhCKJ6M612.png,第4张

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

使用Arduino和DRV8825控制NEMA17步进电机,poYBAGMHH4-ANF2UAATl0CokPx8770.png,第5张

  下表给出了Arduino Nema 17 DRV8825的完整连接。

使用Arduino和DRV8825控制NEMA17步进电机,poYBAGMHH4uAVIK7AAAb-pd6D1w422.png,第6张

  电流限制

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

使用Arduino和DRV8825控制NEMA17步进电机,pYYBAGMHH4aAUPgxAAD7A-L8N5Q223.png,第7张

  代码说明

  本教程末尾提供了完整的代码以及使用 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;



}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/3000076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存