1. PPG信号基础:光电容积描记法原理、血氧饱和度定义、双波长测量理论

大家好,欢迎来到这门课的第一讲。

说实话,PPG信号处理这个领域,我摸爬滚打了快十年。从最早用分立元件搭模拟前端,到现在用一颗小小的AFE芯片搞定一切,踩过的坑真不少。今天咱们就从最基础的东西聊起——光电容积描记法到底是怎么回事,血氧饱和度怎么定义的,以及为什么非得用两个波长。

1.1 光电容积描记法原理

光电容积描记法,英文叫Photoplethysmography,简称PPG。说白了,就是用光来测量血管里血液体积的变化。

你想想看,心脏每跳动一次,血液就被泵到全身。这个过程中,血管里的血容量会周期性变化。我们用一束光照射皮肤,透过组织或者反射回来的光强,就会随着血容量的变化而变化。把这个光信号转成电信号,再放大、滤波,就得到了PPG波形。

我个人习惯把PPG信号分成两部分:

  • 直流分量(DC):由皮肤、骨骼、肌肉等非脉动组织吸收的光。这部分基本不变。
  • 交流分量(AC):由动脉血脉动引起的光强变化。这才是我们真正关心的信号。

关键点:AC分量通常只有DC分量的1%~5%。这意味着什么?意味着你的信号非常微弱,很容易被噪声淹没。我在项目中遇到过,一开始用普通运放直接放大,结果噪声比信号还大。后来才明白,必须用高共模抑制比的仪表放大器,配合精密偏置消除电路。

1.2 血氧饱和度定义

血氧饱和度,医学上叫SpO2。它衡量的是血液中氧合血红蛋白(HbO2)占全部血红蛋白(HbO2 + Hb)的百分比。

公式很简单:

SpO2 = [HbO2] / ([HbO2] + [Hb]) × 100%

正常人的SpO2一般在95%~100%之间。低于90%就算低氧血症了,需要警惕。

嗯,这里要注意:血氧饱和度有两种定义方式。一种是功能饱和度,只考虑HbO2和Hb;另一种是分数饱和度,还会考虑碳氧血红蛋白(COHb)和高铁血红蛋白(MetHb)。临床上常用的是功能饱和度,但如果你做的是高端医疗设备,分数饱和度也得考虑进去。

我的经验:在消费级血氧仪里,我们通常只测功能饱和度。因为COHb和MetHb的浓度很低,对结果影响不大。但如果你做的是ICU监护仪,那就必须用多波长来校正这些干扰成分了。

1.3 双波长测量理论

为什么非得用两个波长?一个不行吗?

答案是不行。因为单个波长只能测出光强的变化,但无法区分这个变化是血氧变化引起的,还是血容量变化引起的。你需要两个波长,利用它们在不同血红蛋白上的吸收差异,才能解算出SpO2。

朗伯-比尔定律是理论基础。它描述了光通过介质后的衰减:

A = ε × c × L

其中A是吸光度,ε是摩尔消光系数,c是浓度,L是光程。

对于血氧测量,我们通常选用:

  • 红光(660nm):Hb对红光的吸收远大于HbO2。所以当血氧低时,红光信号变化明显。
  • 红外光(940nm):HbO2对红外光的吸收略大于Hb。这个波长对血容量变化更敏感。

通过计算两个波长的AC/DC比值,再代入经验公式,就能得到SpO2:

R = (AC_red / DC_red) / (AC_ir / DC_ir)
SpO2 = A - B × R

这里的A和B是校准系数,通常通过临床实验拟合得到。

避坑指南:我曾经在量产阶段发现,同一批传感器测出的SpO2偏差很大。查了很久才发现,是LED的峰值波长有批次差异。660nm的LED实际可能漂到650nm或670nm,这会导致消光系数变化,最终影响SpO2精度。所以,一定要对每批LED进行波长筛选,或者用软件做波长补偿。

1.4 双波长测量的局限性

双波长法虽然经典,但也不是万能的。我总结了几点:

  1. 运动伪影:手指晃动时,AC分量会被严重干扰。这时候算出的R值完全不准。
  2. 低灌注:当手指冰凉、血流很弱时,AC信号太小,信噪比极差。
  3. 肤色影响:深色皮肤会吸收更多光,导致DC分量降低,AC分量也会受影响。
  4. 环境光干扰:尤其是荧光灯和LED灯,它们有50Hz/60Hz的频闪,会混入PPG信号。

针对这些问题,后续章节我们会逐一讲解解决方案。比如用自适应滤波去运动伪影,用动态增益控制应对低灌注,用光学屏蔽和差分检测抑制环境光。

1.5 小结

这一讲我们覆盖了三个核心概念:

概念 要点
PPG原理 光强随血容量变化,信号分AC和DC
血氧饱和度 HbO2占全部血红蛋白的百分比
双波长理论 红光+红外光,利用吸收差异解算SpO2

下一讲,我们会深入PPG信号的时域和频域特征,看看怎么从波形里提取心率、呼吸率这些参数。到时候我会分享一个我当年调试时发现的“波形陷阱”,保证让你少走弯路。

好,今天就到这里。有什么问题,欢迎在评论区留言。