使用28BYJ-48步进电机与ULN2003驱动器和Arduino
在本教程中,我们将学习如何使用ULN2003驱动器和Arduino控制28BYJ-48步进电机。该设置允许精确控制电机的位置和速度。在本项目结束时,您将能够使电机双向旋转并有效控制其步进。
我们将使用28BYJ-48步进电机,它因其低成本和易用性而成为各种机器人和自动化项目的热门选择。ULN2003驱动板将步进电机与Arduino连接,使我们能够发送控制电机运动的步进信号。本教程将指导您完成所需的接线和代码,以使电机旋转。
如需进一步澄清,请参考与本教程相关的视频(视频时间为0:45)。
硬件解析
该项目的关键组件包括28BYJ-48步进电机和ULN2003驱动板。步进电机由多个线圈组成,可以按照特定顺序通电以产生旋转。ULN2003驱动器充当开关,使Arduino能够控制每个线圈供电。
ULN2003 驱动器使用达林顿晶体管阵列来处理步进电机所需的更高电流。当 Arduino 的一个引脚输出高电平信号时,它允许电流流向电机中相应的线圈,从而使电机移动。这使得对电机的旋转角度和速度进行精确控制成为可能。
数据表详情
| 制造商 | ULN2003 |
|---|---|
| 零件编号 | ULN2003 |
| 逻辑/IO电压 | 5 V |
| 供电电压 | 5-30 V (最大) |
| 输出电流(每通道) | 最大500毫安 |
| 峰值电流(每通道) | 2 A 最大 |
| PWM频率指导 | N/A |
| 输入逻辑阈值 | 0.8 V(低),2.4 V(高) |
| 电压降 / RDS(开)/ 饱和度 | 1.5 V 最大 |
| 热限制 | 70 °C 最高 |
| 包裹 | DIP-16 |
| 备注 / 变体 | 常用于5V步进电机。 |
- 确保驱动器能够满足您电机的当前要求。
- 如有必要,请使用散热器以管理热限制。
- 检查所有连接是否牢固,以避免浮动输入。
- 在将电机集成到更大项目之前,通过运行简单的步进序列来测试电机。
- 确保为电机提供足够的电源电压。
接线说明
将28BYJ-48步进电机连接到ULN2003驱动器和Arduino,请按照以下步骤操作:
首先,将电机连接到ULN2003驱动器。电机有四根线,通常颜色编码为橙色、黄色、粉色和蓝色。将这些线连接到ULN2003驱动器的相应输出引脚。连接方式如下:
Orange电线到OUT1Yellow电线到OUT2Pink电线到OUT3Blue电线到OUT4
接下来,将ULN2003驱动器连接到Arduino。驱动器上的输入引脚对应于Arduino上的四个数字引脚。例如:
IN1到Pin 10IN2到Pin 11IN3到Pin 12IN4到Pin 13
最后,将ULN2003驱动器的电源和接地引脚连接到Arduino。连接VCC连接到Arduino的5V输出和GND将引脚连接到Arduino的接地。确保在启动系统之前所有连接都牢固。
代码示例与演练
在Arduino代码的设置部分,我们定义了连接到ULN2003驱动器的引脚:
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
在这里,我们声明了四个整数变量:Pin1,Pin2,Pin3, 和Pin4,这些对应于Arduino上的数字引脚。这些引脚将控制步进电机的运动。
在setup()我们将这些引脚配置为输出:
void setup() {
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
此设置确保Arduino可以向ULN2003驱动器发送信号以控制电机。pinMode函数将每个引脚设置为输出模式,使它们能够发送信号。
最后,在主循环中,我们创建一个开关案例,根据变量控制电机的步数。_step:
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
// Additional cases follow
}
在这个摘录中,我们使用digitalWrite根据电流向每个引脚发送高或低信号_step这控制着哪些线圈被通电,从而使电动机旋转。整段代码将会在文章下方加载。
演示 / 期待什么
一旦所有连接正确并且代码上传,步进电机应该会根据来自Arduino的信号旋转。您可以通过修改循环中的延迟或更改步数来测试电机,以查看其反应。请注意,如果电机未正确供电,它可能不会移动或表现出不稳定的行为。
章节
- 介绍 - 0:00
- 硬件解释 - 1:30
- 接线说明 - 3:15
- 代码示例与演练 - 5:00
- 演示 / 期待什么 - 7:45
/*
* 需要从此代码获取接线图:https://youtu.be/0glBk917HPg
* 在Udemy.com上购买我的Arduino课程 http://robojax.com/L/?id=62
*
* 从RoboJax.com获取此代码及其他Arduino代码
* 在一个结构化的课程中逐步学习Arduino,所有材料、接线图和库都在一个地方。
* 在Udemy.com上购买我的课程 http://robojax.com/L/?id=62
*
* 如果你觉得这个教程对你有帮助,请支持我,以便我能继续制作像这样的内容。
*
* 或者使用PayPal捐款 http://robojax.com/L/?id=64
*
* 此代码为“按原样”提供,不提供任何担保或责任。
* 只要您保持此声明完整,即可自由使用此代码。
* 此代码已从RoboJax.com下载
* 此程序是自由软件:您可以在GNU通用公共许可证的条款下重新发布和/或修改它,许可证由自由软件基金会发布,版本为3,或(可选)任何更高版本。
*
* 此程序的分发是希望它会有用,但不提供任何担保;甚至没有适销性或特定用途适用性的默示担保。有关更多详细信息,请参见GNU通用公共许可证。
*
* 您应该已经收到与此程序一起提供的GNU通用公共许可证的副本。如果没有,请参见<https://www.gnu.org/licenses/>。
*/
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
int _step = 0;
boolean dir = true; // 假=顺时针,真=逆时针
int count=0;
void setup()
{
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
void loop()
{
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
case 1:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, HIGH);
break;
case 2:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 3:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 4:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 5:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 6:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 7:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
default:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(1);
}
|||您可能需要的东西
-
全球速卖通Purchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
资源与参考
-
外部Purchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
-
外部
-
外部
-
外部
文件📁
没有可用的文件。