从零设计运动心率监测PCB:分立式PPG方案与抗干扰实战
2026/8/20 6:47:04 网站建设 项目流程

1. 项目概述:为运动场景打造心率监测PCB

心率监测,这个功能如今在智能手表、手环上已经司空见惯。但你是否想过,抛开那些集成度极高的商业模块,自己从零开始设计一块专门用于运动场景的心率监测电路板(PCB),会是怎样的体验?这不仅仅是画几根线、摆几个元件那么简单,它涉及到模拟信号的微弱捕捉、数字信号的精确处理、运动伪影的顽强对抗,以及如何在剧烈晃动中依然保持数据的稳定可靠。今天,我就以一个实际项目——“为运动设计的心率监测PCB板”为例,拆解其中的核心思路、技术难点和实操细节。无论你是电子爱好者想深入了解生物信号采集,还是工程师正在开发相关产品,希望这篇从原理到Layout的完整复盘能给你带来实实在在的参考。

这块板子的核心目标很明确:在用户跑步、骑行、健身等运动状态下,持续、稳定、准确地监测心率。这意味着我们的设计必须优先考虑抗运动干扰能力、低功耗以延长续航,以及足够的信号保真度。整个系统通常围绕光电容积脉搏波描记法(PPG)传感器展开,通过LED照射皮肤,光电二极管接收反射光,由于血液脉动导致的光吸收变化,从而提取出心率信号。听起来原理简单,但要把这个微弱的、掺杂着大量噪声的信号,从一块自己设计的PCB上可靠地提取出来,每一步都是挑战。接下来,我们就从设计思路开始,一步步把它实现。

2. 核心设计思路与方案选型

设计一块专用的心率监测PCB,首先得想清楚我们要做什么,以及为什么要这么做。直接购买现成的集成模块(比如MAX30102)当然最快,但那更像是在使用一个“黑盒”,很多底层性能优化和特定场景适配会受限。自己设计PCB,意味着我们可以从传感器选型、模拟前端设计、电源管理到布局布线进行全面定制,尤其针对“运动”这个苛刻场景做深度优化。

2.1 为何选择分立式PPG方案而非集成模块?

市面上有AFE4404、MAX30101/2等优秀的集成式PPG前端芯片,它们集成了LED驱动、光电接收、ADC甚至算法引擎。但对于一个追求极致性能和学习深度的项目,我选择了分立式方案。主要原因有三点:

  1. 灵活性最大化:分立方案允许我自由选择LED的波长(通常绿光对运动伪影抑制更好,红光/红外光穿透更深)、光电二极管的类型(如大面积PIN光电管以提高信噪比),以及模拟前端的每一个放大器和滤波器参数。我可以针对手腕、耳垂等不同测量部位优化光学路径和电路参数。
  2. 成本与功耗的精细控制:在量产视角下,集成模块可能更优。但在原型开发和特定高性能需求下,分立方案可以通过选用更低噪声的运放、更高效的LED驱动电路,在关键指标上超越通用集成芯片。例如,我可以为LED设计带消隐控制的恒流源,仅在采样瞬间大电流驱动,极大降低平均功耗。
  3. 深入理解信号链:这是最重要的原因。从光电转换的微弱电流(pA~nA级)开始,经过跨阻放大器(TIA)转换为电压,再经过多级放大、滤波,最后送入ADC,整个信号链的每一个环节都亲手设计,会让你对PPG信号的特性、噪声来源(环境光、运动、电源纹波)有刻骨铭心的认识。这份经验是直接用集成模块无法获得的。

2.2 系统架构框图与信号流

确定了分立路线,整个系统的架构就清晰了。下图展示了核心信号流:

[光学部分] LED (绿光/红光) -> 皮肤组织 -> 光电二极管 (PD) ^ | | v LED驱动电路 微弱光电流 (I_ph) | v [模拟前端] 跨阻放大器 (TIA) -> 可编程增益放大器 (PGA) -> 主动滤波器 (带通) | v [数字部分] 模数转换器 (ADC) -> 微控制器 (MCU) -> 算法处理 -> 输出/显示 ^ | [辅助系统] 精密电源管理、运动传感器 (IMU)、无线通信 (可选)

核心思想是:将极其微弱的光电流(可能低至几十纳安,变化量仅百分之几)无失真地放大到MCU的ADC量程(如0-3.3V),同时最大限度地抑制噪声。运动传感器(如MPU6050)并非用于直接测心率,而是为了提供加速度数据,供后续算法进行运动伪影消除(Motion Artifact Removal, MAR)。

2.3 关键器件选型背后的考量

选型直接决定了板子的性能天花板。

  1. 光学器件
    • LED:选择高辐射强度的贴片LED。绿光(~530nm)是首选,因为其对血液中氧合血红蛋白的吸收变化更敏感,且皮肤表层黑色素吸收较少,信号更强。更重要的是,绿光在皮下穿透浅,主要反映毛细血管脉动,对运动引起的血管位移干扰相对不敏感,抗运动伪影能力优于红光/红外光。
    • 光电二极管(PD):选择大面积、高响应度的PIN光电二极管。面积大意味着能收集更多反射光,提高信噪比(SNR)。要特别关注其暗电流(Dark Current)参数,暗电流越小,在无光照下的本底噪声越低。通常选择带有漫射器或专用光学窗口的封装,以减少环境光直射干扰。
  2. 模拟前端核心
    • 运算放大器:这是心脏。TIA和后续放大滤波的运放选择至关重要。
      • TIA运放:必须选择低输入偏置电流(Ib)、低输入失调电压(Vos)、低噪声(尤其是电压噪声密度en)的精密运放。因为PD输出是电流信号,Ib会直接形成误差。FET输入型运放(如TI的OPA381, OPA2380)是理想选择,其Ib可低至pA级。
      • PGA/滤波器运放:对Ib要求可放宽,但需关注增益带宽积(GBW)、压摆率(SR)和噪声。信号频率通常在0.5Hz到5Hz之间(对应心率30-300 BPM),但为了保持波形形状,需要保留更高次谐波,所以带宽通常设计在几十Hz。选择GBW足够(至少是信号最高频率的10倍以上)、噪声低的运放即可。
    • ADC:如果MCU内置ADC性能足够(如12位以上,采样率几百Hz),可以优先使用以简化设计。但内置ADC往往噪声较大。对于更高要求,可以选择外置ΔΣ-ADC,如ADS1291,它具有极高的分辨率和内置可编程增益放大器(PGA),能极大简化前端设计,但成本和复杂度会增加。
  3. 微控制器(MCU):需要足够的计算能力运行实时心率算法(如峰值检测、滤波、运动补偿),以及足够的ADC性能和外围接口(I2C/SPI连接IMU,可能还有蓝牙)。基于Cortex-M4内核的MCU(如STM32F4系列)是不错的选择,其具备DSP指令集,能高效处理数字滤波运算。

注意:器件选型不是选最贵的,而是选最合适的。需要仔细阅读数据手册,用仿真工具(如TI的TINA-TI)对关键电路(尤其是TIA)进行噪声分析和稳定性仿真,避免实际制作后才发现振荡或噪声超标。

3. 电路设计详解与核心参数计算

有了架构和器件,接下来就是“纸上谈兵”的电路设计阶段。这是将理论转化为可生产图纸的关键。

3.1 跨阻放大器(TIA)设计:捕捉微弱信号的第一关

TIA将光电二极管(PD)输出的光电流I_ph转换为电压V_out = -I_ph * R_f。设计要点如下:

  • 反馈电阻R_f计算:这是增益设置的核心。假设PD在典型光照下产生I_ph = 100nA的电流,我们希望输出摆幅在1V左右(为后续留出余量),那么R_f = V_out / I_ph = 1V / 100nA = 10 MΩ。这是一个非常大的电阻。
  • 稳定性与噪声优化
    • 反馈电容C_f:大反馈电阻与PD的结电容C_pd和运放的输入电容会形成一个极点,导致电路在高频时相位裕度不足,容易振荡。必须并联一个小的反馈电容C_f进行补偿。其值可根据公式C_f = sqrt( C_pd / (2π * R_f * GBW) )初步估算,并通过仿真微调。通常为几pF到几十pF。
    • 噪声来源:TIA的噪声主要来自反馈电阻的热噪声和运放的电压噪声。R_f越大,热噪声电压越大(V_n = sqrt(4kTR_f*BW))。因此,需要在增益(灵敏度)和噪声之间权衡。有时会采用T型反馈网络来避免使用超大阻值电阻。
  • 实际电路示例
    PD | (阴极接Vdd,阳极接运放反相端) | |----/\/\/\----> Vout | R_f (10MΩ) | | | --- C_f (5pF) | --- | --- | (运放反相输入端) | OPAMP (如OPA2380) | V (输出)

    实操心得:TIA是噪声的“放大器”,布局时必须让PD、R_f、C_f和运放的反相输入端尽可能靠近,走线最短,最好用接地屏蔽环(Guard Ring)包围,以减小寄生电容和电磁干扰。反馈电阻应选用低噪声、低电压系数的精密金属膜电阻。

3.2 可编程增益与滤波电路设计

TIA输出的信号幅度可能随个体差异、佩戴松紧而变化,因此需要可编程增益放大器(PGA)进行动态调整。我们可以用运放和模拟开关(如CD405x系列)或数字电位器来实现多档增益。

更重要的是滤波。PPG信号有用带宽约0.5-5Hz,但环境中充斥着各种噪声:

  • 环境光干扰:主要是工频(50/60Hz)及其谐波。
  • 运动伪影:低频(<1Hz)大幅度的基线漂移。
  • 电源噪声、热噪声等

因此,我们需要一个带通滤波器。通常由一个高通滤波器(HPF,截止频率约0.5Hz)去除基线漂移,和一个低通滤波器(LPF,截止频率约10-20Hz)抑制高频噪声。采用多反馈(MFB)或Sallen-Key有源滤波器结构是常见选择。

滤波器参数计算示例(Sallen-Key 二阶低通): 假设截止频率fc = 15Hz,品质因数Q=0.707(巴特沃斯响应)。 选择电容C1 = C2 = 100nF(常用值)。 根据公式R1 = R2 = 1 / (2π * fc * C * sqrt(2))计算电阻。R1 = R2 ≈ 1 / (2 * 3.14 * 15 * 100e-9 * 1.414) ≈ 75 kΩ。 实际选用E96系列中的75kΩ电阻即可。

3.3 电源与LED驱动电路设计

电源管理是低功耗和低噪声的基石。模拟部分(特别是运放和传感器)需要极其干净的电源。建议使用低压差线性稳压器(LDO)如TPS7A系列,为模拟部分单独供电,并与数字部分的电源用磁珠或0Ω电阻隔离。电源输入端和每个芯片的电源引脚附近,都必须放置足够容量的去耦电容(如10uF钽电容 + 100nF陶瓷电容),且电容应尽可能靠近引脚。

LED驱动需要精心设计以降低功耗。心率监测是间歇采样的,LED不需要常亮。我们可以用MCU的PWM信号控制一个MOSFET(如SI2301),来开关一个恒流源电路。恒流源可以用运放和MOSFET搭建,确保LED发光强度稳定,不受电源电压波动影响。同时,必须在LED驱动瞬间,为TIA电路加入一个消隐(Blanking)电路(可以用模拟开关短接TIA输出或使能一个放电通路),防止LED开启瞬间的电流冲击饱和运放,造成采样无效期。

4. PCB布局布线:从原理图到可靠硬件的跨越

原理图正确只是成功了一半,PCB布局布线(Layout)的好坏直接决定了最终性能,尤其是对于处理nA级微弱信号的电路。

4.1 层叠结构与整体布局规划

对于这个复杂度的板子,双面板是起步,四层板是理想选择。如果使用四层板,典型的层叠结构为:

  • Top Layer: 放置主要元件(传感器、运放、阻容)、关键信号线(模拟信号)。
  • Inner Layer 1完整的地平面(GND Plane)。这是最重要的层,为所有高频信号提供最短回流路径,屏蔽噪声。
  • Inner Layer 2电源平面(Power Plane)或作为数字信号布线层。
  • Bottom Layer: 放置次要元件、去耦电容、以及相对不敏感的走线。

整体布局原则

  1. 功能分区:明确划分模拟区(TIA、滤波器、模拟电源)、数字区(MCU、数字电源、数字接口)和大功率区(LED驱动)。各区之间用“壕沟”(无铜区域)进行隔离,仅在一点(通常是电源入口处的滤波电容接地端)进行单点连接,防止数字地噪声窜入模拟地。
  2. 信号流走向:按照原理图的信号流向(PD -> TIA -> 滤波器 -> ADC)进行布局,使信号路径尽可能短、直,避免迂回交叉。
  3. 传感器核心区:将PD和LED作为布局的绝对中心。它们应紧密相邻(光学设计决定的距离),并被模拟地平面完整包围。

4.2 关键信号布线规则与技巧

  1. 模拟小信号走线(TIA输入/输出)

    • 最短原则:PD到TIA反相输入端的走线必须最短,用粗线(如10-15mil)直接连接,减少引入天线效应和寄生电容。
    • 保护环(Guard Ring):在TIA反相输入端走线周围,用一条接模拟地的铜皮走线将其包围起来。这能吸收漏电流,屏蔽电场干扰。
    • 避免过孔:尽可能在顶层完成布线,避免使用过孔,因为过孔会引入额外的寄生电感和电容。
    • 远离干扰源:绝对远离时钟线、数字信号线、电源线,特别是LED驱动的大电流走线。如果必须交叉,应垂直交叉。
  2. 电源布线

    • 星型连接或电源平面:对于模拟电源,最好采用星型拓扑,从LDO输出端单独引线到各个运放的电源引脚。如果使用电源平面,要确保其完整,避免被其他走线割裂。
    • 去耦电容的放置:每个IC的电源引脚和地引脚之间,必须就近放置一个100nF陶瓷电容(最好用两个容值如100nF和10uF并联)。电容的接地端到地平面的过孔距离要最短,形成最小回流环路。
  3. 地平面处理

    • 完整性:确保地平面尽可能完整,不要被过多的过孔和走线割裂得支离破碎。
    • 模拟/数字地分割与单点连接:这是控制噪声的关键。在物理上用无铜区域将模拟地和数字地区域分开。然后在电源入口滤波电容的接地处,或ADC芯片下方,用一个0Ω电阻或磁珠将两地连接在一起。这个连接点是整个板子地噪声的“泄洪闸”,必须精心选择。
  4. LED驱动走线:这是板子上电流最大的部分(可能瞬间达到几十mA)。走线要宽(根据电流计算,通常60mil以上),路径短,且最好在底层或内层,远离敏感的模拟小信号线。

4.3 光学部分与屏蔽设计

  • 开窗与遮光:在PD和LED对应的PCB区域,需要开窗(露出铜皮或做沉金处理作为反射层),并设计遮光结构(如加装黑色橡胶圈或使用不透光外壳),防止环境光从侧面直接照射到PD,这是抑制环境光干扰最有效的物理方法。
  • 外壳与接地:整个PCB板应安装在接地的金属屏蔽壳内,屏蔽壳与板子的模拟地通过多点连接,以屏蔽外部射频干扰。

踩坑实录:在一次早期版本中,我忽略了PD保护环,且TIA反馈电阻的走线过长,导致电路本底噪声极大,几乎淹没了PPG信号。后来用保护环包围并缩短走线后,信噪比提升了近20dB。另一个坑是模拟和数字地分割后,单点连接的位置选择不当(放在了MCU下方),导致数字噪声通过地平面耦合到了ADC的参考地。后来将单点连接位置改到板子边缘的电源入口处,问题才得以解决。

5. 打样、焊接与调试实录

设计完成,生成Gerber文件发给板厂(如嘉立创)打样。收到裸板后,真正的挑战才开始。

5.1 焊接注意事项

  1. 顺序很重要:先焊接电源相关器件(LDO、滤波电容),确保上电前电源网络是正常的。然后焊接最核心、最脆弱的器件——运算放大器。静电防护(ESD)必须到位,使用防静电手环和烙铁。
  2. 传感器焊接:PD和LED通常是透明或浅色封装,对热敏感。焊接时要使用低温焊锡,快速焊接,避免长时间加热导致内部损坏或透镜变形。
  3. 检查短路/开路:焊接完成后,用万用表蜂鸣档仔细检查所有电源对地是否短路,关键信号网络是否连通。

5.2 上电调试与信号测量

  1. 分级上电:不要直接上主电源。可以用可调电源,先从低电压(如1.8V)慢慢调高,观察电流是否异常。同时用手触摸各个芯片,检查有无异常发热。
  2. 静态工作点测试:不上电LED,测量TIA输出端的电压。它应该稳定在运放的“虚地”电位附近(如果用的是单电源供电,通常是电源中点电压,如1.65V)。如果输出饱和到电源轨,可能是TIA振荡、PD接反或运放损坏。
  3. 动态信号测试
    • 用示波器观察TIA输出。在室内光下,应该能看到明显的50/60Hz工频干扰。用手指轻轻按住PD(模拟测量),应该能看到一个微小的电压变化,这是由手指的轻微压力和温度引起的伪信号,证明TIA基本工作。
    • 然后给LED一个低频方波驱动(如1Hz,占空比10%),用示波器触发观察。此时应该能看到清晰的PPG脉冲波形!如果看不到,检查LED驱动电流是否足够,PD极性是否正确,以及所有接地是否良好。

5.3 软件调试与算法验证

硬件信号正常后,通过MCU的ADC采集数据,通过串口发送到电脑(如使用Python的Matplotlib)进行可视化。

  1. 原始信号观察:你会看到信号混杂着高频噪声和低频漂移。这就是我们设计滤波电路要对付的东西。
  2. 数字滤波:在MCU中实现软件数字滤波器(如IIR或FIR带通滤波器),进一步净化信号。将滤波前后的波形对比,可以验证硬件滤波器的效果。
  3. 心率算法:最简单的算法是时域峰值检测。在滤波后的信号中,寻找波峰,计算波峰间的时间间隔(IBI),然后转换为心率(HR = 60 / IBI)。更鲁棒的算法会结合运动传感器数据进行自适应滤波或使用频域分析(如FFT)。
  4. 运动干扰测试:这才是终极考验。佩戴好设备,在静止状态下记录一段稳定心率。然后开始原地跑步或摆动手臂,观察信号。理想情况下,经过算法处理,心率值应该保持相对稳定。你会看到原始信号出现巨大的基线漂移和畸变,这正是运动伪影。

6. 常见问题、故障排查与优化技巧

即使设计再仔细,第一版板子也难免遇到问题。下面是一些典型问题及排查思路:

问题现象可能原因排查步骤与解决方案
TIA输出饱和(始终为高或低电平)1. 运放供电错误或损坏。
2. PD极性接反(光电二极管应反偏)。
3. 反馈电阻R_f开路或虚焊。
4. TIA电路振荡(相位裕度不足)。
1. 检查运放电源引脚电压。
2. 确认PD阴极接高电位,阳极接运放反相端。
3. 测量R_f阻值。
4. 用示波器看输出是否有高频毛刺,尝试在R_f上并联一个更大点的电容(如增加几pF)。
信号噪声极大,看不到脉搏波形1. 电源噪声大。
2. 地线设计糟糕,数字噪声耦合。
3. 环境光干扰严重。
4. TIA输入线过长,无保护环。
1. 用示波器探头直接测LDO输出,看纹波。
2. 检查模拟/数字地分割和单点连接。
3. 在暗室或遮光环境下测试。
4. 检查布局,为TIA输入添加接地保护环。
LED驱动时,信号出现大幅瞬态脉冲LED开启瞬间的电流冲击导致运放饱和,消隐电路未起作用或效果不佳。1. 检查消隐电路的控制时序是否与LED驱动同步。
2. 增大消隐开关的导通电阻或并联电容,延长消隐时间。
3. 在TIA输出端增加一个钳位二极管到电源轨,限制电压摆幅。
心率读数在运动时完全不准1. 运动伪影过大,硬件滤波带宽不够或算法未启用运动补偿。
2. 佩戴不紧,光学信号弱。
3. 传感器位置移动。
1. 确认IMU数据已正确采集并与PPG信号同步。优化运动补偿算法(如自适应滤波)。
2. 改进结构设计,确保佩戴时传感器与皮肤接触紧密且稳定。
3. 尝试使用多波长(绿光+红光)测量,利用算法区分血液信号和运动信号。
功耗过高1. LED驱动电流过大或占空比过高。
2. 运放等模拟器件静态电流大。
3. MCU未进入低功耗模式。
1. 优化LED驱动参数,找到能可靠检测的最小电流和最低采样率。
2. 选用低功耗运放(如微功耗运放)。
3. 在MCU采集间隙,将其和外围电路置于睡眠模式。

一些进阶优化技巧

  • 自动增益控制(AGC):在MCU中监测信号幅度,动态调整PGA的增益或LED的驱动电流,以应对不同肤色、不同佩戴松紧带来的信号强度变化。
  • 直流消除:在数字域,可以计算信号的滑动平均值(直流分量),然后从原始信号中减去,这样可以更有效地消除基线漂移,而不用依赖高通滤波器可能带来的相位失真。
  • 多通道参考:可以增加一个远离动脉的“参考”光电二极管,主要接收环境光和运动引起的反射光变化。将主信号减去参考信号,能在一定程度上抵消共模干扰。

设计一块用于运动心率监测的PCB,是一个融合了模拟电路设计、数字信号处理、PCB布局和嵌入式编程的综合性项目。它没有唯一的正确答案,每一个参数的选择、每一根走线的布置,都影响着最终的性能。这个过程充满了挑战,但当你在示波器上第一次看到自己设计的电路清晰地捕捉到脉搏的跳动,并且在晃动中依然能稳定输出心率值时,那种成就感是无与伦比的。希望这份详细的复盘能为你点亮一盏灯,少走一些我走过的弯路。记住,耐心调试、仔细测量、持续迭代,是硬件开发不变的法宝。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询