3、电机驱动基础:理解直流电机、编码器电机、舵机、步进电机的驱动原理,以及H桥、L298N、TB6612等驱动模块的接线与配置

在STM32机器人调试中,电机驱动是所有运动控制的基础。无论是两轮差速小车、四轴机械臂,还是云台舵机系统,电机选型与驱动电路的正确性直接决定了机器人能否稳定运行。本章将系统梳理四类常见电机的驱动原理,重点剖析H桥电路的工作机制,并给出L298N与TB6612两款主流驱动模块的接线方法、配置参数及调试排错要点。理解这些内容,是后续处理电机抖动、传感器异常和状态错乱问题的前提。

STM32 电机驱动链路与模块选型关系图 STM32 主控 TIM/PWM 输出 GPIO 方向控制 驱动模块(H桥核心) L298N 双H桥 VIN 5-35V TB6612 双H桥 VIN 2.5-13.5V PWM+DIR 执行电机类型 直流电机 PWM调速 编码器电机 PWM+AB相 舵机 50Hz PWM 步进电机 脉冲+方向 OUT1/OUT2 电源分配(常见错误源) 逻辑电源 3.3V/5V 电机电源 VM 共地 GND(必须) 调试关键点 ① 先确认PWM频率与占空比范围 ② 检查方向引脚逻辑电平是否匹配 ③ 测量电机端电压是否正常 ④ 编码器AB相是否接入正确定时器通道

上图展示了STM32控制电机驱动的完整链路:主控通过定时器产生PWM信号控制转速,通过GPIO控制方向;驱动模块内部由H桥电路完成功率放大;最终驱动不同类型的电机执行动作。电源分配是调试中最容易出错的一环,尤其是逻辑电源与电机电源的共地问题,将在后文详细展开。

3.1 四类电机的驱动原理与选型对比

3.1.1 直流电机:最基础的调速对象

普通直流电机(DC Motor)是最简单的执行元件,其转速与端电压成正比,转矩与电流成正比。STM32通过PWM(脉冲宽度调制)改变平均电压,从而控制转速。PWM频率通常选择10kHz-20kHz,既能避开 audible 噪声,又能保证电流连续性。方向控制则需要改变电枢电流方向,这必须依赖H桥电路。

直流电机的关键参数包括:额定电压、空载转速、堵转电流、减速比(若带齿轮箱)。在机器人应用中,直接驱动轮子通常需要减速电机,以获得足够的转矩和可控的转速范围。

3.1.2 编码器电机:闭环控制的基础

编码器电机在直流电机基础上增加了旋转编码器(通常为霍尔式或光电式),输出A、B两相正交脉冲信号。STM32通过定时器的编码器模式读取AB相,即可获得转速和方向信息。编码器分辨率常见为11线/13线/16线(每圈脉冲数),经过4倍频后,实际分辨率可提升至44/52/64 PPR。

编码器电机的驱动方式与普通直流电机完全一致,但控制策略不同:需要PID闭环调节。调试时,编码器接线错误(A/B相交换)会导致速度反馈为负值,表现为电机飞转或抖动。

3.1.3 舵机:角度伺服系统

舵机(Servo)内部集成了直流电机、减速齿轮、电位器反馈和控制电路。STM32只需输出50Hz(周期20ms)的PWM信号,通过改变高电平脉宽(通常1ms-2ms)来控制舵机角度(0°-180°)。舵机不需要H桥驱动,其内部电路已完成功率放大。

舵机调试要点:PWM频率必须严格为50Hz,脉宽范围需根据舵机型号调整。部分数字舵机支持更高频率(如333Hz),但模拟舵机超频会发热甚至损坏。舵机供电电压通常为5V-6V,电流峰值可达1A以上,必须独立供电,不能与STM32共用3.3V电源。

3.1.4 步进电机:精确位置控制

步进电机通过脉冲序列控制转角,每接收一个脉冲,电机转动一个固定角度(步距角,常见1.8°)。STM32通过定时器产生脉冲信号,方向由GPIO电平决定。步进电机需要专用驱动芯片(如A4988、DRV8825、TB6600),内部包含逻辑译码和功率放大电路。

步进电机的关键参数包括:步距角、相数(两相/三相)、额定电流、保持转矩。细分设置(如1/16细分)可提高平滑度,但会降低最大转速。调试时,脉冲频率过高会导致失步,表现为电机丢步或啸叫。

电机类型 控制信号 反馈方式 驱动模块 典型应用 调试难点
直流电机 PWM + 方向 无(开环) L298N / TB6612 小车驱动、风扇 PWM频率与占空比匹配
编码器电机 PWM + 方向 AB相正交脉冲 L298N / TB6612 + 编码器接口 平衡车、循迹小车 编码器接线与PID调参
舵机 50Hz PWM(脉宽调制) 内部电位器 无需驱动模块 机械臂关节、云台 脉宽范围与供电电流
步进电机 脉冲 + 方向 无(开环) A4988 / DRV8825 3D打印机、数控平台 细分设置与失步排查

3.2 H桥电路原理与工作模式

H桥是直流电机驱动的核心电路,由4个开关管(MOSFET或三极管)组成“H”形拓扑。电机连接在桥臂中点,通过控制不同开关管的通断组合,实现电机正转、反转、制动和滑行四种状态。

以L298N内部集成的双H桥为例,其逻辑控制引脚为IN1、IN2(对应一个电机),使能引脚ENA(PWM输入)。当IN1=1、IN2=0时,电机正转;IN1=0、IN2=1时,电机反转;IN1=IN2=1时,电机制动(两端同时接高电平);IN1=IN2=0时,电机滑行(两端悬空)。

实际调试中,H桥电路最常见的故障是“直通”(shoot-through),即同一桥臂上下两个开关管同时导通,导致电源短路。这通常由控制信号时序错误引起,例如在切换方向时未先关闭PWM。STM32代码中,应先设置方向引脚,再使能PWM输出,避免瞬间直通。

H桥工作模式速查表(以L298N为例)
IN1=1, IN2=0 → 正转
IN1=0, IN2=1 → 反转
IN1=1, IN2=1 → 制动(短接电机两端)
IN1=0, IN2=0 → 滑行(电机自由转动)
ENA接PWM → 调速;ENA接高电平 → 全速

3.3 L298N与TB6612驱动模块接线与配置

3.3.1 L298N模块:经典但功耗较高

L298N是ST公司生产的双H桥驱动芯片,支持5V-35V电机电压,峰值电流2A。模块上通常带有78M05稳压芯片,可为逻辑电路提供5V电源(需跳线帽选择)。接线时需注意:

  1. 电源接线:VIN接电机电源(如12V),GND必须与STM32共地;5V输出可给STM32供电(但电流有限,不建议)。
  2. 逻辑输入:IN1-IN4接STM32 GPIO,ENA/ENB接PWM引脚(也可接高电平实现全速)。
  3. 电机输出:OUT1/OUT2接电机1,OUT3/OUT4接电机2。
  4. 跳线帽:若使用PWM调速,需拔掉ENA/ENB上的跳线帽;若不需要调速,保留跳线帽使能全速。

L298N的缺点在于饱和压降较大(约2V),在低电压(如6V)供电时,电机实际电压会明显低于电源电压,导致转速不足。此外,芯片发热严重,需加装散热片。

3.3.2 TB6612模块:高效低功耗替代方案

TB6612FNG是东芝公司的双H桥驱动芯片,支持2.5V-13.5V电机电压,峰值电流3.2A。其MOSFET导通电阻仅0.5Ω,压降远小于L298N,且体积小巧,非常适合电池供电的机器人。

TB6612的引脚功能与L298N类似,但逻辑电源(VCC)与电机电源(VM)分开。接线要点:

  • VM接电机电源(如7.4V锂电池),VCC接3.3V或5V逻辑电源。
  • GND必须与STM32共地,且VM的GND与VCC的GND在模块内部已连通。
  • AIN1/AIN2、BIN1/BIN2接GPIO方向控制;PWMA/PWMB接PWM调速。
  • STBY(待机)引脚必须接高电平,否则模块不工作。
经验提醒:TB6612的STBY引脚是新手最容易遗漏的。若电机完全无反应,先检查STBY是否接3.3V。此外,TB6612的AO1/AO2输出端建议并联100nF陶瓷电容,可有效抑制电机换向时的尖峰电压。

3.3.3 接线配置对比表

项目 L298N TB6612
电机电压范围 5V-35V 2.5V-13.5V
逻辑电压 5V(板载稳压) 2.7V-5.5V
峰值电流 2A 3.2A
导通压降 约2V 约0.5V
PWM频率上限 40kHz 100kHz
待机控制 无 STBY引脚
适用场景 大电压、大功率 电池供电、小型机器人

3.4 实战案例:两轮差速小车电机驱动调试

背景与约束:某竞赛机器人采用两轮差速底盘,使用带霍尔编码器的直流减速电机(额定电压12V,减速比30:1,编码器13线),驱动模块选用TB6612,主控为STM32F103C8T6。要求实现精确的速度闭环控制,最大速度1m/s。

初始现象:上电后,左轮正常转动,右轮完全不动;用手拨动右轮,感觉有明显阻力。

分析判断过程:

  1. 首先检查TB6612的PWMB引脚是否有PWM信号——用示波器测量,发现占空比正常(50%)。
  2. 检查BIN1/BIN2方向引脚——发现BIN1=1、BIN2=1,处于制动状态。
  3. 查看代码,发现初始化时BIN1和BIN2均被设置为高电平,而左轮AIN1/AIN2设置为1/0。原因是代码中方向控制逻辑写反,右轮方向引脚初始化错误。

实际操作步骤:

// 错误代码
GPIO_SetBits(GPIOB, GPIO_Pin_1);  // BIN1 = 1
GPIO_SetBits(GPIOB, GPIO_Pin_2);  // BIN2 = 1 → 制动

// 修正后
GPIO_SetBits(GPIOB, GPIO_Pin_1);  // BIN1 = 1
GPIO_ResetBits(GPIOB, GPIO_Pin_2); // BIN2 = 0 → 正转

结果对比:修正后右轮正常转动,但发现右轮转速明显低于左轮。进一步检查编码器反馈,发现右轮编码器AB相接入的定时器通道错误,导致速度计算值偏小,PID输出饱和。

风险与代价:若未及时发现方向引脚错误,长时间制动会导致电机过热,甚至烧毁驱动芯片。编码器通道接错则会导致闭环控制发散,小车跑偏。

复盘经验:调试电机驱动时,应遵循“先开环、后闭环”的原则。先用固定占空比测试电机是否转动,再接入编码器反馈。同时,建议在代码中增加方向引脚的初始化检查,避免默认电平导致制动。

3.5 常见误区与总结复盘

风险提示:以下三个错误是电机驱动调试中最常见、也最容易被忽视的:
① 共地问题:STM32的GND与驱动模块的GND必须连接。若未共地,PWM信号电平参考点不一致,会导致电机时转时停或完全不动。
② PWM频率选择不当:频率过低(如1kHz)会产生明显噪声和转速波动;频率过高(如100kHz以上)会增大开关损耗,驱动芯片发热严重。推荐10kHz-20kHz。
③ 电源容量不足:电机启动电流可达额定电流的5-10倍。若电源输出能力不足,电压会被拉低,导致STM32复位或驱动芯片欠压保护。

总结复盘清单:

  • 直流电机调速核心是PWM占空比,方向控制必须依赖H桥。
  • 编码器电机调试时,先确认AB相接线正确,再调整PID参数。
  • 舵机使用50Hz PWM,脉宽范围需根据型号调整,供电必须独立。
  • 步进电机注意细分设置与脉冲频率上限,避免失步。
  • L298N适合大电压场景,TB6612适合电池供电的小型机器人。
  • 任何驱动模块,务必先检查逻辑电源、电机电源和共地三条线。
  • 调试顺序:静态检查(接线、电压)→ 开环测试(固定PWM)→ 闭环调试(编码器反馈)。

掌握电机驱动基础后,下一阶段将进入传感器数据采集与异常处理。但在此之前,请务必亲手搭建一个最小驱动电路,用示波器观察PWM波形和电机端电压,这比任何理论都更能加深理解。