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() {
  // 空循环,不做额外操作
}

五、代码解析

  1. #define motor_pin 15
    定义电机控制信号接在 GPIO15。

  2. pinMode(motor_pin, OUTPUT)
    将 GPIO15 设置为输出模式。

  3. digitalWrite(motor_pin, 1)
    输出高电平,驱动模块启动电机。

  4. delay(3000)
    延时 3 秒,电机保持运行。

  5. digitalWrite(motor_pin, 0)
    输出低电平,电机停止运转。


六、实验现象

将程序烧录到 ESP32-S3 后:

  • 电机会运行 3 秒钟,然后自动停止。
  • 由于 loop() 中没有其他操作,电机不会再次启动。

七、注意事项

  • GPIO 输出电流很小,不能直接驱动直流电机,必须使用驱动模块或晶体管放大。
  • 电机运行时会产生反电动势,驱动电路中应有续流二极管保护(大部分驱动模块已内置)。
  • 如果需要反复启动/停止,可以将控制逻辑写在 loop() 中,并加上延时或按键触发。

八、总结

本实验演示了 ESP32-S3 控制直流电机的最基本方法。
在实际项目中,我们可以进一步拓展:

  • 使用 PWM 调速 控制电机转速
  • 使用 H 桥电路 控制正反转
  • 结合 传感器 实现自动化控制
posted @ 2025-08-16 09:31  jeikerxiao  阅读(403)  评论(0)    收藏  举报