一板网电子技术论坛

风筝
发表于: 2020-2-3 21:35:17 | 显示全部楼层

步进电机将整个旋转分为多个步骤。这种方式可以实现比传统的直流电机更精确地驱动步进电动机。而且,步进电机(Stepper Motor)可以以单步方式驱动。在快速浏览步进电机数据手册后,我们就可以知道与电机的每一步进对应的度数。有了这些信息,我们就可以精确地旋转步进电机。


28BYJ-48是一种非常便宜的步进电机,通常使用ULN2003A驱动器电路板工作。幸运的是,Arduino平台已经具有内置的步进电机库,使得我们可以使用ULN2003A驱动器板控制28BYJ-48步进电机。在本篇文章中,我们将主要介绍如何使用Arduino Uno开发板控制28BYJ-48。

motor_uln2003adriver.jpg


所需的材料清单:

–  Arduino Nano开发板

–  跳线

–  28BYJ-48步进电机

–  ULN2003A驱动电路板


28BYJ-48步进电机的连接方式

通常,28BYJ-48电动机带有5针连接器,适用于驱动器电路板。驱动器板上有两个电源引脚,分别为GND和VCC。开发板的GND引脚必须连接到Arduino的GND引脚。并且,开发板的VCC引脚连接到Arduino的5V引脚。

重要说明:通过此设置,我们直接从Arduino向电机供电。优点在于,这是为电机供电的最简单的解决方案。但是,如果电机消耗过多功率,则Arduino可能会损坏。如果您使用其他设置,请确保从Arduino汲取的电流不超过300mA。如果需要更多功率,只需在驱动板上使用外部电源即可。

最后,将驱动器板的IN1、IN2、IN3和IN4引脚连接到Arduino。在本文中,使用了Arduino的引脚8至11(IN1 <-> 8、IN2 <-> 9、IN3 <-> 10、IN4 <-> 11)。

pin_all.jpg


示例源代码:

首先,我们包含Arduino平台内置的步进电机库的头文件。然后,我们定义电机旋转一圈所需的步数。对于步进电机,定义该步数可能会非常复杂,因为并不容易得出此值。


例如,您通常可以以不同的模式驱动步进电机,而且它们具有特定的齿轮比。两者都会影响每转的步数。由于我们以所谓的全步长模式(四步控制序列)驱动电机,因此根据数据表,每一步对应于11.25度的旋转。相当于每转32步(360°/ 11.25°= 32)。此外,制造商还为此类电动机指定了64:1的齿轮比。通常,该传动比必须乘以32级。如果更详细地检查28BYJ-48,则实际齿轮比约为63.68395:1。因此,我们将最终步数设置为2038(32 * 63.68395 = 2037.8864)。


接下来,我们初始化步进电机。 Stepper构造函数的第一个参数是步数。其他参数对应于我们用来连接ULN2003A驱动板的Arduino引脚。


在loop函数中,我们开始驱动电机。首先,我们将速度设置为每分钟一转。接下来,我们告诉步进电机执行2038步。由于一转对应2038步,因此电机的轴应在大约一分钟内移动一整圈。接下来,我们将延迟设置为一秒。然后,我们再次做同样的事情。但是这次,我们将速度设置为每分钟6圈,然后将轴朝另一个方向移动(设置负步数)。由于轴现在快了六倍,电动机应在大约10秒(60s / 6 = 10s)内完成一整圈。

  1. #include <Stepper.h>
  2. #define STEPS 2038 // the number of steps in one revolution of your motor (28BYJ-48)
  3. Stepper stepper(STEPS, 8, 10, 9, 11);
  4. void setup() {
  5.   // nothing to do
  6. }
  7. void loop() {
  8.   stepper.setSpeed(1); // 1 rpm
  9.   stepper.step(2038); // do 2038 steps -- corresponds to one revolution in one minute
  10.   delay(1000); // wait for one second
  11.   stepper.setSpeed(6); // 6 rpm
  12.   stepper.step(-2038); // do 2038 steps in the other direction with faster speed -- corresponds to one revolution in 10 seconds
  13. }
复制代码

步进电机由ULN2003A驱动板驱动。 板载的LED显示当前控制顺序状态。

motor_moving.jpg

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

本版积分规则

主题 557 | 回复: 1077



手机版|

GMT+8, 2021-4-15 07:28 , Processed in 0.078128 second(s), 31 queries . Powered by Discuz! X3.4

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

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