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空闲周期插入测试脉冲,测量实际电压响应,反推出死区时间。然后实时更新补偿参数。这个方法在高端伺服里用得比较多。

下面这张图总结了死区时间设置与补偿的完整流程:

死区时间设置与补偿流程 死区时间设置与补偿技术流程 1. 器件选型与参数提取 2. 计算死区时间 3. 评估波形畸变程度 畸变可接受? 是 4. 直接使用当前死区 否 5. 选择补偿方法 平均电压补偿 脉冲宽度补偿 自适应补偿 补偿后需重新评估波形质量,必要时迭代调整死区时间或补偿参数

我的建议:如果项目对成本敏感,用平均电压补偿法就够了。如果追求高性能,上自适应补偿。但不管用哪种方法,一定要在过零点附近做特殊处理——这是最容易出问题的地方。

死区时间设置这件事,说白了就是在安全性和波形质量之间找平衡。器件选型时留够余量,计算时留足裕度,补偿时做精细处理。做到这三点,死区问题基本可控。