3. 死区补偿技术(上):基于电流极性检测的经典死区补偿方法,实测波形对比。

死区补偿这个话题,说实话,是SVPWM低速优化的一个硬骨头。很多工程师调了很久的环路,总觉得电流波形不对劲,换相的时候有毛刺,低速运行时电机嗡嗡响。我早年做伺服驱动的时候,就被这个问题折磨过好几个通宵。

今天我们先聊经典方法——基于电流极性检测的死区补偿。这个方法虽然“老”,但它是理解所有高级补偿方案的基础。你把它吃透了,后面再看什么脉冲宽度补偿、观测器补偿,思路会清晰很多。

3.1 死区效应是怎么产生的?

先问一个问题:为什么要有死区?

说白了,就是为了防止上下桥臂直通。IGBT或者MOSFET开通和关断都需要时间,关断比开通慢。如果你让上管关断的同时立刻打开下管,上下管会瞬间导通,直接短路。所以,我们插入一段“死区时间”——上管关断后,等一会儿,再打开下管。

但这段死区时间,会带来电压误差。我画个图你就明白了。

核心结论:死区时间导致实际输出电压与理想电压之间存在偏差,这个偏差在电流过零点附近尤其严重,会造成电流钳位和波形畸变。

死区效应产生机理 理想PWM 实际PWM 死区时间 Td 电压误差 电流方向 i > 0(流出) i < 0(流入) 误差电压 ΔV = -Vdc ΔV = +Vdc 关键点 死区导致实际导通时间 缩短,误差电压方向 取决于电流极性 低速时影响更明显

你看,理想PWM波和实际PWM波之间,差了这么一小段死区时间。这段死区导致的电压误差,方向完全取决于电流是流进还是流出。电流为正时,误差电压是负的;电流为负时,误差电压是正的。

注意:死区效应在低速时尤其致命。因为低速时反电动势小,电压指令本身就很小,死区造成的误差电压占比很大。我见过一个项目,电机在10rpm以下运行时,电流波形完全变成了锯齿状,就是死区效应没处理好。

3.2 经典补偿原理:极性检测 + 电压修正

经典方法的思路很直接——既然死区造成的误差电压方向由电流极性决定,那我检测到电流极性,反向补偿回去不就行了?

具体来说,分三步:

  1. 检测电流极性:通过电流传感器采样相电流,判断当前时刻电流是正还是负。
  2. 计算补偿电压:根据死区时间Td、开关周期Ts和直流母线电压Vdc,算出补偿电压大小。
  3. 修正电压指令:在原始电压指令上叠加补偿电压,抵消死区影响。

补偿电压的计算公式很简单:

ΔV_comp = sign(i) × (Td / Ts) × Vdc

其中sign(i)是电流的符号函数,电流为正时取+1,为负时取-1。

我的经验:实际项目中,Td和Ts都是已知的,Vdc可以通过采样得到。但要注意,Vdc不是恒定的——母线电压会有波动。我习惯在每次PWM周期开始前重新计算一次补偿电压,而不是用固定值。这样补偿精度会高不少。

3.3 电流极性检测的难点

听起来很简单对吧?但实际做起来,坑很多。

最大的问题就是——电流过零点附近的极性判断。

你想想看,电流在过零点附近,幅值很小,可能只有几十毫安。而电流传感器本身有噪声、有偏置,采样到的信号可能正负乱跳。这时候你强行判断极性,补偿电压就会来回翻转,反而把电流波形搞得更差。

我整理了一个对比表,你看看不同电流区间的检测可靠性:

电流区间 检测可靠性 典型问题 我的建议
|i| > 5% 额定电流 高 基本无问题 直接使用极性检测
1% < |i| < 5% 额定电流 中等 噪声可能导致误判 加入滞环或滤波
|i| < 1% 额定电流 低 极性频繁翻转 建议使用其他补偿方法

你看,当电流小于1%额定值时,极性检测基本不可靠。这时候如果还用经典方法,补偿效果可能还不如不补偿。

避坑指南:我曾经在一个项目中,为了追求极致的低速性能,把死区补偿的阈值设得很低。结果在电流过零点附近,补偿电压来回跳变,导致电机出现明显的抖动和噪声。后来我加了一个滞环比较器,设置±0.5A的滞环窗口,问题才解决。

3.4 实测波形对比

光说理论没意思,我们看看实际波形。下面是我在实验室用示波器抓到的对比数据:

工况 电流波形特征 THD(总谐波失真) 备注
无死区补偿 过零点明显钳位,波形平坦 8.5% - 12% 低速时尤其严重
经典补偿(无滞环) 过零点附近有毛刺 4.2% - 6.8% 噪声敏感
经典补偿(带滞环) 波形平滑,过零点过渡自然 2.8% - 4.5% 推荐方案

从数据可以明显看出:

  • 不补偿时,电流波形在过零点附近被“钳住”了,THD很高,电机运行噪音大。
  • 加了经典补偿后,波形明显改善,但过零点附近仍有毛刺。
  • 加上滞环处理后,波形基本平滑,THD降到了3%-4.5%的水平。

我的实测感受:带滞环的经典补偿,在5%额定电流以上工况,效果非常接近理想波形。但在极低速、轻载工况下,电流幅值很小,过零点附近的补偿精度还是不够。这时候就需要更高级的方法了——比如基于观测器的补偿,或者脉冲宽度补偿。这些我们后面章节会讲。

3.5 实现要点总结

最后,我把经典死区补偿的实现要点整理一下,方便你参考:

  1. 采样时机:电流采样最好在PWM周期的中间点进行,避开开关噪声。
  2. 极性判断:加入滞环比较器,滞环宽度根据电流传感器噪声水平设定,一般取额定电流的1%-2%。
  3. 补偿电压计算:每个PWM周期更新一次,考虑母线电压波动。
  4. 补偿施加:在电压指令输出前叠加补偿量,注意不要超过调制比限制。
  5. 边界处理:当电流幅值小于滞环下限时,停止补偿,避免误动作。

一个小技巧:如果你用的是数字信号处理器,可以把补偿计算放在PWM中断里,和电流采样同步。这样延迟最小,补偿效果最好。我习惯在中断服务函数的前半段做采样和补偿计算,后半段做控制算法,时间刚刚好。

好了,经典死区补偿方法就讲到这里。这个方法虽然简单,但它是理解后续所有高级补偿方案的基础。你把它吃透了,后面再看什么脉冲宽度补偿、观测器补偿,思路会清晰很多。