Motor 模块
模块介绍
直流电机 H 桥驱动类,通过 PWM 控制电机速度和方向。支持速度范围 -1.0(全速反转)~ +1.0(全速正转),适用于机器人、小车、机械臂等需要精确控制电机转速的应用场景。
硬件接线说明
必须使用 H 桥驱动模块(如 L298N、TB6612FNG 等):
| 引脚 | 说明 |
|---|---|
| IN1 | 接 GPIO14(示例) |
| IN2 | 接 GPIO15(示例) |
⚠️ 重要:
- 不可将电机直接连接到 GPIO!否则可能烧毁主控
- 电机电源电压应匹配电机额定电压(如 6V、12V)
- 电机电源必须独立供电,不要使用开发板的 3.3V/5V 供电
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| pin1 | Pin | 无 | 电机控制引脚1(接 H 桥 IN1) |
| pin2 | Pin | 无 | 电机控制引脚2(接 H 桥 IN2) |
| direction | int | 1 | 方向修正(1=正常,-1=反转,用于接线反向时) |
| freq | int | 5000 | PWM 频率(Hz),推荐 1k~10kHz |
| max_duty | int | 1023 | 最大占空比值(ESP32 默认 1023,Pico 需改为 65535) |
导入和实例创建
python
from machine import Pin # 导入Pin模块
from motor import Motor # 导入Motor驱动模块
# 初始化电机(接 GPIO14 和 15,方向正常)
motor = Motor(Pin(14), Pin(15)) # 创建Motor实例,传入两个Pin对象
# 若电机转向与预期相反,只需改 direction=-1
motor = Motor(Pin(14), Pin(15), direction=-1) # 反转方向核心属性方法
| 属性或方法 | 参数 | 返回类型 | 说明 |
|---|---|---|---|
| speed | 无 | float | 可读写属性:当前速度(-1.0 ~ +1.0) |
| direction | 无 | int | 只读属性:当前方向修正系数 |
| stop() | 无 | None | 立即停止电机(等效于 speed = 0) |
| set_speed() | speed (float -1.0~1.0) | None | 设置电机速度 |
| deinit() | 无 | None | 释放 PWM 资源(程序结束前建议调用) |
使用示例
python
from machine import Pin
from motor import Motor
import time
# 初始化电机
motor = Motor(Pin(14), Pin(15))
motor.speed = 0.7 # 正转 70%
time.sleep(2)
motor.speed = -0.5 # 反转 50%
time.sleep(2)
motor.stop() # 停止
# 若电机转向与预期相反,只需改 direction=-1,无需改逻辑
motor = Motor(Pin(14), Pin(15), direction=-1)
motor.speed = 0.6 # 逻辑正转(即使物理接线反了)
motor.deinit() # 释放资源注意事项
硬件与电源要求
- 必须使用 H 桥驱动模块(如 L298N、TB6612FNG 等),不可将电机直接连接到 GPIO
- 电机电源必须独立供电,不要使用开发板的 3.3V/5V 供电,防止电流过大导致主控复位
- 电机电源电压应匹配电机额定电压(如 6V、12V)
参数范围
- speed 范围 -1.0 ~ +1.0,建议不超过 0.8 避免电流过大
使用技巧
- 若电机转向与预期相反,使用 direction=-1 修正,无需改逻辑
- 使用完毕后建议调用 deinit() 释放 PWM 资源