直流电机驱动:H桥电路原理、PWM调速原理、死区时间与保护、MOSFET选型要点

各位同学,咱们今天聊点实在的。直流电机驱动,说白了就是怎么让电机听话——让它转就转,让它停就停,还能控制快慢和方向。我刚开始做电机驱动那会儿,烧过不少MOSFET,炸过电容,后来才慢慢摸清门道。今天把这部分核心内容掰开揉碎了讲给你听。

一、H桥电路原理

H桥这个名字,你一看电路图就明白了。四个开关管(通常是MOSFET)摆成"H"形,电机接在中间横杠上。通过控制这四个管的通断,就能改变电机两端的电压极性。

具体怎么玩?我列个表给你看:

Q1 Q2 Q3 Q4 电机状态
ON OFF OFF ON 正转
OFF ON ON OFF 反转
OFF OFF OFF OFF 自由停止(滑行)
ON ON OFF OFF 制动(短路刹车)

这里有个关键点:绝对不能同时打开Q1和Q2,或者Q3和Q4。为什么?因为那等于把电源正负极直接短路,电流瞬间大到能炸管。我见过一个新手,代码里写了个bug,两个管子同时导通,MOSFET直接冒烟,那味道...嗯,你懂的。

二、PWM调速原理

电机调速,最常用的方法就是PWM(脉宽调制)。说白了,就是给电机通一会电,断一会电,通过调整通电时间比例来控制平均电压。

占空比 = 高电平时间 / 周期。占空比越大,平均电压越高,电机转得越快。

举个例子:

// 假设PWM频率为20kHz,周期50us
// 占空比50%,高电平25us,低电平25us
TIM->CCR1 = 500;  // 占空比50%
TIM->CCR1 = 750;  // 占空比75%
TIM->CCR1 = 250;  // 占空比25%

我个人习惯用20kHz左右的PWM频率。频率太低,电机会发出刺耳的啸叫声(人耳能听到的20Hz-20kHz)。频率太高,MOSFET的开关损耗会急剧增加。20kHz刚好超出人耳范围,又不至于让管子太烫。

你想想看,如果PWM频率选1kHz,电机转起来会"嗡嗡"响,听着就烦。我有个项目,客户非要静音,最后我把频率调到40kHz,虽然MOSFET温度高了5度,但声音确实没了。

三、死区时间与保护

死区时间,这是新手最容易忽略的地方。什么叫死区?就是上下两个管子切换时,故意插入一段"两个都关断"的时间。

为什么会这样?因为MOSFET的开关不是瞬间完成的。关断需要时间,导通也需要时间。如果Q1还没完全关断,Q2就导通了,那就直通短路了。

我建议死区时间设置在100ns-500ns之间,具体看你的MOSFET型号和驱动电路。比如:

// STM32高级定时器死区配置示例
TIM_BreakAndDeadTimeConfigTypeDef deadTimeConfig;
deadTimeConfig.OffStateRunMode = TIM_OSS_DISABLE;
deadTimeConfig.OffStateIDLEMode = TIM_OSS_DISABLE;
deadTimeConfig.LockLevel = TIM_LOCK_OFF;
deadTimeConfig.DeadTime = 200;  // 200个时钟周期,假设时钟72MHz,约2.78us
deadTimeConfig.BreakState = TIM_BREAK_DISABLE;
deadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
deadTimeConfig.BreakFilter = 0;
HAL_TIMEx_ConfigBreakDeadTime(&htim1, &deadTimeConfig);

我曾经在一个项目中,死区设得太小(只有50ns),结果MOSFET在高温下开关速度变慢,偶尔出现直通。后来我把死区加大到300ns,问题就解决了。记住:死区宁大勿小,大一点只是效率稍微降低,小了可能直接炸管。

警告:死区时间不是越大越好。死区太大,会导致电机在低速时扭矩波动明显,甚至出现"步进"现象。一般控制在1-3us以内比较合理。

四、MOSFET选型要点

选MOSFET,说白了就是看几个关键参数。我每次选型都会盯着这几个数看:

  • Vds(漏源击穿电压):至少要留20%余量。比如电机供电12V,选30V以上的管子。我习惯留50%余量,12V系统用40V或60V的管子。
  • Id(漏极电流):电机堵转电流最大,按这个值选。一般留2-3倍余量。
  • Rds(on)(导通电阻):这个值越小越好。Rds(on)越大,管子发热越严重。我一般选10mΩ以下的。
  • Qg(栅极电荷):这个影响开关速度。Qg越小,开关越快,开关损耗越低。

给你个实际选型参考:

参数 推荐值 说明
Vds ≥ 2 × 电源电压 考虑尖峰电压
Id ≥ 3 × 电机堵转电流 考虑启动和堵转
Rds(on) < 10mΩ @ Vgs=10V 越低越好
Qg < 50nC 保证开关速度
小技巧:选型时别忘了看Vgs(th)(阈值电压)。如果你的MCU是3.3V供电,要选逻辑电平型MOSFET,保证3.3V时能完全导通。我吃过这个亏,用普通MOSFET,3.3V驱动根本打不开,电机转不起来。

嗯,说到这儿,我想起一个项目。当时用了一款号称"大电流"的MOSFET,参数表上写着Id=50A,结果实际跑3A就烫得不行。后来一查,那个50A是在Tc=25°C、散热条件极好的情况下测的。实际应用中,如果不加散热片,能跑5A就不错了。所以看参数表要留个心眼,实际应用中的电流能力通常只有标称值的1/3到1/5

最后总结一句:直流电机驱动,H桥是骨架,PWM是灵魂,死区是保险,MOSFET是肌肉。把这四个点吃透了,大部分电机驱动问题你都能搞定。