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 噪声源全景图

说了这么多,咱们用一张图把八个噪声源串起来看看。

电流采样链噪声源全景图 电流采样信号 ① 电阻热噪声 ② 运放噪声 ③ PWM开关噪声 ④ 量化噪声 ⑤ 共模噪声 ⑥ 差模噪声 ⑦ 地弹噪声 ⑧ 电源纹波耦合 红色节点:模拟电路固有噪声(热噪声、运放、PWM、量化) 橙色节点:系统耦合噪声(共模、差模、地弹、电源纹波) 每个噪声源都有不同的频率特性和耦合路径,滤波策略必须对症下药 采样前端 信号调理 开关干扰 数字量化

这张图把八个噪声源按位置分了四组:采样前端、信号调理、开关干扰、数字量化。每个组的噪声特性不同,滤波手段也不同。后面的章节我会逐个展开讲怎么对付它们。

我的习惯:拿到一个新项目,我会先列一张噪声源检查表,对着 PCB 布局和原理图一个一个排查。哪个噪声源贡献最大,就先处理哪个。别想着一次性把所有噪声都干掉,不现实。抓住主要矛盾,剩下的靠滤波和软件补偿。