最流行的步进电机之一是 28BYJ-48。一旦本文在本博客中发表,您就已经了解了此类电机在精度方面所需的一切,您可以控制转动,使其减慢速度或保持在您想要的位置。这使得它们具有无数的应用,从工业到机器人,以及您能想到的许多其他应用。
28BYJ-48 是一款小型单极型步进电机,很容易与 Arduino 集成,因为它具有通常附带的 ULN2003A 驱动器/控制器模块。所有这些都是以非常便宜的价格和非常紧凑的尺寸实现的。这些功能也使其成为使用这些设备开始训练的理想选择。
28BYJ-48特点
电机28BYJ-498是一款步进电机,具有以下特点:
类型:步进电机或单极步进
相位:4(全步),因为里面有4个线圈。
电阻:50Ω。
电机扭矩:34 N/m,也就是说,如果将每米的牛顿换算为公斤,则相当于在其轴上施加每厘米约0.34公斤的力。用一个滑轮足以举起四分之一公斤多一点的重量。
消耗:55毫安
每轮步数:半步型8(每步45°)
内置变速箱:是的,1/64,因此它将每个步进分为 64 个更小的步进以提高精度,因此达到 512 个步进,每个步进 0.7°。或者也可以看作是每轮256个完整步(fullsteps)。
全步或半步,或全步和半步,是您可以工作的模式。如果您还记得,在有关步进电机的文章中,我说过 Arduino IDE 的代码示例可以在完整级别上运行。
有关更多信息,您可以下载数据表,例如此数据表。至于引脚排列,您不必太担心,尽管您也可以查看您购买的型号的数据表中的信息。但是这种混凝土有一个连接,可以让您一次连接所有电缆,而不必担心极性或每个地方,只需插入控制器即可……
对于 28BYJ-48 电机中包含的电机控制器或驱动器,您可以使用 ULN2003A,这是最流行的软件之一,您可以非常轻松地将其与 Arduino 一起使用。它具有一系列达林顿晶体管,支持高达 500mA 的电流,并具有连接引脚,用于将 4 个线圈连接到编号为 IN1 至 IN4 的 Arduino 板引脚,正如您在我上面提到的电机文章步骤中看到的那样。从 Arduino,您可以将 5v 和 GND 引脚连接到驱动器模块板上标记为 – + (5-12v) 的两个引脚,为电路板和步进电机供电。
顺便说一句,对于达林顿晶体管,允许使用一对放置在一起的双极晶体管并充当单个晶体管。这极大地增加了单个“晶体管”中的信号增益,同时还允许承载更高的电流和电压。
El达林顿对,作为唯一由两个双极晶体管组合形成的“晶体管”而闻名。它于 1952 年由西德尼·达林顿 (Sidney Darlington) 在贝尔实验室发明,因此得名。这些晶体管的连接方式是一个 NPN 晶体管的集电极连接到第二个 NPN 晶体管的集电极。而第一个的发行人则转到第二个的基础。也就是说,所得到的晶体管对或晶体管具有作为单个晶体管的三个连接。第一个晶体管的基极和第二个晶体管的集电极/发射极……
您可以在许多电子商店以及亚马逊等网上找到它们。例如,您可以在以下位置购买:
只需花费大约 6 欧元,您就可以拥有一台带驱动器模块的 28BYJ-48 发动机。
没有找到产品。及其连接电缆,以防您正在处理的机器人或项目需要多个电机……
使用 Arduino 编程 28BYJ-48
首先,您应该对步进电机的概念有清楚的了解,因此我建议您阅读 Hwlibre 关于这些项目的文章。这些电机并非设计为连续供电,而是将它们偏置到不同的相位,以便它们只会增加到我们想要的水平。为了激励各相并控制轴的旋转,您必须为每个连接正确供电。
制造商建议同时驱动 2 个线圈。
要使其以最大扭矩、最快速度和最大消耗工作,可以使用此表:
要一次只激励一个线圈,并使其工作在波驱动模式(即使减半,但功耗低),可以使用下表:
或者对于半步前进,您可以使用它以更短的步长实现更高的精度:
您可能会想…这与 Arduino 编程有什么关系?事实是很多,因为您可以在 Arduino IDE 中创建一个带有值的矩阵或数组,以便电机按照您想要的方式移动,然后在循环中或根据您的需要使用所述数组…考虑到 LOW = 0 且 HIGH = 1,即无电压或高电压,您可以生成 Arduino 信号,您必须将该信号发送到控制器来控制电机。例如,要执行平均步骤,您可以使用矩阵代码:
int Paso [ 8 ][ 4 ] = { {1, 0, 0, 0}, {1, 1, 0, 0}, {0, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 0}, {0, 0, 1, 1}, {0, 0, 0, 1}, {1, 0, 0, 1} };
也就是说,对于来自 Arduino IDE 的 sketch 的完整代码,您可以使用这个基本示例来测试 28BYJ-48 步进电机的工作原理。一旦正确连接了整个电路,您就可以使用它旋转电机轴。尝试修改值或更改您的案例所需的应用程序的代码:
// 定义与驱动器相连的松树 #define IN1 8 #define IN2 9 #define IN3 10 #define IN4 11 // 最大程度保证电机安全。 Realmente es una matriz querepresenta la tabla del unipol que hemostrado antes int paso [4][4] = { {1, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1 , 1}, {1, 0, 0, 1} }; void setup() { // Todos los pines 将配置 Arduino pinMode(IN1, OUTPUT);引脚模式(输入2,输出);引脚模式(IN3,输出);引脚模式(IN4,输出); } // 循环 void Loop() { for (int i = 0; i < 4; i++) { digitalWrite(IN1, paso[i][0]); digitalWrite(IN2, paso[i][1]); digitalWrite(IN3, paso[i][2]); digitalWrite(IN4, paso[i][3]);延迟(10); } }
正如您所看到的,在这种情况下,它将以最大扭矩运行,激活两个线圈……