第三节:信号调理与采集——别让传感器白干了
做力控系统这么多年,我最大的感触是什么?
传感器选得再好,信号调理做不好,全白搭。
说白了,信号调理就是给传感器信号「梳妆打扮」,让它能体面地进ADC。
这一节,我重点聊聊信号放大与滤波、ADC选型、采样率匹配,还有抗混叠滤波器设计。
嗯,都是实战中容易踩坑的地方。
3.1 信号放大与滤波:别把噪声也放大了
传感器出来的信号,通常很微弱。
比如应变片桥路输出,满量程可能才几毫伏。
这时候必须放大。
放大器的选型,我一般看三点:
- 输入失调电压:这个参数决定了你能测多小的信号。我习惯选<5μV的,不然小信号直接被漂移吃掉了。
- 共模抑制比(CMRR):工业现场干扰多,CMRR低于100dB的放大器,我基本不考虑。
- 带宽:别只看增益带宽积,还要看你的信号频率。我曾经在一个项目里用了OP07,结果信号频率10kHz,增益设了100倍,带宽根本不够——信号直接衰减了30%。
避坑指南:
我曾经在一个称重系统里,用了单级放大1000倍,结果输出噪声大得离谱。
后来改成两级放大:第一级10倍,第二级100倍,中间加了一阶RC低通滤波。
噪声瞬间降下来了。记住:高增益一定要分级,中间插滤波。
滤波器的选择,我有个口诀:
- 工频干扰(50Hz/60Hz)→ 陷波器或数字滤波
- 高频噪声(>信号频率10倍)→ 二阶巴特沃斯低通
- 直流漂移 → 高通或数字去趋势
实际项目中,我常用Sallen-Key结构的二阶低通滤波器。
元件少,性能稳定,适合PCB面积紧张的场景。
3.2 ADC选型要点:分辨率不是越高越好
很多人选ADC,第一反应就是「分辨率越高越好」。
其实不然。
我选ADC,按这个顺序来:
- 有效位数(ENOB):别信标称分辨率,要看数据手册里的ENOB。比如标称16位的ADC,实际ENOB可能只有12位。
- 采样率:根据信号最高频率的2.56倍以上来选。我一般留3~5倍余量。
- 输入范围:一定要匹配前级放大器的输出摆幅。我曾经见过有人用±10V输入的ADC,前级放大器只输出0~3.3V,白白浪费了动态范围。
- 噪声性能:看SNR和THD。对于力控系统,SNR最好>80dB。
| 参数 | 低端应用 | 工业级 | 高精度 |
|---|---|---|---|
| 分辨率 | 12位 | 16位 | 24位 |
| ENOB | 10位 | 14位 | 20位 |
| 采样率 | 100kSPS | 1MSPS | 10MSPS |
| SNR | 60dB | 80dB | 100dB |
| 典型型号 | ADS7828 | ADS1256 | ADS1263 |
我的个人习惯:
力控系统里,我偏爱Σ-Δ型ADC。虽然速度慢一点,但内置了数字滤波,抗混叠效果好。
比如ADS1256,24位,30kSPS,ENOB能做到21位,够用了。
3.3 采样率与带宽匹配:奈奎斯特不是万能的
采样定理说:采样率≥2倍信号最高频率。
但实际工程中,2倍远远不够。
为什么?
因为现实中的信号不是理想正弦波,有谐波、有噪声。
你想想看,如果信号最高频率1kHz,你刚好采2kHz,那信号稍微有点抖动,就混叠了。
我一般遵循这个经验:
- 力控系统:采样率 = (5~10) × 信号最高频率
- 伺服控制:采样率 = (10~20) × 系统带宽
- 数据采集:采样率 = (2.56~5) × 信号最高频率
举个例子:
一个力传感器,输出信号带宽100Hz。
我选采样率1kHz,也就是10倍。
这样即使有高频噪声,也能通过数字滤波干净地去掉。
警告:
采样率不是越高越好!
采样率太高,数据量暴增,MCU处理不过来,反而导致丢包。
我见过有人用1MHz采样率采一个10Hz的信号,结果CPU占用率100%,系统直接卡死。
匹配才是王道。
3.4 抗混叠滤波器设计:ADC前的最后一道防线
抗混叠滤波器,说白了就是ADC前面的低通滤波器。
它的作用:把高于奈奎斯特频率的成分滤掉,防止混叠。
设计要点:
- 截止频率:设为采样率的1/2.56~1/5。比如采样率1kHz,截止频率设200~400Hz。
- 阶数:至少二阶。我习惯用四阶巴特沃斯,衰减斜率24dB/oct,够用。
- 元件选择:电容用C0G/NP0,电阻用金属膜,温漂小。
下面是一个典型的二阶抗混叠滤波器电路:
// 二阶Sallen-Key低通滤波器设计
// 截止频率:300Hz
// 增益:1 (单位增益)
// 元件值:
// R1 = R2 = 10kΩ
// C1 = 0.1μF
// C2 = 0.047μF
// 传递函数:
// H(s) = 1 / (1 + s*R1*C2 + s^2*R1*R2*C1*C2)
// 实际计算:
// fc = 1 / (2π * sqrt(R1*R2*C1*C2))
// = 1 / (2π * sqrt(10k*10k*0.1μ*0.047μ))
// ≈ 300Hz
避坑指南:
我曾经在一个项目里,用了有源抗混叠滤波器,结果运放自己产生了振荡。
排查了半天,发现是运放带宽太高,相位裕度不够。
后来换了低带宽的运放(比如LM358),再加了10pF反馈电容,问题解决。
记住:抗混叠滤波器本身不能成为噪声源。
3.5 知识体系总览
下面这张图,是我梳理的信号调理与采集的完整流程:
这张图把信号调理与采集的完整链路画出来了。
从传感器到数字处理,每一级都有讲究。
你想想看,如果放大级噪声大,后面滤波再好也救不回来。
如果ADC分辨率高但采样率不够,信号细节照样丢失。
所以我的建议是:
设计信号链时,先定ADC,再反推前级。
这样能保证每一级都匹配,不会出现瓶颈。
最后分享一个实用技巧:
调试时,用示波器看ADC输入端的信号。
如果看到明显的阶梯状波形,说明采样率不够。
如果看到高频毛刺,说明抗混叠滤波没做好。
这两个问题,我几乎在每个项目里都遇到过。