ESP32-S3 控制 直流电机
ESP32-S3 控制直流电机
一、实验简介
直流电机是常见的电动执行器,广泛用于小车驱动、风扇、泵等设备。
本实验将使用 ESP32-S3 控制一个直流电机,让它运行 3 秒后自动停止,从而掌握单片机控制电机的基本方法。
⚠ 注意:直流电机不能直接由单片机 GPIO 驱动,需要通过电机驱动模块或晶体管电路进行功率放大。
二、硬件准备
- ESP32-S3 开发板 × 1
- 直流电机 × 1
- 电机驱动模块(如 L298N、L9110、单路继电器驱动等) 这里使用继电器模块 × 1
- 杜邦线若干
- USB 数据线 × 1
三、接线说明
1. 控制部分(ESP32-S3 → 电机驱动模块)
| 电机驱动引脚 | ESP32-S3 引脚 |
|---|---|
| IN1 | GPIO15 |
| VCC | 5V |
| GND | GND |
2. 电机部分(驱动模块 → 直流电机)
| 驱动模块输出端 | 电机端子 |
|---|---|
| O1 | 电机任意一脚 |
| 5V(或 O2) | 电机另一脚 |
接线示意:
ESP32-S3 GPIO15 ----> IN1(电机驱动控制端)
ESP32-S3 5V ----> VCC(驱动模块电源)
ESP32-S3 GND ----> GND
驱动模块 O1 ----> 电机正极
驱动模块 5V/O2 ----> 电机负极
四、程序代码
// 定义电机控制管脚
#define motor_pin 15
// 类型重定义
typedef unsigned char u8;
typedef unsigned int u16;
void setup() {
// 设置引脚为输出模式
pinMode(motor_pin, OUTPUT);
// 电机开启
digitalWrite(motor_pin, 1);
delay(3000); // 运行 3 秒
// 电机停止
digitalWrite(motor_pin, 0);
}
void loop() {
// 空循环,不做额外操作
}
五、代码解析
-
#define motor_pin 15
定义电机控制信号接在 GPIO15。 -
pinMode(motor_pin, OUTPUT)
将 GPIO15 设置为输出模式。 -
digitalWrite(motor_pin, 1)
输出高电平,驱动模块启动电机。 -
delay(3000)
延时 3 秒,电机保持运行。 -
digitalWrite(motor_pin, 0)
输出低电平,电机停止运转。
六、实验现象
将程序烧录到 ESP32-S3 后:
- 电机会运行 3 秒钟,然后自动停止。
- 由于
loop()中没有其他操作,电机不会再次启动。
七、注意事项
- GPIO 输出电流很小,不能直接驱动直流电机,必须使用驱动模块或晶体管放大。
- 电机运行时会产生反电动势,驱动电路中应有续流二极管保护(大部分驱动模块已内置)。
- 如果需要反复启动/停止,可以将控制逻辑写在
loop()中,并加上延时或按键触发。
八、总结
本实验演示了 ESP32-S3 控制直流电机的最基本方法。
在实际项目中,我们可以进一步拓展:
- 使用 PWM 调速 控制电机转速
- 使用 H 桥电路 控制正反转
- 结合 传感器 实现自动化控制

浙公网安备 33010602011771号