第6章 直流电机实验

第六章 直流电机实验

1. 直流电机介绍

直流电机是指能将直流电能转换成机械能(直流电动机) 或将机械能转换成直流电能(直流发电机) 的旋转电机。

直流电机没有正负之分, 在两端加上直流电就能工作。 开发板配置的直流电机为 5V 直流电机, 如下:

屏幕截图 2024 08 05 123349

其内部结构如下图所示:

屏幕截图 2024 08 05 123440

要让直流电机旋转, 直接使用 ESP32 的 GPIO 连接肯定是不行的, 需要借助驱动模块, 比如板载的 ULN2003 模块。 它可以让 ESP32 的 GPIO 提供很小的电流就能驱动大电流的设备。

ULN2003 使用非常简单, 可以简单理解为一个非门, 即输入为高电平, 输出则为低电平, 输入为低电平, 输出则为高组态。 ULN2003 结构图如下:

屏幕截图 2024 08 05 123549

从图中可知, 1B 输入对应 1C 输出, 2B 输入对应 2C 输出, 因此类推。 注意:因为 ULN2003 的输出是集电极开路, ULN2003 要输出高电平, 必须在输出口外接上拉电阻。 这也就能解释在后面连接直流电机时为什么不能直接将 ULN2003 的 2个输出口接电机线, 而必须一根线接电源, 另一个才接 ULN2003 输出口。

2. 硬件设计

本实验使用到硬件资源如下:

  • ULN2003模块

  • ESP32 GPIO

  • 5V直流电机

ULN2003模块电路如下所示:

屏幕截图 2024 08 05 123755

由图可知, J3 端子的 MOTOR_IN1-MOTORIN_4 脚为 ULN2003 控制端, J5 端子为 ULN2003 的输出端, 本实验直流电机的一脚接在 J5 端子的 VCC5, 另一脚接在J5 端子的 OUT1。 要使直流电机旋转, 只需给 MOTOR_IN1 脚输出高电平, 如输出低电平, 则电机停止。 因此可使用导线将 ESP32 的 IO 口与 MOTOR_IN1 脚连接。

本章实验使用 ESP32 的 IO15 引脚, 接线如下所示:

屏幕截图 2024 08 05 124224

3. 软件设计

from machine import Pin
import time

# 定义直流电机控制对象
motor = Pin(15, Pin.OUT, Pin.PULL_DOWN) # 定义引脚15为输出模式,并下拉电阻

# 主函数
if __name__ == '__main__':
    motor.value(1) # 初始状态开启
    time.sleep(10) # 持续10秒
    motor.value(0) # 关闭电机
    while True:
        pass # 程序阻塞,等待用户输入

在配置 IO 上下拉时, 为了初始状态让电机停止, 此时配置为下拉, 即 ULN2003输入为低, 输出则为高组态, 电机停止。

在 Python 中, pass 是一个空语句, 为了保持程序结构的完整性。 一般情况下, pass 不做任何事情, 被用做占位符。


2024.8.21 第一次修订,后期不再维护

posted @ 2024-08-21 13:00  hazy1k  阅读(27)  评论(0编辑  收藏  举报