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