2. 电流环瓶颈分析:采样延迟、PWM死区与量化误差
电流环是力矩控制的根基。这话我常说,也确实是这么回事。你力矩环算得再好,电流环跟不上,一切都是空谈。今天我们就来拆一拆电流环里那几个最要命的瓶颈——采样延迟、PWM更新死区、ADC量化误差。这三个东西,说白了就是电流环的“三座大山”。
核心观点:电流环的带宽直接决定了力矩响应的上限。而采样延迟、PWM死区、量化误差,是限制电流环带宽的三个主要物理因素。不搞定它们,力矩精度就是空中楼阁。
2.1 电流采样延迟:你看到的电流,已经是“过去时”
先问一个问题:你读到的电流值,真的是电机此刻的电流吗?
不是。从电流流过绕组,到ADC采样完成,再到CPU读到这个值,中间有一串延迟。我习惯把它分成三段:
- 传感器响应延迟——霍尔/磁通门传感器本身的带宽限制,一般在几百ns到几μs。
- ADC采样与转换延迟——SAR型ADC大约1μs,Σ-Δ型ADC因为有过采样和数字滤波,延迟可能到5-10μs。
- 数据传输与同步延迟——SPI读取、DMA传输、中断响应,加起来又是几μs。
你想想看,如果PWM周期是100μs(10kHz开关频率),采样延迟占了10μs以上,那你的电流环控制器看到的电流,已经是10%周期之前的“历史数据”了。
我的经验:有一次调试一个高速主轴电机,电流环带宽怎么都上不去。后来用示波器抓了ADC触发信号和实际电流波形,发现采样点正好落在PWM开关噪声最大的时刻。把采样窗口往后挪了2μs,带宽直接提升了30%。
采样延迟对电流环的影响,可以用一个简单的相位滞后模型来理解:
相位滞后 = 采样延迟 × 电流环带宽 × 360°
举例:采样延迟 10μs,目标带宽 2kHz
相位滞后 = 10e-6 × 2000 × 360° = 7.2°
7.2°看起来不大?但加上PI控制器的相位滞后、PWM更新的延迟,总相位裕度可能就剩30°不到了。系统开始振荡,力矩开始抖动。
2.2 PWM更新死区时间:一个不得不等的“空档期”
PWM更新死区,是我见过最多人忽略的问题。什么叫死区时间?就是功率管上下桥臂切换时,为了防止直通短路,必须插入的一段“都关断”的时间。
这段死区时间,通常1-3μs。听起来不长,但它的影响可不小:
- 电压失真——死区期间,电流通过续流二极管续流,实际输出电压偏离指令值。
- 低电流区非线性——电流越小,死区影响越明显。我在做低速大力矩应用时,0.5A以下的电流控制几乎没法看。
- 力矩纹波——死区引起的电压误差,会转化为6倍频的力矩纹波(对于三相PMSM)。
注意:死区补偿不是万能的。我曾经试过基于电流极性查表的死区补偿,在电流过零点附近极性判断不准,补偿反而引入了更大的谐波。后来改用基于电压误差观测器的自适应补偿,效果才好一些。
死区时间对电压误差的定量影响,可以用这个公式估算:
电压误差 = (死区时间 / PWM周期) × 母线电压 × 符号函数(电流方向)
举例:死区 2μs,PWM周期 100μs,母线电压 300V
电压误差 = 2/100 × 300 = 6V(峰值)
6V的电压误差,对于48V低压系统来说,已经是12.5%的误差了。力矩精度能好吗?
2.3 ADC量化误差:数字世界的“分辨率天花板”
ADC量化误差,说白了就是数字信号能表示的最小电流步长。12位ADC、3.3V参考、电流检测电阻0.01Ω、放大倍数50倍,算下来:
LSB = 3.3V / 4096 = 0.806mV
对应电流 = 0.806mV / (0.01Ω × 50) = 1.612mA
1.6mA的分辨率,听起来不错?但注意,这是理想情况。实际ADC还有:
- 量化噪声——±0.5 LSB的固有误差,在低电流区尤其明显。
- 微分非线性(DNL)——相邻码之间的步长不均匀,典型值±1 LSB。
- 积分非线性(INL)——整体传输曲线的偏差,可能到±3 LSB。
我做过一个测试:用12位ADC和16位Σ-Δ ADC分别控制同一个电机,在1%额定电流的工况下,力矩波动从±5%降到了±0.8%。这就是量化误差的威力。
关键数据:量化误差对力矩精度的影响,在低电流区呈非线性放大。当指令电流接近ADC的1-2个LSB时,力矩控制基本失效。这是很多低速应用“抖得厉害”的根本原因。
2.4 三个瓶颈的叠加效应
单独看每个问题,好像都能忍。但三个问题叠加在一起,效果是相乘的。我画了一张图来说明这个关系:
从这张图可以看得很清楚:采样延迟吃掉相位裕度,死区时间注入电压谐波,量化误差在低电流区放大噪声。三者叠加,电流环的带宽和精度都被锁死了。
2.5 实际项目中的“避坑”清单
这些年踩过的坑不少,我整理了一份清单,供你参考:
| 瓶颈类型 | 典型症状 | 我踩过的坑 | 建议对策 |
|---|---|---|---|
| 采样延迟 | 电流环带宽上不去,高频振荡 | 采样点落在开关噪声区,带宽卡在1.2kHz | 使用双采样/双更新,或移相采样 |
| PWM死区 | 低转速力矩波动,电流过零点畸变 | 查表补偿在过零点极性误判,反而恶化 | 采用电压误差观测器自适应补偿 |
| ADC量化 | 低电流区抖动,力矩分辨率不足 | 12位ADC在1%额定电流下完全失控 | 换16位Σ-Δ ADC,或使用过采样+数字滤波 |
一个小技巧:如果你暂时换不了高精度ADC,可以试试“抖动注入”(Dithering)。在ADC输入端叠加一个高频小幅度噪声,然后做数字平均,等效分辨率能提升2-3位。我在一个成本敏感的项目里用过,效果还不错。
好了,电流环的三个核心瓶颈就聊到这里。采样延迟、PWM死区、量化误差——这三个东西,你只要抓住一个,力矩控制就能上一个台阶。三个都抓住了,那你的电流环基本就到顶了。