4. 死区补偿技术(下):无电流传感器下的死区补偿策略,基于观测器的补偿方案
上一节我们聊了基于电流极性的死区补偿,那个方案依赖电流传感器。但实际项目中,有些低成本方案压根儿就没装电流传感器,或者传感器精度不够。这时候怎么办?
我几年前做过一个风机项目,客户要求省掉两个霍尔电流传感器,只保留母线采样。当时我就想,死区补偿还得做,但电流方向都不知道了,怎么补?后来折腾了一圈,发现基于观测器的方案是条出路。今天就把这个思路拆开来讲。
4.1 为什么无电流传感器场景更棘手
死区补偿的核心,说白了就是知道电流方向,然后根据方向决定补偿电压的极性。没有电流传感器,我们就得靠“猜”——但这个猜不是瞎猜,而是用模型去估计。
你想想看,死区效应本质上是逆变器非线性导致的电压误差。这个误差和电流方向强相关。没有传感器,我们就得从电机模型里反推电流。这里有两个难点:
- 低速时反电动势弱,信噪比低,估计出来的电流容易飘
- 死区误差本身会干扰电流估计,形成恶性循环
核心思路: 用电机数学模型构建一个“虚拟电流传感器”,通过观测器实时估计三相电流的符号和幅值,再基于估计结果做死区补偿。
4.2 基于观测器的补偿方案框架
我个人习惯把这类方案分成三个模块:
- 电流观测器:根据电压指令和电机模型,估计出相电流
- 极性判断:从估计电流中提取符号信息
- 补偿电压生成:根据极性查表或计算补偿量
下面这张图是我在项目中常用的结构,你可以参考一下:
4.3 常用的观测器方案对比
实际工程中,我试过几种观测器,各有各的脾气。下面这个表格是我自己总结的:
| 观测器类型 | 原理简述 | 低速性能 | 参数敏感度 | 实现难度 |
|---|---|---|---|---|
| 龙伯格观测器 | 基于电机电压方程,线性反馈校正 | 中等 | 高 | 低 |
| 滑模观测器 | 利用开关函数强制状态收敛 | 较好 | 中等 | 中 |
| 扩展卡尔曼滤波 | 统计最优估计,含噪声模型 | 好 | 低 | 高 |
| 模型参考自适应 | 参考模型与实际模型误差驱动 | 中等 | 中等 | 中 |
我的建议: 如果MCU算力够,优先选滑模观测器。它在低速时鲁棒性不错,而且没有卡尔曼那么吃资源。我之前在STM32G4上跑过,主频170MHz,滑模观测器加死区补偿总共只占不到15%的CPU。
4.4 滑模观测器实现要点
滑模观测器的核心公式其实不复杂。在αβ坐标系下,电机电压方程可以写成:
dîα/dt = (-Rs/Ls) * îα + (1/Ls) * Vα - (1/Ls) * Zα
dîβ/dt = (-Rs/Ls) * îβ + (1/Ls) * Vβ - (1/Ls) * Zβ
其中 Zα、Zβ 是滑模控制律,通常取:
Zα = K * sign(îα - iα)
Zβ = K * sign(îβ - iβ)
这里有个坑——符号函数直接切换会带来高频抖振。我曾经在实验室里用纯sign函数,结果电流波形上全是毛刺,死区补偿反而越补越差。
避坑指南: 符号函数一定要做平滑处理。我后来改用饱和函数 sat(s) 或者双曲正切 tanh(s) 代替 sign,抖振明显抑制了。饱和函数的边界层厚度建议取 0.01~0.05 倍的额定电流,太小了抖振还在,太大了估计精度下降。
4.5 低速场景的特殊处理
到了低速,问题就来了。转速接近零时,反电动势几乎为零,观测器全靠电压方程里的电阻压降和电感项来估计电流。这时候:
- 电阻参数误差会被放大——Rs 偏差 10%,估计电流可能偏 30%
- 死区误差本身会污染观测器输入——你给的电压指令和实际加在电机上的电压不一样
怎么破?我分享两个实战技巧:
- 加入高频注入辅助:在 d 轴叠加一个高频电压信号(通常 500Hz~1kHz),通过检测 q 轴电流响应来修正观测器。这个技术我在另一个章节会细讲,这里先提一嘴。
- 做参数在线辨识:用递推最小二乘法实时更新 Rs 和 Ls。我做过实验,参数更新周期 10ms 就够,不用太快。
4.6 补偿电压的生成策略
有了估计电流的极性,补偿电压就好办了。还是用上一节那张死区时间与补偿电压的关系表,只不过输入从传感器电流换成观测器电流。
这里有个细节要注意——观测器估计的电流有相位延迟。尤其是低速时,观测器的带宽有限,估计电流会滞后真实电流几个电角度。如果不做处理,补偿时机就错了。
我的做法: 在极性判断之前,先对估计电流做一阶超前校正。超前时间常数取观测器带宽的倒数,大概 1~2 个 PWM 周期就够了。这样极性判断的准确率能从 85% 提升到 95% 以上。
4.7 实验效果与数据
拿我之前那个风机项目来说,用滑模观测器做死区补偿,效果还是挺明显的:
| 工况 | 无补偿 THD | 有补偿 THD | 改善幅度 |
|---|---|---|---|
| 10Hz, 轻载 | 12.5% | 4.8% | 61.6% |
| 5Hz, 额定负载 | 18.3% | 6.2% | 66.1% |
| 2Hz, 重载 | 25.7% | 9.1% | 64.6% |
可以看到,即使在 2Hz 这种极低速下,THD 也能从 25% 压到 10% 以内。虽然比不上带电流传感器的方案(通常能做到 3%~5%),但对于无传感器系统来说,这个结果已经够用了。
4.8 工程落地的几点提醒
最后,我把自己踩过的坑总结一下,你照着做能少走弯路:
- 启动阶段要特别小心——观测器还没收敛时,死区补偿先别使能,等电流估计稳定了再切入。我一般等 50ms 左右。
- 参数失配时补偿会恶化——如果 Rs 偏差超过 20%,补偿后的 THD 可能比不补还差。建议加一个参数偏差检测逻辑,偏差过大时自动降级为不补偿。
- PWM 死区时间不要设太大——无传感器方案下,死区时间建议控制在 1~2μs,太大了观测器扛不住。
- 采样同步要做好——观测器的计算要和 PWM 载波同步,否则估计电流里会混入开关噪声。
一句话总结: 无电流传感器下的死区补偿,本质是用观测器替代物理传感器。观测器选滑模,极性判断加超前校正,低速时辅以高频注入,这套组合拳在大多数工业场景下都能打。