直流电机驱动: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,问题就解决了。记住:死区宁大勿小,大一点只是效率稍微降低,小了可能直接炸管。
四、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 | 保证开关速度 |
嗯,说到这儿,我想起一个项目。当时用了一款号称"大电流"的MOSFET,参数表上写着Id=50A,结果实际跑3A就烫得不行。后来一查,那个50A是在Tc=25°C、散热条件极好的情况下测的。实际应用中,如果不加散热片,能跑5A就不错了。所以看参数表要留个心眼,实际应用中的电流能力通常只有标称值的1/3到1/5。
最后总结一句:直流电机驱动,H桥是骨架,PWM是灵魂,死区是保险,MOSFET是肌肉。把这四个点吃透了,大部分电机驱动问题你都能搞定。