4. 基于电流极性的死区补偿:电流极性检测方法、补偿电压计算、过零点处理
死区补偿这个话题,说实话,做电机控制的工程师早晚都得面对。你想想看,死区时间一加,输出电压波形就畸变了,谐波就进来了。我刚开始做这个的时候,总觉得死区就那么几微秒,能有多大影响?结果一测电流波形,好家伙,五六次谐波全冒出来了。
那怎么补?最直接的办法就是根据电流极性来补。说白了,就是判断电流是流进负载还是流出负载,然后反向加一个补偿电压,把死区吃掉的那部分电压补回来。今天我就把这块掰开了讲清楚。
4.1 电流极性检测方法
电流极性检测是死区补偿的第一步,也是最容易出问题的一步。我见过不少工程师在这上面栽跟头。
常用的检测方法有这么几种:
- 直接采样法:用电流传感器(霍尔、分流器)直接读电流值,然后判断正负。简单粗暴,但噪声大。
- 过零比较法:用硬件比较器把电流信号转成方波,通过电平高低判断极性。速度快,但有延迟。
- 软件滤波法:采样后做低通滤波,再判断极性。抗噪好,但会引入相位滞后。
我个人习惯的做法是:硬件比较 + 软件滤波。硬件比较器负责快速给出极性方向,软件再做一个滑动平均滤波,把毛刺去掉。这样既保证了响应速度,又不会因为噪声误判。
4.2 补偿电压计算
极性判断完了,接下来就是算补偿电压。这个公式其实不复杂:
V_comp = -sign(I) × V_dead × (T_dead / T_sw)
其中:
sign(I)是电流极性,正电流为 +1,负电流为 -1V_dead是直流母线电压T_dead是死区时间T_sw是开关周期
嗯,这里要注意:补偿电压的方向和电流极性是相反的。电流为正的时候,死区会让输出电压偏低,所以我们要加一个正的补偿;电流为负的时候,死区会让输出电压偏高,所以要加一个负的补偿。
我在项目中遇到过一个问题:补偿电压算出来之后直接加到调制波上,结果发现低速的时候补偿过头了。后来排查发现,是死区时间设置得偏大,补偿量也跟着偏大。所以我的建议是:补偿量最好做在线标定,根据实际工况微调。
4.3 过零点处理
过零点,是死区补偿里最头疼的问题。为什么?因为电流在过零的时候,极性判断会变得非常模糊。稍微有点噪声,极性就来回跳,补偿电压也跟着来回跳,结果电流波形在过零点附近出现毛刺,甚至震荡。
我早期做的一个项目,电机在低速轻载的时候,电流波形在过零点附近全是毛刺,谐波含量反而比不补偿还高。后来我总结了几种处理过零点的方法:
| 方法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 滞环比较法 | 设置一个电流阈值窗口,窗口内不改变极性 | 实现简单,抑制抖动 | 阈值设置不当会影响补偿效果 |
| 线性过渡法 | 过零点附近补偿量线性减小到零 | 过渡平滑,无突变 | 需要精确知道过零点位置 |
| 预测补偿法 | 根据电流变化率预测过零点,提前切换 | 响应快,补偿效果好 | 算法复杂,依赖模型精度 |
我个人最常用的是滞环比较法。设置一个 ±5% 额定电流的滞环窗口,电流在这个窗口内的时候,保持上一次的极性不变。这样既简单又有效,毛刺基本就消失了。
4.4 整体补偿流程
把上面三步串起来,就是一个完整的死区补偿流程。我画了一张图,方便你理解:
整个流程走下来,你会发现:电流极性检测是基础,过零点处理是关键,补偿电压计算是核心。三步缺一不可。