搜索代码

ESP32教程16/55 - 使用ESP32和L293D的迷你水泵 | SunFounder的ESP32物联网学习套件

ESP32教程16/55 - 使用ESP32和L293D的迷你水泵 | SunFounder的ESP32物联网学习套件

在本教程中,我们将学习如何使用ESP32微控制器和L293D电机驱动器控制5V水泵。这个项目是使用电机驱动器与微控制器结合的一个很好的入门介绍,使您能够控制需要比微控制器直接提供的电流更大的设备。在本教程结束时,您将拥有一个可以通过编程方式启动和停止的水泵。

ESP32是一款功能强大的微控制器,内置Wi-Fi和蓝牙功能,非常适合物联网应用。L293D电机驱动器用于通过管理电机运行所需的更高电流来控制水泵。这种设置使我们能够启动和停止水泵,同时确保ESP32免受过大电流消耗的影响。

硬件说明

在这个项目中,我们使用了ESP32微控制器,它以其多功能性和连接选项而闻名。它的功能类似于Arduino,同时还提供Wi-Fi和蓝牙等附加功能。L293D电机驱动器充当ESP32和水泵之间的接口,允许控制水泵的运行而不会使微控制器过载。

L293D具有两个H桥,使其能够控制电机的方向和速度。每个H桥可以驱动电机向任一方向运行,使其适用于需要电机控制的应用。在这种情况下,我们只需要让水泵单向运行。

数据手册详情

制造商德州仪器
零件编号L293D
逻辑/IO电压4.5 - 36 V
电源电压4.5 - 36 V
输出电流(每通道)600 mA
峰值电流(每通道)1.2 A
PWM频率建议1 kHz - 10 kHz
输入逻辑阈值2 V(高电平),0.8 V(低电平)
压降 / RDS(on) / 饱和电压1.5 V(最大值)
热限制+150 °C(最大值)
封装DIP-16
备注 / 变体包含用于感性负载保护的内部二极管

  • 确保持续运行时具有良好的散热性能。
  • 使用去耦电容以确保电源稳定。
  • 注意输入电压,防止损坏。
  • 如需速度控制,可实施PWM。
  • 检查接线以避免短路,尤其是感性负载。

接线说明

ESP32-16-motor-pump_wiring

要将ESP32和L293D电机驱动器与水泵连接,请仔细按照以下步骤操作。首先,将电源连接到L293D。将引脚1(电机A的使能引脚)和引脚8(Vcc2)连接到正电压源(5V)。将引脚4(接地)连接到电路的接地端。

接下来,将ESP32连接到L293D。将ESP32的GPIO引脚13连接到L293D的引脚2(输入1),将GPIO引脚14连接到引脚7(输入2)。最后,将水泵连接到L293D的引脚3(输出1)和引脚6(输出2)。确保所有接地连接都连接在一起,以保证正常运行。如果您按照这些说明操作,您的接线应该简单且功能正常。

代码示例与讲解

在代码中,我们定义了电机控制的引脚连接。标识符motor1Amotor2A分别对应ESP32上的GPIO引脚13和14。这些引脚将通过L293D驱动器控制水泵。

#define motor1A 13
#define motor2A 14

void setup() {
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

setup()函数中,我们将电机控制引脚初始化为输出模式。这确保我们可以向L293D驱动器发送信号来控制水泵。loop()函数随后控制水泵的运行。

void loop() {
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(5);
  
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(2000); // 等待一秒钟
}

loop()函数中,我们设置motor1A为HIGH,motor2A为LOW来启动水泵。短暂延迟后,我们通过将两个引脚都设置为LOW来停止水泵。这个循环无限重复,使水泵运行一小段时间然后停止。

演示 / 预期效果

完成接线并上传代码后,您应该看到水泵以循环方式启动和停止。水泵将运行一小段时间,然后停止,形成开关模式。请确保您的电源能够满足水泵的要求,以避免任何问题(视频中09:30处)。

视频时间戳

  • 00:00 开始
  • 1:50 项目介绍
  • 3:17 为什么需要将L293D与Arduino配合使用?
  • 5:47 水泵接线说明
  • 10:01 Arduino代码说明
  • 12:21 在Arduino IDE中为ESP32选择COM端口
  • 14:03 运行水泵的演示
  • 15:25 带水的演示

图像

ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_schematic
ESP32-16-motor-pump_wiring
ESP32-16-motor-pump_wiring
5V DC water pump
5V DC water pump
815-ESP32 Tutorial 16/55 - Arduino code to control DC water pump
语言: C++
#define motor1A 13
#define motor2A 14

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin as an output.
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

// the loop function runs over and over again forever
void loop() {

  // Rotate
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(5);

  // Stop
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(2000); // wait for a second
}

资源与参考

文件📁

数据手册 (pdf)