电机驱动板
概述
电机驱动板(Motor Driver)是连接MCU和电机之间的功率电子模块。MCU的GPIO输出电流(通常<20mA)不足以直接驱动电机(通常需要数百mA到数十A),驱动板负责功率放大和电流方向控制。
H桥原理
基本结构
H桥是直流电机驱动的核心电路,由4个开关(MOSFET或BJT)组成"H"形:
VCC
│
┌──┴──┐
│ │
Q1 Q3
│ │
├─ M ─┤ M = 电机
│ │
Q2 Q4
│ │
└──┬──┘
│
GND
工作模式
| Q1 | Q2 | Q3 | Q4 | 电机状态 |
|---|---|---|---|---|
| ON | OFF | OFF | ON | 正转 |
| OFF | ON | ON | OFF | 反转 |
| ON | OFF | ON | OFF | 制动(高侧短路) |
| OFF | ON | OFF | ON | 制动(低侧短路) |
| OFF | OFF | OFF | OFF | 自由滑行 |
禁止状态
同侧上下管(Q1+Q2 或 Q3+Q4)绝不能同时导通,否则电源直接短路,瞬间烧毁!驱动IC内部通常有死区保护。
PWM调速
通过对H桥开关施加PWM信号控制平均电压:
\[
V_{avg} = V_{supply} \times \frac{D}{100\%}
\]
其中 \(D\) 为占空比。PWM频率通常选择20-50kHz(超出人耳听觉范围)。
L298N双H桥驱动模块
规格
| 参数 | 值 |
|---|---|
| 驱动通道 | 2路(双H桥) |
| 工作电压 | 5-35V |
| 驱动电流 | 2A/通道(峰值3A) |
| 逻辑电压 | 5V(板载降压) |
| 控制方式 | DIR + PWM 或 IN1/IN2/ENA |
| 封装 | 大型DIP散热片 |
接线图
┌──────────────┐
电机A+ ──────────┤ OUT1 +12V ├── 电机电源(7-12V)
电机A- ──────────┤ OUT2 GND ├── 共地
电机B+ ──────────┤ OUT3 5V ├── 可输出5V给MCU
电机B- ──────────┤ OUT4 │
│ │
Arduino D5 (PWM)─┤ ENA ENB ├─ Arduino D6 (PWM)
Arduino D2 ──────┤ IN1 IN3 ├─ Arduino D4
Arduino D3 ──────┤ IN2 IN4 ├─ Arduino D7
└──────────────┘
控制代码
// L298N 控制双电机
#define ENA 5 // PWM调速
#define IN1 2 // 方向控制
#define IN2 3
#define ENB 6
#define IN3 4
#define IN4 7
void motorA(int speed) {
// speed: -255 ~ 255
if (speed >= 0) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, speed);
} else {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, -speed);
}
}
void motorB(int speed) {
if (speed >= 0) {
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENB, speed);
} else {
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENB, -speed);
}
}
局限
- 效率低(BJT压降约2V,功耗大,发热严重)
- 适合低功率入门项目,不推荐用于正式机器人
TB6612FNG
规格
| 参数 | 值 |
|---|---|
| 驱动通道 | 2路 |
| 工作电压 | 2.5-13.5V |
| 驱动电流 | 1.2A/通道(峰值3.2A) |
| 逻辑电压 | 2.7-5.5V |
| 导通电阻 | 0.5Ω(MOSFET) |
| 待机模式 | 有(STBY引脚) |
| 封装 | 小型SSOP24 |
优势
- MOSFET驱动,压降极低(约0.5V vs L298N的2V),效率高
- 体积小巧,适合紧凑设计
- 支持PWM频率高达100kHz
- 内置热关断保护
接线
TB6612FNG MCU
AIN1 ←── GPIO (方向)
AIN2 ←── GPIO (方向)
PWMA ←── PWM (速度)
BIN1 ←── GPIO
BIN2 ←── GPIO
PWMB ←── PWM
STBY ←── GPIO (HIGH=工作)
VM ←── 电机电源
VCC ←── 逻辑电源(3.3/5V)
GND ←── 共地
AO1/AO2 ──→ 电机A
BO1/BO2 ──→ 电机B
Waveshare General Driver for Robots
概述
微雪(Waveshare)推出的通用机器人驱动板,集成多种接口于一体。
规格
| 参数 | 值 |
|---|---|
| 主控 | ESP32-S3 |
| 直流电机驱动 | 4路(TB6612) |
| 舵机接口 | 多路PWM |
| 总线舵机 | 支持STS/Dynamixel |
| 显示 | 0.91寸OLED |
| IMU | 板载6轴 |
| 通信 | WiFi/BLE/UART/I2C/SPI |
| 供电 | USB-C + 电池接口 |
特点
- 一块板解决小型机器人的所有驱动需求
- ESP32-S3支持WiFi和BLE,方便远程控制
- 板载OLED可显示状态信息
- MicroPython和Arduino双支持
适用场景
- 轮式小车
- 小型机械臂
- 教育机器人平台
- 快速原型验证
ODrive S3
概述
ODrive是开源的高性能BLDC驱动器,面向机器人和自动化应用。
规格
| 参数 | 值 |
|---|---|
| 驱动通道 | 双通道BLDC |
| 电压范围 | 12-56V |
| 连续电流 | 40A/通道 |
| 峰值电流 | 80A/通道 |
| 控制算法 | FOC(正弦波) |
| 电流环带宽 | >5kHz |
| 编码器 | 增量/SPI/霍尔/无感 |
| 通信 | USB / CAN / UART / SPI / GPIO |
| 处理器 | STM32F405 |
功能特性
- 电流/速度/位置三环闭环控制
- 支持梯形和S曲线轨迹规划
- 内置防滑(anti-cogging)校准
- ASCII和Native协议
- 开源固件,可自定义
CAN总线多轴控制
# ODrive CAN多轴控制示例
import can
bus = can.interface.Bus(channel='can0', bustype='socketcan')
def set_position(node_id, position):
"""通过CAN设置ODrive位置"""
# Set Input Pos命令: cmd_id = 0x00C
arbitration_id = (node_id << 5) | 0x00C
data = struct.pack('<fhh', position, 0, 0) # pos, vel_ff, torque_ff
msg = can.Message(arbitration_id=arbitration_id, data=data)
bus.send(msg)
# 控制两个轴
set_position(0, 10.0) # 轴0: 10圈
set_position(1, -5.0) # 轴1: -5圈
Pololu电机驱动
Pololu提供多种小型高品质电机驱动模块:
常用型号
| 型号 | 电流 | 电压 | 特点 |
|---|---|---|---|
| DRV8833 | 1.2A | 2.7-10.8V | 双路,超小型 |
| DRV8838 | 1.8A | 0-11V | 单路,极简 |
| TB6612FNG | 1.2A | 4.5-13.5V | 双路,经典 |
| VNH5019 | 12A | 5.5-24V | 单路,大电流 |
| G2 18v17 | 17A | 6.5-30V | 大电流,高性能 |
选型参考
电机电流需求:
< 1A ──→ DRV8833 / TB6612FNG
1-5A ──→ BTS7960 / L298N
5-15A ──→ VNH5019 / G2系列
> 15A ──→ ODrive / 自制MOSFET驱动
驱动板连接注意事项
供电
- 电机电源和逻辑电源分开:避免电机噪音干扰MCU
- 足够粗的电源线:大电流场景用16-18AWG线
- 去耦电容:驱动板电源输入端并联大电容(100μF-1000μF)
- 续流二极管:电机感性负载断电时产生反向电压,驱动IC通常内置
接地
电池 ─┬─→ 电机驱动板 ──→ 电机
│ │
│ 共地 ←─── 这根线必须可靠连接
│ │
└─→ 降压模块 ──→ MCU
共地原则
MCU和驱动板的GND必须连接,否则逻辑信号无参考电平,驱动板无法正确识别PWM和方向信号。
EMI防护
- 电机引脚并联0.1μF陶瓷电容(抑制电刷火花)
- 使用屏蔽线或双绞线连接电机
- PWM频率避开通信频段
驱动方案对比
| 方案 | 电机类型 | 电流 | 成本 | 适用场景 |
|---|---|---|---|---|
| L298N | 有刷DC | 2A | 低 | 入门教学 |
| TB6612FNG | 有刷DC | 1.2A | 低 | 小型机器人 |
| BTS7960 | 有刷DC | 43A | 中 | 大型底盘 |
| Waveshare通用 | DC+舵机 | 1.2A | 中 | 一体化小型 |
| ESC | BLDC | 变化 | 中 | 无人机 |
| ODrive S3 | BLDC | 40A | 高 | 机器人关节 |
| 工业伺服驱动 | AC伺服 | 变化 | 高 | 工业机器人 |
小结
- H桥是直流电机驱动的基本电路,4个开关控制电流方向
- L298N适合入门但效率低,TB6612FNG是更好的替代
- Waveshare通用驱动板集成ESP32+电机+舵机,适合小型机器人
- ODrive是高性能BLDC开源驱动器,支持FOC和CAN总线
- 驱动板选型主要看电流容量、电压范围和控制方式
- 供电设计、共地和EMI防护是可靠运行的关键