跳转至

电机驱动板

概述

电机驱动板(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防护是可靠运行的关键

评论 #