4. 死区补偿基础:死区时间对输出电压的影响、传统死区补偿方法、死区补偿的局限性

各位工程师朋友,欢迎来到第四章。前几章我们把SVPWM的矢量合成、扇区判断、作用时间计算都捋了一遍。但有个问题我一直憋着没说——死区时间。

你可能会想,死区不就是为了防止上下桥臂直通,加的那点延时吗?能有多大影响?

嗯,我当年也是这么想的。直到有一次调试一台7.5kW的伺服驱动器,电机在低速运行时电流波形像锯齿一样,噪声大得离谱。我查了三天,最后发现罪魁祸首就是死区效应。从那以后,我再也不敢小看这“几微秒”了。

4.1 死区时间对输出电压的影响

先说说死区是怎么来的。IGBT或MOSFET从导通到关断需要时间,如果上管还没完全关断,下管就导通了,那就直接炸管子。所以必须在开关切换时插入一段“共同关断”的时间,这就是死区时间。

死区时间通常设为1~5μs,具体看功率器件的开关速度。但这段“什么都不做”的时间,会给输出电压带来什么影响?

核心结论:死区时间会导致输出电压基波幅值降低,并引入低次谐波,尤其是3、5、7次谐波。在低速轻载时,电流波形会出现明显的“平顶”现象。

我们来定量分析一下。假设一个PWM周期内,理想情况下输出电压的平均值为:

V_ideal = (Ton / Tpwm) * Vdc

加入死区时间Td后,实际导通时间会发生变化。具体来说:

  • 当电流为正(流出桥臂)时:死区时间内电流通过下管续流二极管续流,输出电压被钳位到负母线。实际导通时间减少了Td。
  • 当电流为负(流入桥臂)时:死区时间内电流通过上管续流二极管续流,输出电压被钳位到正母线。实际导通时间增加了Td。

所以,实际输出电压可以写成:

V_actual = V_ideal - sign(I) * (Td / Tpwm) * Vdc

其中sign(I)是电流的极性。你看,死区效应本质上是一个与电流极性相关的电压误差。这个误差电压的幅值就是:

ΔV = (Td / Tpwm) * Vdc

举个例子,Td=3μs,Tpwm=100μs(10kHz开关频率),Vdc=300V,那么ΔV=9V。在低速时,这个误差电压相对于电机反电动势来说相当可观,会导致严重的电流畸变。

我个人习惯:在设计阶段,我会先估算死区误差电压占额定电压的比例。如果超过1%,就必须做死区补偿。否则电机在低速运行时,转矩脉动会让你头疼。

4.2 传统死区补偿方法

既然死区效应这么讨厌,那怎么补偿呢?传统方法主要有两种:脉冲宽度补偿和电流极性检测补偿。

4.2.1 脉冲宽度补偿

这个方法思路很直接——既然死区让导通时间减少了Td,那我就在PWM波里主动加宽Td不就行了?

具体做法是:

  1. 根据电流极性判断补偿方向
  2. 电流为正时,在PWM上升沿提前Td导通
  3. 电流为负时,在PWM下降沿延迟Td关断

说白了,就是让实际导通时间等于理想导通时间。实现起来也不复杂,在DSP或FPGA里修改比较寄存器的值就行。

// 伪代码示例:脉冲宽度补偿
if (current > 0) {
    CMPA = CMPA_ideal - Td_ticks;  // 提前导通
} else if (current < 0) {
    CMPA = CMPA_ideal + Td_ticks;  // 延迟关断
} else {
    CMPA = CMPA_ideal;             // 零电流时不补偿
}

注意:补偿量不能超过PWM周期的一半,否则会导致最小脉宽问题。我曾经遇到过补偿过度,导致PWM脉宽小于功率管的最小导通时间,结果驱动器直接保护了。

4.2.2 电流极性检测补偿

脉冲宽度补偿的关键在于电流极性判断。但电流极性怎么获取?最直接的方法是用电流传感器采样。

实际工程中,电流极性检测有几个坑:

  • 采样噪声:电流传感器在零点附近噪声很大,容易误判极性
  • 过零点振荡:电流过零时,极性频繁跳变,导致补偿量来回切换
  • 采样延迟:从采样到计算出补偿量,中间有延迟,可能错过最佳补偿时机

我见过不少工程师在电流过零处加滞环,比如设置±0.5A的死区带。电流在这个范围内就不补偿,出去了再补偿。这个方法简单有效,但会引入少量补偿盲区。

补偿方法 优点 缺点
脉冲宽度补偿 实现简单,计算量小 依赖电流极性判断精度
电流极性检测补偿 补偿效果直接 过零点处理困难,受采样噪声影响大

4.3 死区补偿的局限性

传统方法虽然有效,但远非完美。我在实际项目中踩过不少坑,这里跟大家分享一下。

4.3.1 电流过零点的补偿困境

这是最大的痛点。电流过零时,极性不确定,补偿量无法准确施加。结果就是电流波形在过零处出现“台阶”或“毛刺”。

你想想看,电机在低速轻载时,电流本来就小,过零点占的比例很大。这时候死区补偿基本失效,电流畸变特别明显。

4.3.2 多相耦合效应

三相逆变器里,死区补偿是分相做的。但三相电流通过电机中性点耦合在一起,一相的补偿会影响另外两相的电流。这种耦合效应在高速时尤其明显。

我记得有一次调试,A相补偿得好好的,B相和C相的电流反而更差了。后来才发现是忽略了相间耦合。

4.3.3 参数敏感性

死区补偿的精度高度依赖几个参数:

  • 死区时间Td的精确值(实际死区可能比设定值大或小)
  • 直流母线电压Vdc的波动
  • 功率管导通压降和续流二极管压降

这些参数随温度、负载变化,很难精确获取。补偿量算得不准,效果自然打折扣。

避坑指南:我曾经在批量生产时发现,同一批驱动器,有的补偿效果好,有的效果差。查了半天,发现是IGBT的开关特性有离散性,导致实际死区时间不一致。后来我们在产线上增加了死区时间自校准环节,问题才解决。

4.3.4 高频开关下的补偿精度

开关频率越高,PWM周期越短,死区时间占的比例越大。比如20kHz开关频率下,Tpwm=50μs,3μs的死区就占了6%。这时候补偿精度要求很高,稍微偏差一点,误差就很大。

而且高频下,电流采样和PWM更新的延迟问题更突出。你采到的电流是上一个周期的,用来补偿下一个周期,中间有滞后。这种滞后在高动态响应时会导致补偿相位错误。

下面这张图总结了死区补偿的核心问题和传统方法的局限性:

死区补偿知识体系与核心问题 死区补偿 死区时间的影响 输出电压基波幅值降低 引入3、5、7次低次谐波 低速轻载时电流波形平顶 传统补偿方法 脉冲宽度补偿 电流极性检测补偿 滞环过零处理 补偿局限性 过零点补偿困境 多相耦合效应 参数敏感性 高频下补偿精度不足 核心矛盾:补偿精度 vs 工程可实现性 传统方法在低速轻载和高频场景下效果有限

看到这里,你可能会问:传统方法这么多问题,那有没有更好的办法?

当然有。下一节我们会深入讨论基于电压误差观测的死区补偿方法,以及如何结合SVPWM的矢量特性做更精细的补偿。这些方法能有效解决过零点困境和参数敏感性问题。

不过在那之前,我建议你先把自己项目里的死区参数摸清楚。用示波器抓一下实际死区时间,测一下不同温度下的变化。有了这些基础数据,后面的补偿算法才能有的放矢。

一个小建议:如果你现在用的是传统死区补偿,可以先试试在电流过零处加一个自适应滞环。滞环宽度根据电流幅值动态调整,电流大时滞环小,电流小时滞环大。这个方法不需要改硬件,效果提升很明显。