4. 模拟前端设计:从传感器到数字信号的关键一步
做肌电采集,说白了就是跟微弱的生物电信号打交道。我刚开始接触这个领域时,总觉得模拟前端不就是放大滤波嘛,有什么难的?结果第一次搭出来的电路,噪声比信号还大,50Hz工频干扰直接把波形淹没了。嗯,从那以后我再也不敢小看模拟前端设计了。
这一节,我们重点聊聊肌电采集的模拟前端。核心器件就是仪表放大器,配合高通、低通和陷波器,把微弱的肌电信号从噪声中「捞」出来。
核心思路:肌电信号幅度在几十微伏到几毫伏之间,频率主要集中在20-500Hz。我们的任务就是:放大信号,滤除干扰。
4.1 仪表放大器选型:INA128 vs AD620
仪表放大器是整个模拟前端的「心脏」。我个人的习惯是,先看共模抑制比(CMRR),再看噪声指标。为什么?因为肌电信号是差分信号,而人体就是一根大天线,会耦合进来大量共模噪声。CMRR不够高,这些噪声就会混进信号里。
市面上最常用的两款芯片:INA128和AD620。我两个都用过,说说我的感受。
| 参数 | INA128 | AD620 |
|---|---|---|
| CMRR (G=100) | 120dB 典型值 | 110dB 典型值 |
| 输入偏置电流 | 5nA 最大 | 2nA 最大 |
| 噪声 (0.1-10Hz) | 0.2µVpp | 0.28µVpp |
| 增益设置 | 单电阻,G=1+50kΩ/RG | 单电阻,G=1+49.4kΩ/RG |
| 静态电流 | 700µA | 900µA |
我个人更偏爱INA128。为什么?它的CMRR在G=100时能到120dB,比AD620高了10dB。别小看这10dB,在强干扰环境下,这就是信号能不能看和能不能用的区别。我在一个工厂车间做肌电测试时,周围全是电机,AD620出来的波形全是毛刺,换成INA128立马干净了。
当然,AD620也有它的优势——输入偏置电流更小,适合电极阻抗很高的场景。如果你用的是干电极,AD620可能更合适。
4.2 增益设置:到底放大多少倍?
增益设置是个权衡问题。放大倍数太小,信号进ADC时分辨率不够;放大倍数太大,又容易饱和。
我一般这样算:
- 肌电信号典型幅度:0.1-5mVpp
- ADC参考电压:3.3V(单端)或 ±2.5V(差分)
- 目标:让最大信号占满ADC量程的70-80%
举个例子,如果ADC是3.3V单端输入,我们希望5mV的信号放大后能达到2.5V左右。那么总增益就是:2.5V / 5mV = 500倍。
但我不建议一级放大500倍。为什么?因为直流偏置也会被放大。电极和皮肤接触会产生几十毫伏的直流偏置,放大500倍后就是十几伏,早就饱和了。
我的做法是:
- 第一级(仪表放大器):增益设为50-100倍。这个阶段信号还比较小,不容易饱和。
- 第二级(后级放大器):增益设为5-10倍。此时信号已经经过高通滤波,直流分量被去掉了。
对于INA128,增益电阻的计算公式是:
RG = 50kΩ / (G - 1)
// 举例:想要G=100
RG = 50kΩ / (100 - 1) = 50kΩ / 99 ≈ 505Ω
// 实际取标准值:499Ω 或 510Ω
// 用499Ω时,实际增益 G = 1 + 50kΩ/499Ω ≈ 101.2
小技巧:增益电阻一定要用精密电阻(0.1%或更高),温度系数要低。我曾经图省事用了1%的普通电阻,结果温度一变,增益就飘了,数据根本没法用。
4.3 高通滤波器:去掉直流和低频漂移
高通滤波器的目的是去掉直流偏置和低频运动伪迹。肌电信号的有用成分从20Hz左右开始,所以截止频率设在10-20Hz比较合适。
我一般用一阶无源高通,放在仪表放大器后面。为什么不用有源?因为这时候信号还比较小,运放的噪声会引入额外干扰。
电路很简单:一个电容串联,一个电阻对地。
// 设计目标:截止频率 fc = 15Hz
// 公式:fc = 1 / (2π * R * C)
// 方案一:取 C = 1µF
R = 1 / (2π * 15 * 1e-6) ≈ 10.6kΩ
// 取标准值:10kΩ,实际 fc ≈ 15.9Hz
// 方案二:取 C = 0.47µF
R = 1 / (2π * 15 * 0.47e-6) ≈ 22.6kΩ
// 取标准值:22kΩ,实际 fc ≈ 15.4Hz
注意:电容要用CBB或聚丙烯电容,漏电流小。千万别用普通电解电容,漏电流会引入额外的直流偏置。我踩过这个坑,调试了整整两天才发现是电容的问题。
4.4 低通滤波器:抗混叠滤波
低通滤波器的截止频率设在500Hz,主要目的是:
- 滤除高频噪声(肌肉收缩产生的高频分量很少超过500Hz)
- 作为抗混叠滤波器,防止采样时高频信号折叠到低频段
我推荐用二阶巴特沃斯有源低通。为什么是巴特沃斯?因为它在通带内最平坦,不会扭曲肌电信号的波形。
电路用Sallen-Key拓扑结构,简单可靠:
// 设计目标:fc = 500Hz,二阶巴特沃斯
// 巴特沃斯系数:Q = 0.707
// 取 C1 = C2 = 0.1µF
// 计算 R1 = R2 = R
R = 1 / (2π * 500 * 0.1e-6) ≈ 3.18kΩ
// 取标准值:3.16kΩ(1%精度)
// 实际截止频率:
fc = 1 / (2π * 3.16e3 * 0.1e-6) ≈ 503.7Hz
// 运放推荐:TL072、OPA2134(低噪声、双运放)
关键点:运放的增益带宽积(GBW)要足够。对于500Hz的滤波器,GBW至少要10倍以上,也就是5kHz。TL072的GBW是3MHz,绰绰有余。
4.5 50Hz陷波器:干掉工频干扰
50Hz工频干扰是肌电采集的头号敌人。你想想看,肌电信号也就几十微伏到几毫伏,而电网的50Hz干扰可能达到几百毫伏。不把它干掉,信号根本没法看。
我常用的方案是双T型陷波器,也叫带阻滤波器。它的特点是:对特定频率衰减很大,对其他频率影响很小。
// 设计目标:中心频率 f0 = 50Hz,Q = 5-10
// 双T型陷波器参数:
// 取 C = 0.1µF
R = 1 / (2π * 50 * 0.1e-6) ≈ 31.8kΩ
// 取标准值:31.6kΩ
// 反馈电阻决定Q值:
// Q = 5 时,Rf = R / (2 - 1/Q) ≈ 31.6k / 1.8 ≈ 17.6kΩ
// Q = 10 时,Rf = R / (2 - 1/10) ≈ 31.6k / 1.9 ≈ 16.6kΩ
// 实际电路:
// R1 = R2 = R3 = 31.6kΩ
// C1 = C2 = C3 = 0.1µF
// Rf 用可调电阻,方便微调
调试经验:陷波器的中心频率很容易偏。我建议Rf用100kΩ可调电阻,配合50Ω固定电阻串联。上电后用示波器观察,微调Rf直到50Hz衰减最大。记住,电容的精度也很关键,最好用1%或更高精度的。
4.6 整体信号链路
把上面几部分串起来,完整的模拟前端信号链路是这样的:
电极 → 仪表放大器(INA128, G=100)
→ 一阶高通(15Hz)
→ 二阶低通(500Hz)
→ 50Hz陷波器
→ 后级放大(G=5)
→ ADC输入
总增益:100 × 5 = 500倍。这个增益对于大多数肌电信号来说刚刚好。
布局布线提醒:模拟前端对PCB布局非常敏感。我的经验是:
- 仪表放大器尽量靠近电极接口
- 模拟地和数字地要分开,单点连接
- 电源去耦电容要靠近芯片引脚
- 信号走线要短,远离时钟线和数字信号线
我曾经在一块板上把模拟信号线和SPI时钟线平行走了5cm,结果50Hz干扰直接增加了20dB。后来改成垂直走线,问题就解决了。
4.7 本章小结
模拟前端设计,说白了就是跟噪声做斗争。选对芯片(INA128),算好增益(500倍),搭好滤波器(高通+低通+陷波),再注意布局布线,一套能用的肌电采集前端就出来了。
我刚开始做这个的时候,总觉得理论算好了就万事大吉。实际上,每一级滤波器都会引入相移,每一级放大器都会增加噪声。所以我的建议是:先搭出来,用信号发生器测试,再用示波器看实际波形。理论计算只是起点,调试才是关键。
下一节我们会聊ADC采样和数字滤波,到时候这些模拟信号就要变成数字信号了。嗯,那是另一个有意思的话题。
公众号:蓝海资料掘金营,微信deep3321