3、采样同步问题:PWM载波与采样时刻的关系、单电阻/双电阻/三电阻采样的同步窗口、电流重构误差来源
好,咱们进入第三章。这一章讲的是采样同步,说白了就是“什么时候去读电流”。
很多人做FOC,代码写完了,电机也能转,但一转起来就嗡嗡响,电流波形乱七八糟。我刚开始做的时候也这样,折腾了好几天,最后发现——采样时刻没选对。
你想想看,PWM在那边高频开关,母线电压在跳,电流也在跳。你随便找个时刻去采样,采回来的值能准吗?肯定不准。所以,采样必须和PWM载波同步。
3.1 PWM载波与采样时刻的关系
先看一个基本事实:FOC里用的PWM,通常是中心对齐模式(Center-Aligned PWM)。载波是一个三角波,周期为Tpwm。三角波的顶点和底点,对应着开关管的开关动作。
电流采样,最理想的时刻是三角波的顶点或底点。为什么?因为这时候开关管处于“死区”或“换相完成”状态,母线电压相对稳定,电流纹波也最小。
核心原则:采样时刻必须避开开关动作瞬间,选择在PWM载波的波峰或波谷处。
我习惯把采样时刻放在三角波的底点(即计数值为0的时刻)。这样,ADC触发信号刚好在PWM周期开始的时候产生,留给电流建立和ADC转换足够的时间。
| PWM模式 | 推荐采样时刻 | 说明 |
|---|---|---|
| 中心对齐(Up-Down) | 波峰或波谷 | 电流纹波最小,噪声最低 |
| 边沿对齐(Up) | 周期开始或结束 | 需要额外注意开关噪声 |
| 非对称PWM | 根据占空比调整 | 不推荐用于FOC采样 |
小技巧:如果你用STM32,可以配置TIM的触发输出(TRGO)在更新事件时产生,直接触发ADC注入组采样。这样硬件自动同步,省去软件干预。
3.2 单电阻/双电阻/三电阻采样的同步窗口
不同的硬件方案,采样窗口的约束完全不同。我一个个说。
3.2.1 三电阻采样
三电阻采样最简单。每个桥臂下管串联一个采样电阻,三个电流同时采。你只需要在PWM波谷时刻触发一次ADC,三个通道同时转换,完事。
同步窗口:整个PWM周期都可以,但最佳窗口在波谷。因为这时候下管导通,电流流过采样电阻,信号最干净。
3.2.2 双电阻采样
双电阻采样只采两相电流(通常是U相和V相),W相通过基尔霍夫定律计算:Iw = -(Iu + Iv)。
同步窗口:必须在两相下管同时导通的区间内采样。这个区间就是PWM波谷附近。如果占空比接近0%或100%,这个窗口会变得非常窄,甚至消失。
注意:双电阻采样在占空比极端(<10%或>90%)时,采样窗口可能不足ADC转换时间。这时候需要做“移相”或“插入无效矢量”来扩展窗口。
3.2.3 单电阻采样
单电阻采样最省钱,但也最麻烦。它只在直流母线上放一个采样电阻,通过不同开关状态下的电流路径,重构三相电流。
同步窗口:需要在一个PWM周期内采样两次。第一次在波谷,第二次在波峰。两次采样的电流值,结合当前开关状态,才能解算出三相电流。
| 方案 | 采样电阻数 | 采样次数/周期 | 同步窗口要求 | 成本 |
|---|---|---|---|---|
| 三电阻 | 3 | 1 | 宽松 | 高 |
| 双电阻 | 2 | 1 | 中等 | 中 |
| 单电阻 | 1 | 2 | 严格 | 低 |
3.3 电流重构误差来源
说到误差,我踩过的坑可不少。电流重构的误差,主要来自以下几个方面。
- 采样时刻偏移:ADC触发信号和PWM载波不同步,导致采到的电流不是真实值。我曾经遇到过ADC触发延迟了200ns,结果电流波形上出现周期性尖刺。
- ADC转换时间不足:采样窗口太短,ADC还没转换完,开关状态就变了。尤其是单电阻采样,两次采样之间的间隔必须足够长。
- 死区影响:死区时间内,电流路径不确定,采样电阻上的电压不反映真实电流。我建议在死区结束后再触发采样。
- 寄生参数:采样电阻的寄生电感、PCB走线的寄生电容,都会引入高频噪声。嗯,这个在高速电机(比如10krpm以上)时特别明显。
- 运放带宽:电流采样通常要经过运放放大。运放的带宽不够,信号会失真。我习惯选增益带宽积(GBW)在10MHz以上的运放。
避坑指南:我曾经在一个项目中,单电阻采样重构出来的电流总是有直流偏置。查了三天,最后发现是ADC的采样保持时间设置太短,电容没充饱。把采样周期从3个时钟周期改成8个,问题解决。
下面这张图,我把采样同步的核心逻辑画出来了。你可以看到PWM载波、采样时刻、以及不同采样方案的窗口关系。
总结一下:采样同步的核心,就是让ADC在电流最稳定的时刻去读数。三电阻最省心,双电阻要注意占空比边界,单电阻最考验时序设计。我个人建议,如果成本允许,优先用三电阻或双电阻。单电阻虽然省钱,但调试周期长,误差来源多。
我的习惯:每次换方案,我都会先用示波器抓一下采样电阻两端的波形,确认采样窗口内信号是平的。这一步能省掉后面80%的调试时间。