风筝
发表于: 2019-9-12 19:35:00 | 显示全部楼层

步进电机是一种直流电机,它可以步进方式工作,从监控摄像机到复杂的机器人,无处不在。 步进电机提供精确控制,并可根据扭矩、每转步数和输入电压进行区分。在我们之前的文章中,我们使用Arduino控制28-BYJ48步进电机。 28-BYJ48的扭矩比NEMA 14、NEMA17等其他步进电机的扭矩相对较低。


在本篇文章中,我们将使用Arduino Uno和A4988步进驱动器模块控制NEMA17步进电机。 Nema17步进电机比28-BYJ48具有更高的扭矩和更高的工作电压。我们还将使用电位器来控制步进电机的方向,


所需的组件

●    Arduino UNO开发板

●    NEMA17步进电机

●    A4988步进驱动器模块

●    47μf电容

●    电位器


NEMA17步进电机

NEMA17-Stepper-Motor.jpg

NEMA17的操作类似于普通的步进电机。 NEMA 17步进电机有一个1.7 x 1.7英寸的面板,它通常比较小的型号(如NEMA 14)具有更大的扭矩。该电机有六根引线,额定电压为12伏。它可以在较低的电压下运行,但扭矩会下降。步进电机不会旋转,NEMA17电机的步进角为1.8度。意味着它在每一步都前进1.8度。 NEMA17的接线图如下。

Wiring-diagram-for-NEMA17.png

如您所见,该电机采用单极六线布置。这些导线连接成两个分开的绕组。黑线、黄线、绿线是第一绕组的一部分,其中黑线是中心抽头,黄线和绿线是线圈末端电线,而红线、白线和蓝线是第二个绕组的一部分,其中白线是中心抽头,红线和蓝线是线圈末端电线。通常,中心抽头不接线。


NEMA17每转的步数

使用步进电机的步进角计算特定步进电机的每转的步数。本文中,NEMA 17步进角为1.8度。

每转的步数= 360 /步角

360 / 1.8 =每转200步


NEMA17的规格

●    额定电压:12V DC

●    步角:1.8度

●    相位数:4

●    电机长度:1.54英寸

●    4线,8英寸引线

●    每转200步,1.8度

●    工作温度:-10至40°C

●    单极保持扭矩:22.2盎司


A4988步进驱动器模块

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


A4988 Nema 17步进驱动器是一种微步进驱动器模块,用于控制双极步进电机。该驱动器模块具有内置转换器,这意味着我们可以使用控制器中很少的引脚来控制步进电机。

A4988-Stepper-Driver-Module.jpg


使用这个Nema 17电机驱动器模块,我们可以通过仅使用两个引脚来控制步进电机,即STEP和DIRECTION。 STEP引脚用于控制步进,而DIRECTION引脚用于控制电机的方向。 A4988驱动模块提供五种不同的步进分辨率:全步、半步、四分之一步、八分之一步和十六分之一步。您可以使用分辨率选择器引脚((MS1、MS2和MS3)选择不同的步进分辨率。


电路原理图

Circuit-Diagram-for-Controlling-NEMA17-Stepper-Motor-with-Arduino.png

在上图中给出了用Arduino控制Nema 17步进电机的电路图。由于A4988模块具有内置转换器,这意味着我们只需要将步进和方向引脚连接到Arduino。步进引脚用于控制步骤,而方向引脚用于控制方向。步进电机使用12V电源供电,A4988模块通过Arduino供电。电位器用于控制电机的方向。


如果顺时针旋转电位器,则步进器将顺时针旋转,如果逆时针旋转电位器,则逆时针旋转。 47μf电容用于保护电路板免受电压尖峰的影响。 MS1、MS2和MS3引脚保持断开状态,这意味着驱动器将以全步模式运行。

Circuit-Hardware-for-Controlling-NEMA17-Stepper-Motor-with-Arduino.jpg


代码说明

完整的代码在本文的末尾给出,在这里我们解释程序,以了解项目的工作过程。


首先,将步进电机库添加到Arduino IDE中。您可以从这里下载步进电机库。


之后定义NEMA 17的步骤数。正如我们计算的那样,NEMA 17每转的步数为200。

  1. #include <Stepper.h>
  2. #define STEPS 200
复制代码

之后,指定驱动器模块所连接的引脚,并将电机接口类型定义为Type1,因为电机通过驱动器模块连接。

  1. Stepper stepper(STEPS, 2, 3);
  2. #define motorInterfaceType 1
复制代码

接下来使用stepper.setSpeed函数设置步进电机的速度。 NEMA 17的最大电机速度为4688 RPM,但如果我们运行速度超过1000 RPM,则扭矩会迅速下降。

  1. void setup() {
  2.     stepper.setSpeed(1000)
复制代码

现在在loop()函数中,我们将从A0引脚读取电位器值。在这个循环中,有两个函数,一个是potVal,另一个是Pval。如果当前值,即potVal高于前一个值,即Pval比顺时针方向移动十步,如果当前值小于先前值,则它将沿逆时针方向移动十步。

  1. potVal = map(analogRead(A0),0,1024,0,500);
  2.   if (potVal>Pval)
  3.       stepper.step(10);
  4.   if (potVal<Pval)
  5.       stepper.step(-10);

  6. Pval = potVal;
复制代码

现在将Arduino连接到您的笔记本电脑,使用Arduino IDE将代码上传到Arduino UNO板,选择Board和串口号,然后单击上传按钮。


现在您可以使用电位器控制Nema17步进电机的方向。如果您对此项目有任何疑问,请在本帖下面进行回复。


代码

本文使用的完整代码如下所示:

  1. #include <Stepper.h>
  2. #define STEPS 200

  3. // Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver
  4. Stepper stepper(STEPS, 2, 3); // Pin 2 connected to DIRECTION & Pin 3 connected to STEP Pin of Driver
  5. #define motorInterfaceType 1
  6. int Pval = 0;
  7. int potVal = 0;

  8. void setup() {
  9.   // Set the maximum speed in steps per second:
  10.   stepper.setSpeed(1000);
  11. }
  12. void loop() {

  13.   potVal = map(analogRead(A0),0,1024,0,500);
  14.   if (potVal>Pval)
  15.       stepper.step(10);
  16.   if (potVal<Pval)
  17.       stepper.step(-10);

  18. Pval = potVal;
  19.   
  20. }
复制代码

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 23:19 , Processed in 0.112710 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表