4、PWM死区时间设置:死区时间的作用、死区时间对波形的影响、死区时间的计算方法、死区时间补偿技术
死区时间,说白了就是给上下桥臂同时关断的那段“安全缓冲期”。我刚开始接触伺服驱动时,觉得这东西就是浪费开关周期,总想把它设到最小。直到有一次在实验室亲眼看到上下管直通炸管——那声音,嗯,至今难忘。
4.1 死区时间的作用
伺服驱动器的逆变桥,上下两个功率管绝对不能同时导通。一旦同时导通,母线电压直接短路,电流瞬间飙升,管子几微秒内就烧了。
死区时间的作用就两个:
- 防止直通短路:给一个管子的关断和另一个管子的开通之间留出时间差,确保先关断、后开通。
- 容忍开关延迟:IGBT或MOSFET的关断时间通常比开通时间长。死区时间就是用来“等”关断完成的。
核心原则:死区时间 = 安全冗余 + 器件延迟 + 裕量。少了炸管,多了失真,这是个平衡活。
4.2 死区时间对波形的影响
死区时间不是白给的,它会对输出波形产生实实在在的影响。我做过一个项目,死区设了3μs,结果电机在低速运行时电流波形明显畸变,转矩脉动大得吓人。
主要影响有这几方面:
| 影响维度 | 具体表现 | 严重程度 |
|---|---|---|
| 电压损失 | 死区期间输出电压被钳位到母线或地,实际输出电压低于理想值 | 中 |
| 电流畸变 | 电流过零点附近出现“平顶”或“台阶”,波形不再正弦 | 高 |
| 转矩脉动 | 电流谐波导致电机输出转矩波动,低速时尤其明显 | 高 |
| 噪声增加 | 电流谐波注入电机,产生高频电磁噪声 | 中 |
| 效率下降 | 死区引起的电压误差导致电流相位偏移,增加铜耗 | 低 |
为什么会这样?死区时间内,电流通过续流二极管续流,输出电压完全取决于电流方向。电流为正时,输出被拉到负母线;电流为负时,输出被拉到正母线。这就造成了输出电压与理想PWM之间的偏差。
注意:死区时间越大,电压损失越严重,电流畸变越明显。我曾经在5μs死区下测到过15%的电压误差,低速时电机几乎无法平稳运行。
4.3 死区时间的计算方法
死区时间不是拍脑袋定的,得根据器件参数和系统要求来算。我个人习惯用这个公式:
T_dead = T_off_max - T_on_min + T_margin
其中:
- T_off_max:功率管最大关断延迟时间(从驱动信号撤去到完全关断)
- T_on_min:功率管最小开通延迟时间(从驱动信号给出到开始导通)
- T_margin:安全裕量,通常取0.5~1μs
举个例子,我常用的某款IGBT模块,数据手册上写着:
| 参数 | 典型值 | 最大值 |
|---|---|---|
| 开通延迟 t_on | 0.8μs | 1.2μs |
| 关断延迟 t_off | 1.5μs | 2.0μs |
代入公式:
T_dead = 2.0μs - 0.8μs + 0.5μs = 1.7μs
实际工程中,我会取整到2μs,再留点余量。如果开关频率是10kHz,死区占整个周期的比例是:
死区占比 = 2μs / 100μs = 2%
这个比例还算合理。如果超过5%,就得考虑换器件或者用补偿技术了。
经验值参考:MOSFET驱动一般设0.5~1.5μs,IGBT驱动设1.5~3μs。高频应用(>20kHz)尽量选快恢复器件,死区可以压到0.5μs以下。
4.4 死区时间补偿技术
死区时间带来的电压误差,说白了就是一段“丢失的电压脉冲”。补偿的思路很简单:把丢掉的电压补回来。
常用的补偿方法有这几种:
4.4.1 平均电压补偿法
根据电流方向,在PWM占空比上叠加一个修正量。电流为正时,增加占空比;电流为负时,减小占空比。修正量的大小就是死区时间对应的电压值。
D_comp = D_ref + sign(I) * (T_dead / T_sw)
这个方法实现简单,但精度一般。我在一个低端伺服项目里用过,电流畸变从12%降到了5%左右,够用。
4.4.2 脉冲宽度补偿法
直接在PWM脉冲的上升沿或下降沿做微调。电流为正时,把上升沿提前;电流为负时,把下降沿推迟。补偿量精确到PWM定时器的时钟周期。
这个方法精度高,但需要高分辨率定时器。我建议用FPGA或者带高精度PWM的MCU来实现。
4.4.3 电流极性检测法
补偿的前提是知道电流方向。但电流过零点附近,方向判断容易出错。我曾经踩过这个坑——过零点附近补偿方向搞反,反而放大了畸变。
解决办法:加滞环判断,或者用观测器估算电流方向。我个人倾向于用后者,更稳定。
避坑指南:我曾经在过零点附近用简单的符号判断做补偿,结果低速时电流波形出现了“毛刺”。后来改成带滞环的极性检测,毛刺消失了。滞环宽度一般取额定电流的2%~5%。
4.4.4 自适应补偿法
死区时间会随温度、母线电压变化。自适应补偿就是实时检测死区效应,动态调整补偿量。实现起来复杂,但效果最好。
我见过一种做法:在PWM空闲周期插入测试脉冲,测量实际电压响应,反推出死区时间。然后实时更新补偿参数。这个方法在高端伺服里用得比较多。
下面这张图总结了死区时间设置与补偿的完整流程:
我的建议:如果项目对成本敏感,用平均电压补偿法就够了。如果追求高性能,上自适应补偿。但不管用哪种方法,一定要在过零点附近做特殊处理——这是最容易出问题的地方。
死区时间设置这件事,说白了就是在安全性和波形质量之间找平衡。器件选型时留够余量,计算时留足裕度,补偿时做精细处理。做到这三点,死区问题基本可控。