1. 项目概述:从微伏信号到清晰心电波
心电信号采集,听起来像是医院里那些庞大、精密且昂贵的设备才能干的事,但它的核心原理其实就藏在一套精巧的模拟电路里。作为一名长期混迹于生物医学电子和嵌入式硬件开发的工程师,我经常需要从零开始搭建这类前端信号调理电路。这次分享的,就是一个非常经典且实用的“三级火箭”式心电采集电路设计:仪器放大器 -> 陷波滤波器 -> 低通滤波器。整个项目的目标很明确,就是把人体皮肤表面那仅有0.5到2毫伏(mV)的微弱心电信号,放大到足以被后续电路(比如ADC)稳定、清晰读取的电压水平,同时把无处不在的50/60Hz工频干扰和各类高频噪声“打扫”干净。
为什么是这三级?这背后是生物电信号处理的经典思路。心电信号(ECG)本身频率很低,主要能量集中在0.05Hz到150Hz之间,尤其是QRS波群(就是心电图里那个最高的尖峰)的能量最强。但它太微弱了,直接测量就像在嘈杂的菜市场里听一根针掉地上的声音。所以,第一步必须用仪器放大器,它能极高倍数地放大信号(比如1000倍),同时对共模干扰(比如人体同时感应到的工频干扰)有极强的抑制能力。放大之后,信号里最强的“背景噪音”——50Hz或60Hz的工频干扰就暴露无遗了,必须用陷波滤波器(也叫带阻滤波器)精准地把它“挖掉”。最后,再用一个低通滤波器把150Hz以上的高频噪声(比如肌电干扰、环境电磁噪声)滤除,只留下我们关心的心电频段。
这个项目非常适合电子工程、生物医学工程专业的学生,以及对模拟电路设计、生物信号处理感兴趣的硬件爱好者。无论你是想完成一个课程设计,还是为DIY一个便携式心率监测手环打基础,这套从理论计算、LTSpice仿真到实物搭建调试的完整流程,都能让你对模拟前端设计有非常扎实的理解。接下来,我就把这套方案的每一个细节掰开揉碎了讲清楚。
2. 电路核心架构与设计思路拆解
2.1 系统级需求分析与方案选型
设计任何电路,第一步永远是搞清楚“我们要对付的是什么信号”。心电信号有几个关键特征决定了我们的电路架构:
- 极低的幅度:典型值0.5-2 mV(峰峰值)。这意味着第一级放大必须具有极高的增益,且自身噪声必须极低,否则信号就被噪声淹没了。
- 极低的频率:主要成分在0.05-150 Hz。这要求电路能处理直流和近直流信号,放大器必须采用直流耦合,并仔细处理失调电压和漂移。
- 极高的源阻抗与共模干扰:电极与皮肤接触阻抗可能高达几十千欧到几百千欧,且人体像一个天线,会同时拾取强大的50/60Hz工频干扰作为共模信号。这就要求输入级具有极高的输入阻抗和极高的共模抑制比。
- 特定的干扰频率:50/60Hz工频干扰是主要敌人,其幅度可能比心电信号大几个数量级。
基于这些特征,经典的“仪表放大+双滤波”架构几乎是唯一合理的选择。为什么不直接用一颗高集成度的ECG模拟前端芯片(比如ADI的AD8232)?对于学习和深度理解原理而言,分立或模块化设计是不可替代的。它能让你亲手调整每一个参数,观察每一个环节对波形的影响,这种经验是直接使用“黑盒”芯片无法获得的。我们这个设计,可以看作是那些集成芯片内部核心模块的透明化展开。
三级电路的分工与信号流如下:
- 第一级:仪器放大器。任务:在极高的共模噪声中,将微弱的差分心电信号放大1000倍左右。输出信号幅度约为0.5V - 2V,但混杂着巨大的60Hz干扰和其他噪声。
- 第二级:双T型陷波滤波器。任务:在放大后的信号中,精准地“凿”出一个深度衰减的缺口,中心频率对准60Hz(根据当地电网频率选择),将这个最强的单一频率干扰消除掉。
- 第三级:二阶有源低通滤波器。任务:像一个“篱笆”,允许150Hz以下的信号成分(主要是心电信号)通过,而将150Hz以上的高频噪声(如肌电信号、射频干扰)大幅度衰减,使波形变得光滑、清晰。
这个顺序不能乱。如果先滤波再放大,微弱的信号在滤波过程中可能损耗,并且放大器的噪声也会被一起放大。先放大,虽然噪声也放大了,但信号幅度提升到了足以被后续滤波器有效处理的水平,整个系统的信噪比优化更合理。
2.2 核心器件选型背后的考量
仪器放大器的选择是关键中的关键。我们通常选用三运放结构的仪表放大器芯片,如AD620或INA128。这里以INA128为例说明选型理由:
- 高输入阻抗:>10^9 Ω,确保不会从高阻抗的生物电极上“抽取”过多电流,导致信号衰减。
- 高共模抑制比:典型值120dB @ 60Hz。这意味着它能将同时出现在两个输入端的60Hz干扰衰减100万倍,是抑制工频干扰的第一道防线。
- 增益由单个电阻设定:增益公式 G = 1 + (50kΩ / Rg),计算和调整非常方便。
- 低噪声、低失调电压:对于处理微伏级信号至关重要。
运算放大器用于构建有源滤波器。我们选择通用型精密运放,如TL072或NE5532。它们价格低廉、性能足够,具有较高的输入阻抗和较低的噪声。TL072是JFET输入级,输入阻抗极高,非常适合滤波器应用,不会对RC网络造成负载效应。
电阻与电容的选型同样有讲究:
- 精度:尤其是决定滤波器中心频率和截止频率的RC元件,应选用1%精度的金属膜电阻和薄膜电容(如C0G/NP0材质的陶瓷电容或聚酯薄膜电容)。用5%精度的普通元件,滤波器的实际频率特性会严重偏离设计值。
- 值域:电阻值不宜过小(耗电、增加运放负载)或过大(易受寄生电容影响、热噪声大)。通常选择千欧级到百千欧级。电容值不宜过小(受寄生电容影响大)或过大(体积大、漏电流大)。通常选择纳法级到微法级。我们的设计会落在这些合理范围内。
3. 各级电路参数计算与设计细节
3.1 仪器放大器:增益设定与电阻计算
我们的目标增益是1000倍(60dB),将1mV的输入放大到1V。使用INA128,其增益公式为:G = 1 + (50kΩ / Rg)
我们需要求解Rg。 1000 = 1 + (50kΩ / Rg) => 999 = 50kΩ / Rg => Rg = 50kΩ / 999 ≈ 50.05 Ω
这是一个非常小的电阻值,在实际中很难找到精确的,且如此小的电阻会消耗较大电流。因此,我们通常采用两级放大策略来规避这个问题。
更优方案:两级放大
- 第一级(INA128):设定一个适中的增益,例如 G1 = 50。则 Rg1 = 50kΩ / (50 - 1) = 50kΩ / 49 ≈ 1.02 kΩ。我们可以选用一个1kΩ的精密可调电阻(电位器)串联一个固定电阻进行微调,比如820Ω固定电阻串联一个500Ω的多圈电位器,这样既能精确设定增益,又方便调试。
- 第二级(同相放大器):用另一颗运放(如TL072的一半)构成同相放大电路,增益 G2 = 20。这样总增益 G_total = G1 * G2 = 50 * 20 = 1000。 第二级同相放大器的增益公式为 G2 = 1 + (Rf / R1)。设定R1 = 1kΩ,则需要 Rf = (G2 - 1) * R1 = 19kΩ。可以选用18kΩ固定电阻串联一个2kΩ电位器进行微调。
注意:将1000倍增益分摊到两级,有以下好处:1)避免使用极小阻值的增益电阻;2)降低对单级放大器带宽的要求(增益带宽积恒定,单级增益越低,可用带宽越宽);3)提高电路稳定性,减少自激振荡风险。这是高增益放大电路的常用技巧。
3.2 60Hz双T陷波滤波器:精准“手术刀”设计
双T型陷波滤波器是模拟电路里消除单一频率干扰的利器。其核心是一个由电阻电容构成的桥式网络,在特定频率(中心频率f0)下产生深度抵消。
对于经典的双T网络,当满足关系 R1=R2=R, R3=R/2, C1=C2=C, C3=2C 时,中心频率公式为:f0 = 1 / (2πRC)
我们需要 f0 = 60 Hz。先选取一个常见的电容值,例如 C = 100nF (0.1μF)。代入公式计算R: R = 1 / (2π * 60Hz * 100nF) ≈ 1 / (2 * 3.1416 * 60 * 1e-7) ≈ 1 / (3.7699e-5) ≈ 26.54 kΩ
因此,我们可以选取:
- R1 = R2 = 27 kΩ (标准值,接近26.54kΩ)
- R3 = R/2 ≈ 13.5 kΩ,可以用12kΩ和1.5kΩ串联,或者直接用13.3kΩ(E96系列精密电阻)加微调。
- C1 = C2 = 100 nF
- C3 = 2C = 200 nF,可以用两个100nF并联。
为了提升滤波器的品质因数Q值(让陷波更尖锐、更深),并使其易于调整,我们采用有源双T陷波电路,即将双T网络接入一个运放的同相输入端,并引入正反馈。调整正反馈的量可以微调中心频率和陷波深度。在实际电路中,我们会在R3或反馈路径上设置可调电阻,用于在实物调试时精确对准60Hz。
3.3 150Hz二阶低通滤波器:噪声“篱笆”
我们采用经典的赛伦-凯(Sallen-Key)二阶有源低通滤波器拓扑。它结构简单,性能良好,只需要一个运放。
其截止频率 f_c 公式为:f_c = 1 / (2π √(R1 R2 C1 C2))
为了简化设计,通常令 R1 = R2 = R, C1 = C2 = C。则公式简化为:f_c = 1 / (2π R C)
我们需要 f_c = 150 Hz。选取电容 C = 10 nF (0.01μF),计算R: R = 1 / (2π * 150Hz * 10nF) ≈ 1 / (2 * 3.1416 * 150 * 1e-8) ≈ 1 / (9.4248e-6) ≈ 106.1 kΩ
我们可以选用最接近的标准值100 kΩ。这样实际的截止频率 f_c’ = 1 / (2π * 100kΩ * 10nF) ≈ 159.2 Hz,略高于设计值,但在可接受范围内。如果想更精确,可以使用110kΩ或105kΩ的电阻。
Sallen-Key滤波器的增益由运放的同相端电阻决定,通常设置为1(单位增益跟随器),以避免放大噪声。因此,我们将运放接成电压跟随器形式(输出直接接反相输入端)。
4. LTSpice仿真建模与性能验证
理论计算只是第一步,用LTSpice进行仿真就像在电脑里先搭一遍电路,能提前发现很多设计问题,避免浪费元器件。
4.1 创建三级子电路与联合仿真
绘制仪器放大器级:
- 从元件库中调用
INA128模型(如果没有,可以用三个理想运放搭建简化模型,或从ADI官网下载SPICE模型导入)。 - 放置电源(如±5V)、接地、输入信号源V1。
- 设置信号源:为了模拟真实心电,我们可以用一个脉冲源来近似QRS波。例如,设置一个脉冲:
PULSE(0 1m 0.1 0.01 0.01 0.05 0.8),表示从0到1mV,在0.1秒开始,上升时间0.01秒,宽度0.05秒,周期0.8秒的脉冲串。同时在差分输入端加入一个大的60Hz共模信号,例如SINE(0 1 60),幅度1V,来模拟干扰。 - 按照计算好的值放置增益电阻Rg1(~1.02k)。
- 添加负载电阻(如10kΩ)到地。
- 从元件库中调用
绘制陷波滤波器级:
- 调用运放模型(如
LT1001或通用运放)。 - 严格按照双T网络布局放置电阻电容:R1, R2=27k;C1, C2=100n;R3=13.5k;C3=200n。
- 连接成有源双T形式,注意正反馈网络的连接,通常是通过一个可调电阻分压将部分输出信号反馈到双T的“星型”连接点。
- 调用运放模型(如
绘制低通滤波器级:
- 调用另一个运放。
- 放置R1=R2=100k, C1=C2=10n,连接成Sallen-Key电压跟随器形式。
级联与仿真设置:
- 将第一级的输出节点连接到第二级的输入节点,第二级的输出连接到第三级的输入。
- 设置瞬态分析:
.tran 0 2 0 1m,仿真2秒时长,最大步长1ms,足以看到多个心电周期。 - 设置交流分析:
.ac dec 100 1 1k,从1Hz到1kHz扫描,用于观察整个系统的频率响应(波特图)。
4.2 关键仿真波形解读与问题预判
运行瞬态分析后,我们需要观察几个关键点的波形:
- 第一级输出:应该能看到被放大了约50倍的QRS脉冲(约50mV),但波形上叠加着巨大的、幅度可能超过信号本身的60Hz正弦波。这很正常,说明共模抑制起了作用,但差模的60Hz干扰(由于电极阻抗不平衡导致共模转差模)依然存在。
- 第二级输出:60Hz的正弦波干扰应该被显著削弱,理想情况下几乎变成一条直线。QRS脉冲变得清晰可见。如果陷波效果不好,波形上仍有明显的60Hz纹波,则需要回到原理图,微调双T网络的R或C值,或者在SPICE中直接参数扫描,找到最佳的陷波点。
- 第三级输出:波形应该更加光滑。由于我们用的心电模型是脉冲,所以输出也是光滑化的脉冲。如果输入是更复杂的心电模型,这里会得到干净的心电波形。
交流分析结果至关重要:
- 绘制整个系统的频率响应曲线(输出电压/输入电压 vs. 频率)。
- 你应该在60Hz处看到一个非常深的凹陷,衰减可能达到-40dB甚至更深,这意味着60Hz的信号被衰减了100倍以上。
- 曲线在150Hz附近开始以-40dB/十倍频程的斜率下降,这是二阶低通滤波器的特征。
- 在0.5Hz到40Hz(心电主要频段)的增益应该平坦且稳定,增益值就是总增益(约60dB,1000倍)。
实操心得:在LTSpice中,不要只满足于电路能跑通。要多做“压力测试”:1)改变输入信号幅度,看输出是否线性;2)改变60Hz干扰的幅度,看陷波器是否仍能有效工作;3)在输入端加入高频噪声源,看低通滤波器的效果。这些仿真能极大增强你对电路鲁棒性的信心。
5. 实物搭建、调试与心电图采集实战
仿真通过后,就可以在面包板或万用板上搭建实物了。这是理论走向实践的关键一步,也会遇到最多“意外”。
5.1 分级搭建与静态调试
绝对不要一次性把三级电路全焊上!必须分级搭建、分级测试。
搭建仪器放大器级:
- 在面包板上插好INA128芯片,注意电源引脚(±5V)和方向。
- 焊接好增益电阻Rg1。强烈建议:先用一个10kΩ电位器代替固定电阻,方便调整增益。
- 暂时不接输入电极。先用函数发生器产生一个差分小信号:可以将函数发生器的输出端接INA128的IN+,地端接IN-,设置一个1mVpp,1Hz的低频正弦波。
- 用示波器测量输出。调整电位器,使输出为50mVpp(增益50倍)。测量无误后,关掉电源,用万用表测量此时电位器的阻值,换上一个最接近的固定精密电阻。
搭建并单独测试陷波滤波器:
- 在另一区域搭建双T有源陷波电路。
- 输入接函数发生器,输出接示波器。
- 进行频率扫描:从10Hz慢慢增加到200Hz,观察输出幅度。你会在60Hz附近看到一个幅度急剧下降的谷点。用示波器的自动测量功能或光标功能,找到幅度最小的频率点,这应该就是实际陷波中心频率。
- 问题排查:如果谷点不在60Hz,比如在55Hz或65Hz,说明RC值有偏差。此时应微调双T网络中的电阻,通常是微调R3(那个R/2的电阻)。可以在R3上串联一个小的可调电阻(如5kΩ电位器),边扫频边调整,直到谷点精确对准60Hz。调好后测量总阻值,更换为固定电阻。
搭建并单独测试低通滤波器:
- 搭建Sallen-Key电路。
- 同样用函数发生器和示波器进行频率扫描。从10Hz扫到1kHz。
- 观察-3dB截止点(输出幅度下降到输入的70.7%)。这个点应该在150Hz附近。如果偏差较大,检查R、C值是否焊错。
5.2 系统集成与动态测试
三级电路分别调好后,就可以用导线将它们级联起来了:INA128输出 -> 陷波器输入 -> 低通滤波器输入。
模拟信号测试:
- 保持用函数发生器给INA128输入1mVpp/1Hz差分正弦波。
- 在陷波器输入端(即INA128输出端)和最终输出端同时用示波器的两个通道观察。
- 你应该看到,最终输出的是一个干净的、放大1000倍(1Vpp)的正弦波。此时,将函数发生器的频率调到60Hz,幅度可以调大一些(模拟强干扰),观察最终输出。理论上,输出应该几乎为零,这表明陷波器工作正常。
接入人体采集真实心电:
- 安全第一:确保整个电路由电池或隔离良好的医疗级电源供电,绝对不可使用未隔离的市电适配器直接供电,以防漏电风险。
- 准备三个心电电极片(一次性Ag/AgCl电极最佳),分别贴于:右腕(RA)、左踝(LA)、右踝(RL)。这是标准肢体导联I的接法(LA接INA128的IN+,RA接IN-,RL接电路参考地)。
- 用电极线将电极片连接到电路的输入端。注意保持导线简短并相互绞合,以减少空间电磁干扰。
- 将电路输出连接到示波器。
- 让测试者静坐放松。调整示波器的时基(如200ms/div)和垂直灵敏度(如0.5V/div),触发模式设为正常或自动。
你应该能在示波器上看到经典的心电图波形:P波、QRS波群、T波。可能会看到一些基线漂移(呼吸运动导致)和轻微的肌电干扰(微小毛刺),但整体的QRS波应该清晰可辨,并且没有明显的50/60Hz正弦波纹波。
5.3 实测波形分析与优化
观察到波形后,可以进行一些简单测量:
- 心率计算:测量两个相邻R波(QRS波最高点)之间的时间间隔(R-R间期),单位秒。心率(次/分钟)= 60 / R-R间期。
- 评估性能:
- 如果基线漂移严重,可能是电极接触不良或皮肤油脂导致阻抗过大。清洁皮肤,使用导电膏,确保电极贴紧。
- 如果仍有明显的工频纹波,检查陷波器中心频率是否准确。可以尝试微调陷波器的可调电阻。同时检查电路板布局,输入线是否屏蔽,电源去耦电容(每个芯片的电源引脚对地接一个0.1μF和10μF电容)是否焊好。
- 如果波形高频毛刺多,检查低通滤波器截止频率是否合适,或者尝试将截止频率稍微调低(如100Hz)。
6. 常见问题、故障排查与进阶技巧
即使按照步骤操作,实物电路也常常“罢工”。下面是我在多次项目中总结的排查清单和技巧。
6.1 静态故障排查表
| 现象 | 可能原因 | 排查步骤 |
|---|---|---|
| 上电后无输出,或输出为电源电压 | 1. 电源未接通或接反 2. 芯片损坏 3. 运放输出对地或电源短路 | 1. 用万用表测量各芯片电源引脚电压是否正确。 2. 断电,测量各运放输出引脚对地、对电源电阻,排除短路。 3. 更换芯片试试。 |
| 输出有高频自激振荡(波形上有毛刺或正弦波) | 1. 电源去耦不足 2. 电路布局不合理,反馈路径过长 3. 增益过高,接近运放带宽极限 | 1. 在每个运放电源引脚最近处,加焊0.1μF和10μF电容到地。 2. 检查布线,输入输出线远离,反馈电阻尽量靠近运放引脚。 3. 降低单级增益,采用多级放大。 |
| 增益与设计值严重不符 | 1. 增益电阻值错误或接触不良 2. 仪器放大器参考端(REF)未正确接地或接偏置电压 | 1. 用万用表测量增益电阻实际阻值。 2. 检查INA128的REF引脚,通常应接地(单电源供电时接Vcc/2)。 |
6.2 动态信号问题排查
| 现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 接入人体后信号微弱或全是噪声 | 1. 电极接触阻抗过大 2. 输入开路或短路 3. 第一级增益实际值太低 | 1. 用砂纸轻轻打磨皮肤角质层,使用导电膏,确保电极粘贴牢固。 2. 用万用表测量两个输入电极之间的电阻(应在几十kΩ到几百kΩ),确保既未开路(兆欧以上)也未短路(几kΩ以下)。 3. 单独用信号源测试第一级放大倍数。 |
| 波形上有规律的50/60Hz正弦波干扰 | 1. 陷波器中心频率偏移 2. 共模抑制不足 3. 空间电磁干扰 | 1.重点排查:单独测试陷波器电路,用扫频法精确校准其谷点频率至电网频率(用示波器观察市电变压器感应信号确定)。 2. 检查仪器放大器的两个输入线是否等长、绞合,参考端接地是否良好。 3. 使用屏蔽线连接电极,并将屏蔽层单点接地(通常在仪器放大器端)。 |
| 波形失真,QRS波变形 | 1. 电路带宽不足,高频成分被过度衰减 2. 运放压摆率不够,跟不上信号快速变化 | 1. 检查低通滤波器截止频率是否过低。可暂时旁路低通滤波器,看波形是否改善。 2. 确认使用的运放压摆率是否足够。对于QRS波这种快速上升沿,需要一定的压摆率。TL072(典型值13V/μs)对此应用足够。 |
| 基线缓慢漂移(不是呼吸波) | 1. 输入级存在直流失调 2. 电极产生极化电压 3. 耦合电容漏电 | 1. 仪器放大器本身有失调电压,可查阅数据手册,其REF引脚可以接一个可调电压来微调输出直流电平。 2. 使用高质量的Ag/AgCl电极,它们产生的极化电压小且稳定。 3. 如果电路中有隔直电容,检查其质量。 |
6.3 进阶优化与扩展思路
当基本电路工作稳定后,可以考虑以下优化,让系统更专业、更可靠:
- 右腿驱动电路:这是专业ECG设备中的标配技术。其原理是采集人体共模电压,通过一个运放反相放大后,驱动右腿电极(RL)。这形成了一个负反馈,主动将人体的共模电压“拉”到地电位,可以显著提升共模抑制比(CMRR),是消除工频干扰更有效的手段。可以在我们的仪器放大器前端加入这个电路。
- 高通滤波器:心电信号有很低的频率成分(ST段变化),但超低频的基线漂移(如呼吸、身体移动)是干扰。可以在仪器放大器之后,陷波器之前,加入一个截止频率为0.5Hz的一阶高通滤波器,滤除超低频漂移,使波形稳定在屏幕中央。
- 后级处理:我们的模拟输出可以接一个微控制器(如Arduino、STM32)的ADC引脚,进行数字化。在软件中,可以进一步做数字滤波(如滑动平均滤波、数字陷波)、QRS波检测和心率计算,实现一个完整的便携式心电监测仪。
- PCB设计:如果从面包板转移到自制PCB,布局布线至关重要。模拟部分要集中,远离数字部分;电源走线要宽,并铺铜作为地平面;输入线要走差分线对,并用地线包围屏蔽;去耦电容必须尽可能靠近芯片电源引脚。
这个基于LTSpice仿真和实物搭建的心电采集电路项目,就像一次完整的模拟电路“解剖”实验。它从最根本的物理原理和元器件特性出发,让你亲手操控每一个放大、滤波的环节。过程中遇到的每一个噪声、每一次失真、每一个不起振的电路,都是最宝贵的经验。当你最终从示波器上看到自己清晰的心跳波形时,那种将理论知识转化为实体信号的成就感,是任何虚拟仿真都无法替代的。希望这份详细的指南能帮你少走弯路,顺利捕捉到那抹生命的电信号。