步进电机在电子领域的地位越来越高。从普通的监控摄像机到复杂的CNC机器/机器人,这些步进电机可提供精确的控制,因此在任何地方都被用作执行器。步进电动机是一种无刷同步电动机,它可以完成一个完整的旋转过程,分为多个步骤。在本Arduino步进电机教程中,我们将学习最常用的步进电机28-BYJ48以及如何使用ULN2003步进电机模块将其与Arduino接口。
步进电机:
让我们看一下这款28-BYJ48步进电机。
好吧,所以与普通的直流电动机不同,它有五根各种奇特颜色的电线从其中出来,为什么会这样呢?要了解这一点,我们首先应该知道步进器是如何工作的以及它的特长。首先,步进电机不旋转,而是步进,因此也称为步进电机。意思是,它们一次只能移动一步。这些电动机中具有一系列线圈,并且这些线圈必须以特定方式通电以使电动机旋转。当每个线圈通电时,电机将步进一个步骤,通电顺序将使电机连续步进,从而使其旋转。让我们看一下电动机内部存在的线圈,以确切了解这些电线的来源。
如您所见,电动机具有单极5引线线圈布置。必须按特定顺序为四个线圈通电。红线将被提供+ 5V电压,其余四根线将被拉到接地以触发相应的线圈。我们使用像Arduino这样的微控制器按特定顺序为这些线圈通电,并使电动机执行所需的步数。
那么,为什么现在将此马达称为28-BYJ48?认真!!!我不知道。命名该电机没有技术原因;也许我们应该更深入地研究它。让我们看看下图从该电机的数据表获得的一些重要技术数据。
这是一个充满信息的头脑,但是我们需要查看一些重要的知识,以了解我们正在使用哪种类型的步进器,以便我们可以对其高效地进行编程。首先,我们知道这是5V步进电机,因为我们用5V为红线通电。然后,我们也知道这是一个四相步进电机,因为其中有四个线圈。现在,齿轮比为1:64。这意味着,只有当电机内部旋转64次时,您在外部看到的轴才会完整旋转一圈。这是因为在电机和输出轴之间连接了齿轮,这些齿轮有助于增加扭矩。
另一个需要注意的重要数据是步幅角:5.625°/ 64。这意味着,当电动机以8步顺序运行时,每一步将移动5.625度,并且将需要64步(5.625 * 64 = 360)来完成一个完整的旋转。您可以了解有关使用ARM LPC2148,ATMega16微控制器,MSP430的步进电机的更多信息。
计算步进电机的每转步数:
知道如何计算步进电机每转的步数很重要,因为只有这样,您才能有效地对其进行编程。
在Arduino中,我们将以4步序列操作马达,因此步幅角将为11.25°,因为8步序列的步幅角为5.625°(在数据表中给出),因此它将为11.25°(5.625 * 2 = 11.25)。
每转步数= 360 /步角
此处,每转360 / 11.25 = 32步。
为什么需要步进电机的驱动器模块?
大多数步进电机只能在驱动器模块的帮助下运行。这是因为控制器模块(在我们的示例中为Arduino)将无法从其I / O引脚提供足够的电流来使电动机运行。因此,我们将使用外部模块(如ULN2003模块)作为步进电机驱动器。驱动器模块的类型很多,一个的额定值将根据所用电机的类型而变化。所有驱动器模块的主要原理是提供/吸收足够的电流以使电动机运行。
Arduino步进电机位置控制电路图和说明:
上面显示了arduino步进电机控制项目的电路图。我们使用了28BYJ-48步进电机和ULN2003驱动程序模块。为了给步进电机的四个线圈通电,我们使用了数字引脚8,9,10和11。驱动器模块由Arduino开发板的5V引脚供电。
但是,在将某些负载连接到草原电机时,请使用外部电源为驱动器供电。由于我只是将电机用于演示目的,因此我使用了Arduino开发板的+ 5V导轨。还要记住将Arduino的地线与Diver模块的地线相连。
Arduino开发板代码:
在开始使用Arduino进行编程之前,请让我们了解程序内部实际发生的情况。如前所述,我们将使用4步顺序方法,因此我们将执行4个步骤来完成一个完整的旋转。
步 |
销钉通电 |
通电线圈 |
第1步 |
8和9 |
A和B |
第2步 |
9和10 |
B和C |
第三步 |
10和11 |
C和D |
步骤4 |
11和8 |
D和A |
驱动器模块将具有四个LED,通过它们我们可以在任何给定时间检查哪个线圈通电。显示通电顺序的视频可以在本教程的结尾找到。
在本教程中,我们将编写arduino步进电机代码,为此,我们将对 Arduino进行编程,以便我们可以通过Arduino的串行监视器输入步进电机要执行的步数。完整的程序可以在本教程的末尾找到,下面解释一些重要的行。
我们的步进电机每转的步数为32;因此我们输入如下行所示
#define步骤32
接下来,您必须创建实例,在其中指定与步进电机连接的引脚。
步进步进器(STEPS,8,10,9,11);
注意:插针编号故意乱码为8,10,9,11。即使更改了电动机连接的引脚,也必须遵循相同的模式。
由于我们正在使用Arduino步进器库,因此可以使用下面的代码行设置电动机的速度。对于28-BYJ48步进电机,速度范围为0到200。
stepper.setSpeed(200);
现在,要使电动机移动一步,我们可以使用以下行。
stepper.step(val);
变量“ val”将提供要移动的步数。因为我们有32步和64的齿轮比,所以我们需要移动2048(32 * 64 = 2048),以完成一个完整的旋转。
用户可以使用串行监视器输入变量“ val”的值。
步进电机与Arduino的配合使用:
建立连接后,硬件应如下图所示。
现在,将以下程序上传到Arduino UNO中并打开串行监视器。如前所述,我们必须旋转2048步才能完成一圈完整的旋转,因此,当输入2048时,电动机将顺时针旋转2048步即可完成一完整的旋转。要逆时针旋转,只需输入带有“-”负号的数字即可。因此,输入-1024将使电动机沿逆时针方向旋转一半。您可以输入任何所需的值,例如输入1会使电动机仅迈出一步。
希望您理解该项目并喜欢构建它。下面的视频显示了该项目的完整工作。如果您有任何疑问,请将其发布在我们论坛下方的评论部分。