从运放选型到PCB布局:自制心电放大器完整设计实战 做生物电信号采集绕不开的第一个硬骨头就是心电。相信不少电子爱好者、生物医学工程的同学甚至刚入行的硬件工程师都动过“自己搭一个心电放大器”的念头。市面上现成的心电模块很多但真正从集成运放开始自己设计前端放大链路、滤波网络、驱动电路再把它调通、测出稳定波形的人并不多。这不是一个“看 datasheet 就能抄完”的活里面涉及信号完整性、共模抑制、噪声控制、阻抗匹配等一系列问题。这篇博文我以自己完成的一个原创心电放大器设计为主线把整体方案、运放选型、每级电路参数计算、PCB布局要点、上电调试流程以及我在实际调板过程中踩过的坑和排查心得完整拆开讲一遍。文章面向有一定模拟电路基础、想真正动手做生物电采集前端的读者也适合准备电子设计竞赛或课程设计的同学参考。我会尽量把“为什么这样设计”讲透而不只是丢一个能用的原理图。1. 设计目标与整体思路拆解1.1 心电信号到底有多“难伺候”在确定电路架构之前得先搞清楚一个问题为什么心电放大器不能像普通音频放大器一样直接拿个运放把信号放大就完事心电信号本身有几个非常不利于放大的特点。首先是幅值小体表测量时典型的心电信号幅度只有 0.5mV 到 4mV需要放大到 ADC 可以采集的范围比如 0 到 3.3V意味着整体增益要做到 1000 倍左右也就是 60dB。这个增益量级并不算高难的是信噪比。人体本身就是一个巨大的天线50Hz 工频干扰在体表感应出来的电压往往比心电信号本身还要大好几倍如果前端没有足够的共模抑制能力后面放大再多也是白搭。第二个麻烦是源阻抗高。体表电极和皮肤接触面的阻抗可能达到几十千欧甚至更高而且这个阻抗会随着出汗、电极移动而变化。如果放大器的输入阻抗不够高信号就会在输入级被分压造成幅度衰减和波形失真。第三个问题是极化电位。电极和皮肤接触时会产生一个直流偏置电压医学上叫半电池电位通常在几十毫伏到几百毫伏的范围。这个直流电位如果直接进入高增益放大器后果就是运放输出瞬间饱和心电信号直接被“顶”到电源轨上。所以一个靠谱的心电放大器核心不是“放大”本身而是如何在一个充满直流偏置、共模干扰、高频噪声的环境中把微弱的差模心电信号干净地提取出来。理解了这一点后面所有电路设计决策就有了明确的出发点。1.2 整体架构三级放大 滤波 驱动我的整体方案采用经典的三级级联结构分为前置放大级、滤波级、后级放大级。前置放大级负责把电极拾取到的微弱差分信号进行初步放大同时提供极高的共模抑制比滤波级负责把带外干扰和噪声压下去后级放大级负责把信号进一步放大到 ADC 需要的幅度。除此之外系统还包括右腿驱动电路和屏蔽驱动电路。右腿驱动电路是抑制 50Hz 工频干扰的关键一环它把人体共模电位采样后反相放大再反馈回人体相当于主动“抵消”共模干扰。屏蔽驱动电路则用于减小输入线缆分布电容对共模抑制比的影响这在采用分体式电极线时尤其管用。整个系统的增益分配上前置级固定放大 10 倍左右后级做成可调增益范围 50 到 100 倍这样总增益可以覆盖 500 到 1000 倍。带宽设计为 0.05Hz 到 100Hz这个范围覆盖了心电信号的主要能量集中频段同时能有效抑制高频噪声和肌电干扰。2. 集成运放选型与核心电路设计2.1 前置级为什么选择仪表放大器心电放大器前置级的选择是所有设计决策里最关键的一步。这里不能用普通单端运放因为心电信号的拾取本身就是差分的两个电极之间的电位差才是有效信号而两个电极上同时感应的共模干扰必须被大幅度抑制。仪表放大器天生就是为这种场景设计的。它内部是两个对称的输入运放加一个差分放大级输入阻抗极高共模抑制比指标也远优于普通运放搭建的差分电路。经典的 AD620 就是这类芯片的代表它只需要一个外部电阻就能设定增益G 49.4kΩ / RG 1用起来非常方便。我在设计中也对比过用普通运放搭三运放仪表放大器结构但最终还是选择了集成仪表放大器。道理很简单三运放方案虽然成本更低但共模抑制比极度依赖电阻的精密匹配0.1% 精度的金属膜电阻依然会限制整体 CMRR 在 80dB 左右而 AD620 这类芯片内部经过激光调阻增益为 10 时 CMRR 可以到 100dB 以上。对于微弱生物电信号来说这 20dB 的差距就是“能看波形”和“全是干扰”的区别。带宽方面也需要留意。虽然心电信号只到 100Hz但前置级的增益带宽积不能只看这个因为高共模抑制比在较高频率下会退化。AD620 在增益 10 时的带宽约为 800kHz对这个应用来说绰绰有余。选定 AD620 作为前置放大核心RG 取 5.49kΩ按公式计算增益约为 10 倍这一步固定不变。2.2 高通与低通滤波划定信号频段前置放大级之后信号里还混杂着直流偏置、基线漂移、高频噪声和残余工频干扰。滤波级的作用就是“划频段”只让 0.05Hz 到 100Hz 的有用心电信号通过。高通滤波部分我选择在模拟前端用一阶 RC 高通截止频率设置在 0.05Hz 左右。用公式 f 1 / (2πRC) 计算取 R 1MΩ、C 3.3μF 时截止频率约为 0.048Hz。这个频率选得很低目的是尽量不影响心电 ST 段的形态因为 ST 段本身就是接近直流的缓慢电位变化如果高通截止频率设得太高比如 0.5HzST 段会被拉歪医生看心电图时会误判。当然RC 值过大也会带来问题就是高通建立时间变长上电后需要等好几秒甚至十几秒基线才能稳定下来这个我在调试部分会细说。低通滤波部分我用了二阶有源低通采用 Sallen-Key 结构截止频率 100Hz 左右。Sallen-Key 的好处是结构简单一个运放加四个阻容就能实现二阶滤波。设计时取 Q 值约 0.707对应巴特沃斯响应通带内最平坦既能有效滤除高频噪声又不会在截止频率附近产生明显的过冲。这里有一个容易被忽略但实际很重要的细节滤波级同样会产生增益误差。为了保证整机增益准确滤波网络里的电阻电容精度尽量选 1% 以上的电容首选 CBB 电容或薄膜电容其温度稳定性和精度都优于普通瓷片电容。2.3 后级放大与输出驱动滤波完成后的信号幅度仍然偏小需要后级放大级把它提到 ADC 能够满量程利用的水平。我在这里用一个通用运放比如 OPA2134 或者 LM358 都行关键是输入失调电压低一点会更好。电路采用同相放大结构增益通过一个 100kΩ 电位器来调节配合固定电阻实现 50 到 100 倍的可调范围。同相放大电路的增益公式是 G 1 Rf / Rg。我把 Rf 用 100kΩ 电位器Rg 用固定的 1kΩ 电阻增益范围就是 1 100k / 1k 101 倍电位器调到最小值时增益接近 1 倍。不过实际使用中我通常把增益预设到 80 倍左右配合前级的 10 倍整机增益约 800 倍采集到的心电信号幅度大约在 0.5V 到 2.5V 之间刚好适合 3.3V 供电的 ADC。输出端还要加上一阶无源低通截止频率约 500Hz目的是滤除后级运放可能产生的高频噪声以及数字电路串扰进来的高频毛刺。这个滤波虽然简单但对提升采样后的波形质量很有效成本却几乎为零。2.4 右腿驱动与屏蔽驱动消灭工频干扰的两张王牌50Hz 工频干扰是心电放大器设计里最顽固的敌人。它来自电网的电场耦合人体相当于一个悬浮的导体与电源线之间存在寄生电容会感应出约 50Hz 的共模电压幅度可达几伏甚至更高。仪表放大器虽然能抑制共模信号但抑制能力有限而且输入不对称、线缆分布电容不均都会让共模转差模单纯靠 CMRR 远远不够。右腿驱动电路就是针对这个问题的主动降噪方案。从两个输入电极取出人体的共模电压经过一个反相放大器放大后接到右腿电极上反馈回人体。这样做的本质是构建一个负反馈环路把人体电位“锚定”在电路参考地附近大幅度减小共模电压的幅值。我的实现方式是这样的共模反馈信号从前置级的 REF 端取出经过一个运放组成的反相放大器增益约 20 到 50 倍输出端通过一个 100kΩ 到 1MΩ 的电阻接到右腿电极。这个电阻是安全限流电阻生物电测量场景下必须有防止意外漏电流过大。这个运放增益不宜过高否则反馈环路容易振荡。屏蔽驱动也是小成本但收益明显的电路。心电输入线通常用屏蔽线但屏蔽层如果直接接地线缆的分布电容会在输入端形成额外的共模通路破坏 CMRR。屏蔽驱动电路的思路是让屏蔽层不接地而是接在一个电压跟随器的输出端跟随器的输入接共模电压。这样屏蔽层的电位和输入线缆的共模电位一致两者之间没有电位差分布电容就不会产生电流也就不再影响共模抑制比。3. 完整电路实现与参数计算3.1 各级电路与元器件取值清单把上面的设计思路落实到具体电路整机可以分成三个核心模块前端放大模块、滤波模块、电源与输出模块。下面给出的是我当时调试定稿的元器件取值注意电容精度和耐压这些细节。前置放大模块的电路是这样的两个心电电极分别经过 ESD 保护二极管和 100kΩ 限流电阻接入 AD620 的同相和反相输入端。AD620 的增益电阻 RG 接 5.49kΩ1% 精度第 5 脚 REF 端接右腿驱动电路和输出基准。AD620 采用 ±5V 双电源供电每一个电源引脚上都要加 0.1μF 陶瓷电容就近去耦。滤波模块的高通部分有争议有经验的工程师可能会觉得 RC 用 1MΩ、3.3μF 太大了电容漏电流会导致基线漂移。我实测下来在功放级输入阻抗足够高的前提下这个参数工作正常。如果需要更快建立时间可以把两极高通级联频率各设在 0.1Hz 左右等效截止频率接近 0.07Hz建立时间会快很多。这里我给的是单级方案全项目结构更简单。低通滤波模块采用 Sallen-Key 二阶结构。截止频率由 R 和 C 决定取 R1R216kΩC147nFC222nF用公式 f 1 / (2πR√(C1·C2)) 计算得约 101HzQ 值约 0.71。运放用前级 AD620 输出缓冲后的同相输入。值得注意的是Sallen-Key 结构中两个电容的比值直接影响 Q 值C1/C2 通常取 2 到 4 之间这里取约 2.1Q 值在 0.7 左右。元件清单汇总如下模块元器件取值/型号精度要求作用前置放大U1AD620-差分信号放大高CMRR前置放大Rg5.49kΩ1%设定前置增益约10倍输入保护D1 D2BAV99-ESD保护输入限流R1 R2100kΩ1%限流和抗RFI高通滤波R31MΩ1%高通时间常数RC高通滤波C33.3μF薄膜高通时间常数RC低通滤波R4 R516kΩ1%Sallen-Key 频率设定低通滤波C4 C547nF / 22nF薄膜Sallen-Key 频率设定后级放大U2OPA2134-可调增益放大后级放大Rf100kΩ 电位器-增益调节后级放大Rg1kΩ1%增益下限设定输出滤波R610kΩ1%一阶低通输出滤波C633nF薄膜一阶低通约482Hz右腿驱动U3OPA2134-共模反馈右腿驱动R7 R820kΩ / 1MΩ1%反相放大20倍右腿驱动R9200kΩ-安全限流电阻电源去耦C7 C80.1μF陶瓷电源去耦3.2 PCB布局与装配要点原理图再漂亮PCB 布局不合理也一样出不来好波形。心电放大器属于典型的“高输入阻抗、弱信号”模拟电路布局上最核心的原则是保护输入端。输入线要尽可能短AD620 的两个输入引脚周围不要走数字信号线也不要让电源走线和输入走线平行长距离伴行。我的布局经验是输入接插件放在板边靠近 AD620 的位置中间不穿其他信号线。AD620 的输出走线尽量短直接进入高通 RC 电路。滤波运放放在 AD620 的同一侧形成一条清晰的“信号流”路径避免输出信号反馈耦合到输入端。电源部分采用星形接地和电源去耦结合的策略。电源从板子一角接入先经过 10μF 钽电容和 0.1μF 陶瓷电容再到各运放电源引脚。模拟地单独一个平面不要和数字地直接大面积融合如果板上同时有 MCU用 0Ω 电阻或磁珠单点连接模拟地和数字地。屏蔽驱动引线要从屏蔽层连接点单独引出不能和信号地混在一起。右腿驱动运放输出端到电极接插件的走线要保持一定宽度因为这是一个低阻抗反馈输出。另外右腿驱动走线要尽量远离输入端走线防止反馈信号直接耦合到输入形成正反馈导致振荡。还有一个实际细节心电输入线的屏蔽层在 PCB 端不要直接接外壳地而是接到屏蔽驱动电压跟随器的输出端。如果只做单板测试没有分体线缆这个电路可以暂时不接但预留焊盘方便以后扩展。3.3 上电调试流程从“先测运放”到“看到心跳”焊完板子先别急着接人体按照下面的顺序逐级调试能帮你省下大量排查时间。第一步断电检查。用万用表测量电源正负端对地阻抗排除短路。确认所有电解电容极性正确这个看似基础但很关键。第二步空载上电。先不接输入电极给板子通 ±5V 电源用示波器观察各级运放输出。正常情况下AD620 输出应该是接近 0V 的直流电平因为两个输入都浮空没有差分信号。如果输出已经到达电源轨先检查前置增益电阻是否焊错、AD620 的 REF 端接法是否正确。第三步输入短接测试。把两个输入端短接这时输入差分信号为零理论上输出端应该是一个干净稳定的直流电平示波器上看不到明显交流纹波。这一步能验证共模抑制通路是否正常工作。如果输出端有 50Hz 大幅波形先检查右腿驱动是否接入、屏蔽层是否正确驱动再检查电源本身纹波是否过大。第四步注入测试信号。用信号发生器输出一个 1mVpp、10Hz 正弦波通过两个 10kΩ 电阻分压后接到两个输入端模拟心电的差分信号源观察后级输出波形。这时候输出应该有约 800mVpp 的正弦波数字示波器能看得很清楚。如果是这个结果说明放大链路和滤波链路都没问题。第五步人体实测。双手分别握住两个心电电极或者贴片电极贴到胸口右腿电极夹到右腿或右手腕。这时候示波器上应该能出现清晰的心电波形幅度约 0.5V 到 2V。这里有个小技巧观察时示波器用 DC 耦合时间轴设在 0.5s/div 左右电压轴设在 0.5V/div能看到完整的 P-QRS-T 波形。如果波形有漂移多等十几秒让高通电路建立稳定。人体实测时务必注意安全所有电源隔离处理最好用电池供电严禁在连接示波器的情况下接入非隔离市电电源。关于这一点现在很多入门书籍和帖子没有强调但在生物电测量这个领域是绝对不能妥协的底线。4. 常见问题与排查技巧实录4.1 50Hz 工频干扰压不下去这是心电放大器制作中最常见、也最容易让人抓狂的问题。现象是输出波形上叠了一层密密麻麻的“毛草”频率固定 50Hz幅值甚至比心电信号还大。排查顺序有讲究。第一看右腿驱动环路有没有闭环。右腿驱动输出端如果没有接到人体或者运放供电异常共模反馈就失效了50Hz 干扰会直接窜进来。用示波器探头分别测两个输入端对地的共模电压如果达到伏特级而右腿驱动接上后降到了毫伏级说明环路已经工作。第二看屏蔽层接法。如果屏蔽层直接接地而输入线又比较长分布电容的共模转差模作用会非常明显。这时候把屏蔽层改成接屏蔽驱动输出50Hz 干扰通常会大幅下降。第三看电源纹波。用示波器 AC 耦合测电源输出如果纹波超过 20mVpp需要考虑加强电源滤波。增加一级 LC 滤波L 取 10μH 到 100μHC 取 100μF 电解加 0.1μF 陶瓷通常能把纹波压到 5mV 以下。还有一个比较隐蔽的问题实验桌上如果同时开着开关电源给其他设备供电开关频率的谐波会耦合进高阻前端。解决办法是实测时把手机充电器、开关电源类设备尽量移远改用电池供电最干净。4.2 输出饱和或波形削顶最常见的原因是前级增益设置过高叠加电极极化电位后信号直接顶到电源轨。这类情况分两种一是输入短路但输出已经是电源正轨说明偏置电流回路有问题AD620 的输入偏置电流必须有一条返回路径如果输入端串了大电阻而另一端没有到地的回路偏置电流会把输入拉到电源轨。解决办法是在两个输入端到地之间接一个 1MΩ 到 10MΩ 的电阻给偏置电流提供泄放通路。第二种情况是接上人体后输出饱和波形只有一截平的“帽沿”。这往往是因为电极极化电位过大或者后级增益太大。用万用表先测一下电极之间的直流电压正常应在几十毫伏到几百毫伏如果超过 1V就需要换电极、清洁皮肤或者重新贴片。在电路上也可以加一个隔直电容到后级避免极化电位被二次放大。还有一种情况是运放损坏或电源没有完全建立。AD620 是精密仪表放大器如果输入端加了过高的静电电压芯片内部输入级容易损坏表现就是输出直接固定在电源轨。所以输入端加 ESD 保护二极管非常有必要不能省。4.3 基线漂移严重、波形缓慢浮动刚上电的几十秒内波形慢慢飘动这是正常的高通电路在建立稳态。但一直漂移不停就需要检查了。最常见的原因是电极接触不良。皮肤表面的油脂和角质层会显著提高接触阻抗导致基线不稳定。用酒精棉擦拭皮肤再贴电极接触阻抗能降低不少。另一个原因是电极干燥或导电膏不足尤其在冬天空气干燥时这个问题很明显。电路层面的原因是高通时间常数太大。0.05Hz 的高通RC 乘积约 3.3 秒理论上建立时间是 5 倍时间常数也就是 16 秒左右。如果你等足了 20 秒还是漂再看电极。如果高通电容用了电解电容或漏电流较大的陶瓷电容漏电流会造成电压偏置漂移这时候换用薄膜电容能从根本上解决问题。我实测时还遇到过一种情况示波器探头地线夹和人体形成了新的共模回路。示波器探头的地线夹接了 220V 市电的地两端设备之间有地电位差这个地环路会产生明显的 50Hz 交流声和漂移。解决办法是尽量用电池供电和浮地示波器或者把示波器探头地线夹悬空用差分探头做测量但成本和操作门槛会高一些。4.4 调试过程中的波形异常速查表异常现象可能原因排查方向输出始终在电源正轨AD620 无输入偏置回路两个输入端对地加 1MΩ 到 10MΩ 电阻输出大量 50Hz 毛刺右腿驱动失效或屏蔽层接地检查右腿运放屏蔽层改接屏蔽驱动波形幅度过小增益电阻虚焊或后级电位器异常测量 RG 实际阻值调整电位器基线长时间漂移高通电容漏电或电极接触不良更换薄膜电容清洁皮肤信号上下不对称严重运放单电源供电或输出偏置不正确检查正负电源电压是否对称接人体后运放发热输入端存在过大外部电压检查电极接线加 ESD 保护波形有过冲或振铃低通 Q 值过高增益带宽积不足加大 C1/C2 比值降低闭环增益5. 后续扩展与实测体会这套心电放大器前端做好之后可以很方便地扩展成完整的心电采集系统。后端接一个 STM32 或 ESP32 的 ADC用 250Hz 采样率就能满足心电信号分析的需求。我自己的下一步就是把后级输出接到 MCU加上蓝牙模块把波形实时传送到手机端显示做成一个便携式单导联心电记录仪。如果想进一步压低噪声可以在后级加一个陷波器做 50Hz 数字滤波但模拟前端还是要尽量做好数字滤波解决不了模拟域的共模饱和问题。前置放大芯片 AD620 之外也可以尝试 INA128、INA333 这些同类型仪表放大器。INA333 是零漂移结构偏置电流更小采用单电源供电时表现也不错适合对功耗有要求的便携设备。如果换成 INA333电路架构不用大改只要注意它的输出基准端接法和 AD620 略有差异即可。最后分享一个我调试时学到的教训心电放大器这类高增益弱信号电路很多时候问题不在电路本身而在测试方法。示波器探头接地点选择不当、电源不干净、测试环境里开关电源太近这些外部因素产生的干扰会让人误以为电路设计有问题白白浪费大量排查时间。先保证测试环境干净再怀疑电路这个顺序能省下很多精力。生物电采集前端是一门“细节里出魔鬼”的功夫每一步的选择都有取舍但把原理吃透之后从 0 到 1 做一个能用的心电放大器其实并不遥远。希望这篇记录能帮后来者少走点弯路。