4. 基于电流极性的死区补偿:电流极性检测方法、补偿电压计算、过零点处理

死区补偿这个话题,说实话,做电机控制的工程师早晚都得面对。你想想看,死区时间一加,输出电压波形就畸变了,谐波就进来了。我刚开始做这个的时候,总觉得死区就那么几微秒,能有多大影响?结果一测电流波形,好家伙,五六次谐波全冒出来了。

那怎么补?最直接的办法就是根据电流极性来补。说白了,就是判断电流是流进负载还是流出负载,然后反向加一个补偿电压,把死区吃掉的那部分电压补回来。今天我就把这块掰开了讲清楚。

4.1 电流极性检测方法

电流极性检测是死区补偿的第一步,也是最容易出问题的一步。我见过不少工程师在这上面栽跟头。

常用的检测方法有这么几种:

  • 直接采样法:用电流传感器(霍尔、分流器)直接读电流值,然后判断正负。简单粗暴,但噪声大。
  • 过零比较法:用硬件比较器把电流信号转成方波,通过电平高低判断极性。速度快,但有延迟。
  • 软件滤波法:采样后做低通滤波,再判断极性。抗噪好,但会引入相位滞后。

我个人习惯的做法是:硬件比较 + 软件滤波。硬件比较器负责快速给出极性方向,软件再做一个滑动平均滤波,把毛刺去掉。这样既保证了响应速度,又不会因为噪声误判。

小技巧: 采样电流的时候,尽量避开开关管开关瞬间的尖峰。我一般会在PWM的中间点采样,那个时刻电流最平稳。

4.2 补偿电压计算

极性判断完了,接下来就是算补偿电压。这个公式其实不复杂:

V_comp = -sign(I) × V_dead × (T_dead / T_sw)

其中:

  • sign(I) 是电流极性,正电流为 +1,负电流为 -1
  • V_dead 是直流母线电压
  • T_dead 是死区时间
  • T_sw 是开关周期

嗯,这里要注意:补偿电压的方向和电流极性是相反的。电流为正的时候,死区会让输出电压偏低,所以我们要加一个正的补偿;电流为负的时候,死区会让输出电压偏高,所以要加一个负的补偿。

我在项目中遇到过一个问题:补偿电压算出来之后直接加到调制波上,结果发现低速的时候补偿过头了。后来排查发现,是死区时间设置得偏大,补偿量也跟着偏大。所以我的建议是:补偿量最好做在线标定,根据实际工况微调。

关键点: 补偿电压不是越大越好。补多了,电流波形反而会变差,甚至引起震荡。我一般会把补偿量限制在调制波幅值的5%以内。

4.3 过零点处理

过零点,是死区补偿里最头疼的问题。为什么?因为电流在过零的时候,极性判断会变得非常模糊。稍微有点噪声,极性就来回跳,补偿电压也跟着来回跳,结果电流波形在过零点附近出现毛刺,甚至震荡。

我早期做的一个项目,电机在低速轻载的时候,电流波形在过零点附近全是毛刺,谐波含量反而比不补偿还高。后来我总结了几种处理过零点的方法:

方法 原理 优点 缺点
滞环比较法 设置一个电流阈值窗口,窗口内不改变极性 实现简单,抑制抖动 阈值设置不当会影响补偿效果
线性过渡法 过零点附近补偿量线性减小到零 过渡平滑,无突变 需要精确知道过零点位置
预测补偿法 根据电流变化率预测过零点,提前切换 响应快,补偿效果好 算法复杂,依赖模型精度

我个人最常用的是滞环比较法。设置一个 ±5% 额定电流的滞环窗口,电流在这个窗口内的时候,保持上一次的极性不变。这样既简单又有效,毛刺基本就消失了。

避坑指南: 我曾经试过把滞环窗口设得太大,结果电流在轻载的时候补偿一直不动作,死区效应完全没被抑制。所以滞环窗口的大小要根据实际电流噪声水平来调,一般取额定电流的3%~5%比较合适。

4.4 整体补偿流程

把上面三步串起来,就是一个完整的死区补偿流程。我画了一张图,方便你理解:

基于电流极性的死区补偿流程 电流采样 极性判断 过零点处理 补偿电压计算 叠加到调制波 注意 过零点处理是关键步骤 处理不好,补偿效果会大打折扣 建议使用滞环比较法

整个流程走下来,你会发现:电流极性检测是基础,过零点处理是关键,补偿电压计算是核心。三步缺一不可。

总结一下: 死区补偿不是万能的,但如果不做,谐波问题一定会找上门。我建议你在调试的时候,先用示波器看电流波形,确认过零点附近有没有毛刺,再决定用哪种过零点处理方法。实践出真知,这话一点不假。