3、ADC与信号调理:ADC分辨率与采样率的选择、信号调理电路设计(偏置、滤波)、采样噪声的来源与抑制

做伺服驱动这么多年,我越来越觉得ADC这块是电流环的「咽喉」。你算法写得再漂亮,如果ADC采回来的信号是脏的,那一切都是白搭。说白了,电流环的带宽上限,有一半是被ADC和前端电路卡死的。

今天咱们就掰开揉碎,聊聊ADC选型、信号调理电路怎么搭,还有那些烦人的噪声到底从哪来、怎么治。

3.1 ADC分辨率与采样率——别盲目堆参数

先问个问题:你选ADC时,第一眼看什么?

很多人上来就盯着分辨率,觉得位数越高越好。我刚开始做项目时也这么干过,选了个16位的ADC,结果发现噪声大得离谱,有效位数连12位都不到。嗯,这就是典型的「参数幻觉」。

核心原则:采样率决定带宽上限,分辨率决定控制精度。两者要匹配,不是越高越好。

3.3.1 采样率怎么定?

电流环的带宽目标,直接决定了ADC的最低采样率。我个人习惯用这个经验公式:

f_adc ≥ 10 × f_bandwidth

举个例子,你想把电流环带宽做到2kHz,那ADC采样率至少20kHz。为什么是10倍?因为还要留出给数字滤波、过采样、以及系统延迟的余量。我在一个高速主轴项目里试过5倍采样,结果相位裕度根本不够,电流环一跑就抖。

目标带宽 推荐最低采样率 典型应用
500 Hz 5 kHz 通用伺服
1 kHz 10 kHz 中高速伺服
2 kHz 20 kHz 高速主轴
5 kHz 50 kHz 超高速/精密

小技巧:如果MCU的ADC采样率不够,可以用过采样技术。比如用4倍过采样,等效分辨率能提升1位。但要注意,过采样会增加CPU负担,别把主循环拖死了。

3.3.2 分辨率选多少?

分辨率这事,得看你的电流检测范围和控制精度要求。我一般这样算:

有效位数 ≥ log2(电流范围 / 最小可分辨电流)

比如电流范围±10A,要求分辨到1mA,那至少需要log2(20000) ≈ 15位。但注意,这是「有效位数」,不是ADC标称位数。

我曾经在一个项目里踩过坑——用了12位ADC,标称分辨率4096,但实际噪声把低3位全淹了,有效位数只剩9位。结果电流环在低速时抖得像筛子。后来换了14位ADC,配合前端调理,才把问题压住。

避坑指南:别只看datasheet上的「有效位数(ENOB)」参数。很多ADC在低频下ENOB不错,但一跑到几十kHz采样率,ENOB直接掉2-3位。一定要看采样率-ENOB曲线。

3.2 信号调理电路设计——前端决定成败

ADC本身只是「翻译官」,真正决定信号质量的,是它前面的调理电路。我见过太多人花大价钱买高端ADC,结果前端用个通用运放随便搭一下,信号进来全是毛刺。

3.2.1 偏置电路——把信号拉到ADC的「舒适区」

电流传感器的输出,通常是双极性的(比如±5V)。但很多ADC的输入范围是0-3.3V或0-5V。所以你得先把信号「抬」到正半轴。

最简单的做法是用加法器:

Vout = Vin × R2/R1 + Vref × R4/R3

我个人习惯用这个拓扑:

         R1
Vin ——/\/\/\——+——
               |
              / \
              | | R2
              \_/
               |
              / \
              | | R3
              \_/
               |
              Vref
               |
             ——+—— Vout
               |
              / \
              | | R4
              \_/
               |
              GND

嗯,画得有点丑,但意思到了。关键点是:R1=R2,R3=R4,这样偏置电压刚好是Vref的一半。

经验之谈:Vref一定要用低噪声基准源,别直接从电源分压。我吃过这个亏——用电阻分压做Vref,结果电源纹波直接耦合进信号,电流环上全是50Hz的工频干扰。

3.2.2 滤波电路——把高频毛刺挡在门外

电流环里最怕什么?PWM开关噪声。IGBT或MOSFET一开一关,di/dt大得吓人,会在采样电阻和线路上感应出尖峰。这些尖峰如果不滤掉,ADC采到的就是一堆乱码。

我常用的方案是二阶低通滤波,截止频率设在采样率的1/5左右:

截止频率: fc = 1 / (2π × √(R1×R2×C1×C2))
推荐取值: R1=R2=10kΩ, C1=C2=1nF → fc ≈ 16kHz

注意,滤波器的群延迟会影响电流环的相位。你想想看,如果延迟太大,电流环的相位裕度就没了。所以滤波器的阶数不是越高越好,二阶通常够用。

我的习惯:在运放前后各放一级RC滤波。前级滤掉共模噪声,后级滤掉差模噪声。两级之间用运放做缓冲,阻抗匹配好,信号不衰减。

3.3 采样噪声的来源与抑制——知己知彼

噪声这东西,你找不到源头,就永远治不好。我总结了三类最常见的噪声源:

3.3.1 电源噪声

ADC和运放的供电如果不干净,信号上全是纹波。我曾经在一个项目里,用示波器看ADC输入,发现有个200mV的100kHz纹波。查了半天,发现是DC-DC的开关频率串进来了。

解决办法:

  • 模拟电路和数字电路分开供电
  • 用LDO给模拟部分供电,别用DC-DC
  • 每个运放和ADC的电源脚旁路电容不能省——0.1μF+10μF组合

3.3.2 地回路噪声

这是最隐蔽的噪声。电流采样回路和功率回路共用一段地线,大电流一过,地电位就跳变。ADC采到的信号里就多了个「地弹」分量。

我的做法是:

  • 模拟地和功率地单点连接
  • 采样电阻用开尔文接法,把电流路径和电压检测路径分开
  • PCB上铺模拟地铜皮,别让大电流从下面走

3.3.3 采样时刻抖动

ADC的采样时钟如果不稳定,每次采样的时间点都在变。对于高频电流信号来说,时间抖动就等于幅度噪声。

这个问题在MCU内置ADC上尤其常见。MCU的时钟可能来自PLL,PLL的抖动在几十到几百皮秒。对于1kHz的电流信号,100ps的抖动引起的误差可以忽略。但如果电流频率到了10kHz以上,这个误差就不能忽视了。

避坑指南:我曾经在一个项目里用MCU内置ADC做电流采样,采样时钟来自PLL。结果电流环带宽跑到3kHz时,噪声突然变大。查了三天,才发现是PLL抖动引起的。后来改用外部独立ADC,带专用采样时钟,问题才解决。

3.4 知识体系总览

下面这张图,是我自己总结的ADC与信号调理的知识框架。你看一眼,心里就有数了:

ADC与信号调理知识体系 ADC选型 信号调理电路 噪声抑制 采样率 ≥ 10×带宽 有效位数(ENOB) vs 标称位数 过采样技术提升分辨率 偏置电路:加法器拓扑 二阶低通滤波 fc=fs/5 运放缓冲+阻抗匹配 电源噪声:LDO+旁路电容 地回路:单点接地+开尔文 采样抖动:独立时钟源 核心原则 ADC是「翻译官」,调理电路是「翻译质量」的保证 噪声抑制要从源头抓起,别指望数字滤波解决一切

你看,这三个模块是环环相扣的。ADC选型决定了你能看到什么,信号调理决定了你看到的是不是真的,噪声抑制决定了你看到的是不是干净的。哪一环出问题,电流环的带宽都上不去。

好了,这一章的内容就到这。记住一句话:ADC和信号调理,是电流环的「地基」。地基不牢,地动山摇。


公众号:蓝海资料掘金营,微信deep3321