如何使用电位计和Arduino控制步进电机

控制/MCU

1552人已加入

描述

步进电机在电子领域的地位越来越高。从普通的监控摄像头到复杂的CNC机器/机器人,这些步进电机在任何地方都用作执行器,因为它们提供精确的控制。在本教程中,我们将了解最常见/最便宜的步进电机 28-BYJ48 以及如何使用 ULN2003 步进模块将其与 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°,因为它是 5.625°(在数据表中给出),对于 8 步序列,它将是 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 步序列方法,因此我们将执行四个步骤来进行一次完整的旋转。

引脚通电 线圈通电
步骤 1 8 和 9 A 和 B
步骤 2 9 和 10 B 和 C
步骤 3 10 和 11 C 和 D
步骤 4 11 和 8 D 和 A

驱动器模块将有四个 LED,使用它们我们可以检查在任何给定时间通电的线圈。完整的演示视频可以在本教程的末尾找到。

在本教程中,我们将对 Arduino 进行编程,以便我们可以 转动连接到引脚 A0 的电位计并控制步进电机的方向 。完整的程序可以在教程的末尾找到,下面解释了几个重要的行。

我们的步进电机每转的步数计算为 32;因此,我们输入如下行所示

#define STEPS 32

接下来,您必须创建实例,在其中指定已连接步进电机的引脚。

Stepper stepper (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);
if (potValstepper.step(-5);
 Pval = potVal;

加工:

建立连接后,硬件在下图中应如下所示。

电位计

现在,在Arduino UNO中上传以下程序并打开串行监视器。如前所述,您必须旋转 电位计以控制步进电机的旋转 。顺时针旋转它将使步进电机顺时针方向转动,反之亦然。

打开APP阅读更多精彩内容

你被 BOM “坑”过吗?

珍藏的BOM检查方法你一定要学!

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分