Skip to content

Motor 模块

模块介绍

直流电机 H 桥驱动类,通过 PWM 控制电机速度和方向。支持速度范围 -1.0(全速反转)~ +1.0(全速正转),适用于机器人、小车、机械臂等需要精确控制电机转速的应用场景。

硬件接线说明

必须使用 H 桥驱动模块(如 L298N、TB6612FNG 等):

引脚说明
IN1接 GPIO14(示例)
IN2接 GPIO15(示例)

⚠️ 重要

  • 不可将电机直接连接到 GPIO!否则可能烧毁主控
  • 电机电源电压应匹配电机额定电压(如 6V、12V)
  • 电机电源必须独立供电,不要使用开发板的 3.3V/5V 供电

初始化参数

参数类型默认值说明
pin1Pin电机控制引脚1(接 H 桥 IN1)
pin2Pin电机控制引脚2(接 H 桥 IN2)
directionint1方向修正(1=正常,-1=反转,用于接线反向时)
freqint5000PWM 频率(Hz),推荐 1k~10kHz
max_dutyint1023最大占空比值(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)  # 反转方向

核心属性方法

属性或方法参数返回类型说明
speedfloat可读写属性:当前速度(-1.0 ~ +1.0)
directionint只读属性:当前方向修正系数
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 资源