1. 噪声源分析:电流采样链上的八大“捣乱分子”
做 FOC 电流环,说白了就是跟噪声打仗。我入行那会儿,第一个项目就栽在噪声上——电机低速转得好好的,一加速电流波形就毛刺满天飞,查了整整三天才找到元凶。从那以后,我养成了一个习惯:拿到一块驱动板,先不急着调参数,而是把采样链上的噪声源挨个捋一遍。
电流采样信号从电阻到 ADC,中间要经过好几个环节。每个环节都会往信号里掺“杂质”。我把它们归纳成八类,咱们一个一个看。
核心观点:滤波不是万能的。你不搞清楚噪声从哪来、长什么样,滤波就是瞎蒙。先诊断,再下药。
1.1 电流采样电阻热噪声
采样电阻本身就会产生噪声。这跟电阻的材料和温度有关,叫热噪声(Johnson-Nyquist noise)。
公式很简单:Vn = √(4kTRB)。k 是玻尔兹曼常数,T 是绝对温度,R 是电阻值,B 是带宽。
举个例子:一个 10mΩ 的采样电阻,带宽 1MHz,室温下热噪声有效值大约 0.4μV。看起来很小对吧?但如果你用 100 倍增益的运放去放大,输出端就变成 40μV 了。在 3.3V ADC 参考电压下,这相当于 12 个 LSB 的抖动。
| 电阻值 | 带宽 | 热噪声有效值 | 放大100倍后 |
|---|---|---|---|
| 10mΩ | 1MHz | ~0.4μV | ~40μV |
| 50mΩ | 1MHz | ~0.9μV | ~90μV |
| 10mΩ | 10MHz | ~1.3μV | ~130μV |
我的经验:采样电阻别选太大。阻值大了热噪声跟着涨,功耗也大。我一般控制在 5mΩ~20mΩ 之间,具体看电流量程。另外,用金属膜或锰铜电阻,温漂小,噪声也低。
1.2 运放噪声
运放自己也会产生噪声,包括电压噪声和电流噪声。电压噪声通常在数据手册里标成 en,单位 nV/√Hz。
我踩过一个坑:选了一款便宜的双运放,噪声密度标称 50nV/√Hz。当时没在意,结果电流环带宽一提到 5kHz,电流波形就开始抖。换了一款 8nV/√Hz 的运放,问题立刻消失。
运放噪声怎么算?
- 低频区(1/f 噪声): 拐点频率以下,噪声随频率降低而增大。一般几十 Hz 到几百 Hz。
- 高频区(白噪声): 拐点以上,噪声密度基本恒定。
- 总噪声: 把噪声密度乘以带宽的平方根,再乘以电路增益。
注意:运放噪声和电阻热噪声是叠加的。如果运放噪声比电阻热噪声大很多,那电阻再低也没用。我习惯让运放噪声贡献不超过总噪声的 30%。
1.3 PWM 开关噪声
这是 FOC 系统里最头疼的噪声源,没有之一。PWM 开关瞬间,母线电压在几十纳秒内跳变几百伏,通过寄生电容耦合到采样电路上。
你想想看,MOSFET 的漏极电压从 0V 跳到 300V,上升沿只有 50ns。这个 dv/dt 高达 6V/ns!哪怕只有 1pF 的寄生电容,耦合电流也有 6mA。这个电流流过采样电阻,产生的电压尖峰足够让 ADC 饱和。
PWM 噪声有两个特点:
- 时间集中: 只在开关沿附近出现,持续几十到几百纳秒。
- 幅度大: 可能比信号本身大几十倍。
避坑指南:我曾经在采样电路前加了一级 RC 低通滤波,截止频率设到 1MHz,以为能滤掉 PWM 噪声。结果发现根本没用——噪声幅度太大,直接把运放推到了饱和区。后来我改用同步采样,在 PWM 开关沿过去之后再触发 ADC,这才彻底解决。
1.4 数字量化噪声
ADC 把模拟信号变成数字量,这个过程本身就会引入量化误差。一个 12 位 ADC,参考电压 3.3V,量化步长是 3.3V / 4096 ≈ 0.8mV。
量化噪声的功率是 LSB² / 12。对于 12 位 ADC,有效值大约是 0.23 个 LSB。听起来不大,但如果你电流环的增益很高,这个量化噪声会被放大到电流指令里。
我见过有人用 10 位 ADC 做电流采样,结果低速时电流纹波特别大。换成 12 位就好了很多。如果条件允许,14 位或 16 位 SAR ADC 效果更明显。
| ADC 位数 | 量化步长 (3.3V) | 量化噪声有效值 | 适用场景 |
|---|---|---|---|
| 10 位 | 3.22mV | 0.93mV | 低成本、大电流 |
| 12 位 | 0.80mV | 0.23mV | 通用 FOC |
| 14 位 | 0.20mV | 0.06mV | 高精度伺服 |
| 16 位 | 0.05mV | 0.01mV | 超精密控制 |
1.5 共模噪声与差模噪声
这两个概念经常被混在一起说,我简单区分一下:
- 差模噪声: 叠加在信号线上,与信号串联。表现为信号线之间的电压差。
- 共模噪声: 同时出现在两条信号线上,对地电位相同。运放的共模抑制比(CMRR)就是用来对付它的。
在电流采样电路里,共模噪声主要来自母线电压的快速变化。差模噪声则来自 PWM 开关耦合和地弹。
我习惯用差分放大器来做电流采样,CMRR 至少 80dB。如果共模噪声太大,还可以加一级共模扼流圈。
1.6 地弹噪声
地弹(Ground Bounce)是 PCB 设计里最容易忽略的问题。大电流突然变化时,地平面上的寄生电感会产生电压降。这个电压降直接叠加到采样电路的参考地上。
举个例子:功率管关断时,电流从 10A 瞬间降到 0A,di/dt 可能达到 100A/μs。如果地平面有 10nH 的寄生电感,地弹电压就是 1V!这个电压直接让采样结果失真。
注意:地弹噪声不能用滤波解决。唯一的办法是优化 PCB 布局:功率地和信号地分开走,单点连接;采样电阻的地线要单独回到 ADC 的参考地。
1.7 电源纹波耦合噪声
运放和 ADC 的供电电源如果纹波太大,会直接耦合到信号路径里。尤其是开关电源,纹波频率通常在几十 kHz 到几 MHz。
我遇到过一个问题:运放供电纹波 50mVpp,频率 200kHz。运放的电源抑制比(PSRR)在 200kHz 时只有 40dB,相当于把纹波衰减了 100 倍,但还是有 0.5mV 的噪声出现在输出端。对于 12 位 ADC 来说,这已经超过半个 LSB 了。
解决办法:
- 运放和 ADC 的供电加 LDO 或 π 型滤波。
- 电源走线远离采样电路。
- 在电源引脚附近加 100nF + 10μF 去耦电容。
1.8 噪声源全景图
说了这么多,咱们用一张图把八个噪声源串起来看看。
这张图把八个噪声源按位置分了四组:采样前端、信号调理、开关干扰、数字量化。每个组的噪声特性不同,滤波手段也不同。后面的章节我会逐个展开讲怎么对付它们。
我的习惯:拿到一个新项目,我会先列一张噪声源检查表,对着 PCB 布局和原理图一个一个排查。哪个噪声源贡献最大,就先处理哪个。别想着一次性把所有噪声都干掉,不现实。抓住主要矛盾,剩下的靠滤波和软件补偿。