电机控制基础回顾:直流有刷/无刷电机原理、PWM生成与死区插入、H桥与MOSFET驱动逻辑

各位工程师朋友,咱们开始聊电机控制。说实话,这部分内容看起来基础,但我在调试现场见过太多人栽在基础细节上。你想想看,一个PWM波形没配好,电机可能直接啸叫甚至烧MOS管。所以这一章,咱们把基础夯扎实。

直流有刷电机:最简单的旋转机器

有刷电机,说白了就是通电就转,换向靠电刷和机械换向器。我刚开始做电机驱动时,觉得这东西太简单了——给电就转呗。结果有一次,客户反馈电机噪音大,查了半天才发现是电刷磨损导致的火花干扰了控制板。

核心要点:有刷电机的转速与电压成正比,转矩与电流成正比。控制策略就是调电压、限电流。

实际项目中,有刷电机控制主要关注三点:

  • 启动电流冲击——直接满电压启动,电流可能冲到额定值的5-10倍。我建议用PWM软启动,逐步提升占空比。
  • 电刷寿命——电刷是消耗品,高转速下磨损更快。我曾经在一个需要连续运行的项目里,三个月就得换一次电刷。
  • EMI干扰——电刷换向时会产生电弧,对控制电路造成干扰。加RC吸收电路是常规做法。

直流无刷电机(BLDC):更高效,但控制更复杂

无刷电机把换向器从机械结构搬到了控制器里。转子是永磁体,定子是线圈。控制器根据转子位置,依次给不同线圈通电,产生旋转磁场。

这里有个关键点——换向时序。我见过不少新手,换向时序搞反了,电机要么不转,要么剧烈抖动。为什么会这样?因为磁场方向错了,转子被推着往回走。

对比项 有刷电机 无刷电机
换向方式 机械电刷 电子控制器
寿命 短(电刷磨损) 长(无接触磨损)
效率 较低(摩擦损耗) 较高(可达90%+)
控制复杂度 低(调电压即可) 高(需要位置反馈)
典型应用 玩具、电动工具 无人机、电动车、工业伺服

个人经验:调试BLDC时,我习惯先用开环强拖方式确认换向表是否正确。如果电机能平稳转动,再切入闭环控制。这招帮我省了不少排查时间。

PWM生成与死区插入:波形里的学问

PWM(脉宽调制)是电机调速的基本手段。但很多人只关注占空比,忽略了频率和死区时间。嗯,这里要注意——频率选不对,电机可能嗡嗡响;死区设不对,上下桥臂直接短路。

我一般这样选PWM参数:

  1. 频率——对于有刷电机,20kHz以上可以避开人耳听觉范围。对于无刷电机,通常10-20kHz,太高会增加开关损耗。
  2. 分辨率——8位(256级)够用,但要求平滑调速时建议用10位以上。
  3. 死区时间——根据MOSFET的关断延迟来定。我常用的经验值是:低速MOSFET设500ns-1μs,高速MOSFET设100-300ns。

避坑指南:我曾经在一个项目中,死区时间设得太短(只有50ns),结果MOSFET关断还没完成,上管就导通了。瞬间短路电流烧了三个MOS管。从那以后,我每次都会用示波器实测死区时间,确保安全裕量。

死区插入的实现方式有两种:

  • 硬件自动插入——很多MCU的PWM模块自带死区插入功能,配置寄存器即可。推荐使用,减少软件负担。
  • 软件手动插入——在PWM中断里修改占空比,人为制造死区。灵活性高,但容易出错。
// 示例:STM32 TIM1 死区配置(以STM32F4为例)
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;

// 死区时间 = 250ns(假设TIM时钟为168MHz)
// DTG[7:0] = 42,对应死区时间 = 42 * (1/168MHz) ≈ 250ns
TIM_BDTRInitStructure.TIM_DeadTime = 42;
TIM_BDTRInitStructure.TIM_OSSR = TIM_OSSR_Enable;
TIM_BDTRInitStructure.TIM_OSSI = TIM_OSSI_Enable;
TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1;
TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);

H桥与MOSFET驱动逻辑:功率放大的核心

H桥,名字很形象——四个开关管组成一个"H"形电路。控制电机正反转、刹车、滑行,全靠这四个管的开关组合。

我画了一张H桥的状态图,帮你快速理解:

H桥驱动状态图 Q1(上管左) Q3(下管左) Q2(上管右) Q4(下管右) 电机 VCC GND 四种驱动状态 正转:Q1 + Q4 导通,电流从左到右流过电机 反转:Q2 + Q3 导通,电流从右到左流过电机 刹车:Q3 + Q4 同时导通(下管短路),电机快速停止 滑行:所有MOSFET关断,电机自由旋转 ⚠ 严禁:Q1 + Q2 同时导通(上下桥臂直通,短路!)

MOSFET驱动逻辑,说白了就是控制栅极电压。但这里有个坑——浮地驱动。上管的源极电压会随着电机状态变化,不能直接用MCU的GPIO驱动。我建议用专用的半桥驱动芯片(如IR2104、DRV8301),或者自举电路。

我的习惯:设计H桥驱动时,我会在栅极串联一个10-100Ω的电阻。这个电阻能抑制振荡,还能限制驱动电流。有一次没加这个电阻,MOSFET开关时产生了严重的振铃,干扰了控制电路。

MOSFET选型要点

选MOSFET,别只看耐压和电流。我列几个容易被忽略的参数:

  • Rds(on)——导通电阻,直接影响发热。低压电机(12V/24V)建议选10mΩ以下的。
  • Qg——栅极电荷,决定开关速度。Qg越小,开关损耗越低。
  • Vgs(th)——阈值电压。3.3V MCU驱动时,建议选逻辑电平MOSFET(Vgs(th) < 2V)。
  • 体二极管恢复时间——在电机换向时,体二极管会导通。恢复时间太慢会导致额外损耗。

嗯,这一章的内容就到这里。电机控制的基础,说白了就是理解电机怎么转、PWM怎么配、H桥怎么驱动。把这些搞清楚了,后面的控制算法才有落脚点。