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

步进电机是一种 直流电机,它以离散的步骤工作,从监控摄像头到复杂的机器人和机器无处不在。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 (potvalpval)
stepper.step(10);
if (potvalstepper.step(-10);
pval = potval;
}

信息与能源网络综合服务商亨通光电发布2022第一季度报告
水文水质在线监测系统作用有哪些
中国移动希望5G融入百业,共同推进5G演进
安防企业与云服务商相结合实现新服务模式
像素密度高达10000PPI!OLED屏幕技术再获重大突破
使用Arduino和DRV8825控制NEMA17步进电机
探析机器视觉在智慧工厂中的应用
50W离线式开关电源电路分享
连接器生产厂家德索谈汽车领域趋势
雷曼智慧会议一体机得到沙特客户的好评和肯定
Ripple共识算法的工作流程介绍
AMD Radeon RX 6600显卡提供高刷新率游戏体验
雷达技术企业四创电子发布2022第一季度报告
国外初创公司另辟蹊径 使用水培+机器人的方式种植蔬菜
直接液体冷却技术在数据中心的应用及优势
在RT-Thread studio中为STM32系列开启DSP支持
新闻:一汽设立人工智能公司 国家发改委推动数字化转型技术研发
IPO申请获批 AI实力雄厚的旷视科技未来可期
一分钟带你了解无线安全之基于射频的精确阻断技术
数字语音室的主要设备