第四章 血氧探头与传感器:光电二极管与LED选型、探头结构设计、传感器接口电路

好,我们进入第四章。这一章讲的是血氧仪最核心的物理层——探头和传感器。说白了,就是那个夹在手指上的东西,以及它背后的电路。

很多刚入行的朋友觉得探头就是个壳子加几个灯,没什么技术含量。嗯,我当年也这么想过,直到有一次项目量产,发现探头一致性差到离谱,同一批产品测同一个人,读数能差3个点。从那以后,我再也不敢小看探头设计。

4.1 光电二极管与LED选型

血氧探头里有两个关键器件:发光端和接收端。发光端是LED,接收端是光电二极管。选型不对,后面电路调得再好也白搭。

4.1.1 LED选型:波长是命根子

血氧仪需要两个波长的光:红光(660nm附近)和红外光(940nm附近)。为什么是这两个波长?因为氧合血红蛋白和脱氧血红蛋白在这两个点的吸收系数差异最大。你想想看,如果选错了波长,差异变小,信噪比就崩了。

我个人习惯选660nm±5nm的红光和940nm±10nm的红外光。注意,波长偏差不能太大。我在项目中遇到过一批便宜的红光LED,标称660nm,实测到了675nm,结果血氧值偏低2%左右。后来换了正规供应商,问题才解决。

参数 红光LED 红外LED
中心波长 660nm ± 5nm 940nm ± 10nm
半波宽 ≤20nm ≤30nm
光功率 2-5mW(典型) 3-8mW(典型)
驱动电流 10-50mA 10-50mA
注意:LED的光功率不是越大越好。光太强会穿透手指,产生"光短路"效应,导致测量失效。我曾经吃过这个亏,把驱动电流调到60mA,结果读数完全不准。

4.1.2 光电二极管选型:灵敏度与暗电流

光电二极管把光信号转成电流信号。血氧仪里最常用的是PIN光电二极管,响应速度快,灵敏度高。

选型时我主要看三个参数:

  • 响应度:在660nm和940nm处都要高,最好在0.4A/W以上
  • 暗电流:越小越好,一般要求小于10nA。暗电流大了,直流偏置会吃掉动态范围
  • 结电容:影响响应速度,一般小于50pF

我常用的型号是Vishay的BPW34系列,响应度不错,暗电流也低。当然,国产的也有好货,但一定要实测验证。

小技巧:选光电二极管时,可以选带滤光片的封装。它能滤掉环境光中的干扰波长,减少噪声。我有个项目用了不带滤光片的,结果在强光环境下读数飘得厉害。

4.2 探头结构设计

探头结构决定了光路质量。结构不好,光信号就乱七八糟,算法再强也救不回来。

4.2.1 透射式 vs 反射式

血氧探头分两种:透射式和反射式。

  • 透射式:LED和光电二极管在手指两侧,光穿过手指被接收。这是最经典的结构,信噪比高,适合指尖夹持式。
  • 反射式:LED和光电二极管在同一侧,光射入组织后反射回来被接收。适合额头、手腕等部位,但信号弱,噪声大。

我个人更推荐透射式,尤其是做指夹式血氧仪。信号强,设计简单。反射式我做过一次,为了抑制噪声,前级放大电路调了整整两周。

4.2.2 光路隔离:别让光"抄近路"

这是探头设计里最容易翻车的地方。LED发出的光,如果不做隔离,会直接从探头外壳内部"抄近路"传到光电二极管。这叫光短路,后果是信号里混入大量直射光,血氧值完全不准。

怎么解决?

  • 在LED和光电二极管之间加遮光挡板,材料用黑色硅胶或黑色塑料
  • 探头内壁做磨砂处理,减少反射
  • LED和光电二极管的安装孔要深一些,让光只能从手指方向射出

避坑指南:我曾经有一版探头,结构设计时没注意光路隔离,结果样机测试时血氧值一直在98%-100%之间跳,怎么调都没用。后来拆开一看,LED的光直接透过外壳塑料照到了光电二极管上。加了遮光片之后,问题立刻解决。

4.2.3 手指定位与舒适度

探头要保证手指每次放的位置基本一致。如果手指偏了,光路长度变化,信号幅度就会变,影响测量重复性。

设计时注意:

  • 手指槽的深度和宽度要适配大多数成人手指(约12-20mm宽)
  • 弹簧夹的力度要适中,太紧影响血液循环,太松手指会滑动
  • LED和光电二极管的中心要对齐,偏差不超过1mm

4.3 传感器接口电路

光电二极管输出的是微弱电流信号,通常只有几微安到几十微安。我们需要把它转成电压信号,再放大到ADC能采样的范围。

4.3.1 跨阻放大器(TIA)

最经典的方案是用跨阻放大器(TIA)。光电二极管的电流流入运放的反相输入端,反馈电阻Rf把电流转成电压:Vout = Ipd × Rf。

选运放时要注意:

  • 偏置电流:要远小于光电二极管的信号电流,最好在pA级别
  • 带宽:血氧信号的频率很低(0.5-5Hz),但为了抑制噪声,带宽可以设到100Hz左右
  • 噪声:电压噪声密度要低,最好小于10nV/√Hz

我常用的运放是TI的OPA2376或ADI的AD8605,偏置电流都在pA级,噪声也低。

// 跨阻放大器电路参数示例
// 反馈电阻 Rf = 1MΩ
// 反馈电容 Cf = 10pF(用于相位补偿,防止振荡)
// 带宽 ≈ 1 / (2π × Rf × Cf) ≈ 16kHz
// 实际应用中,带宽可以进一步限制到100Hz左右
提示:反馈电容Cf一定要加。不加的话,运放容易自激振荡。我刚开始做的时候忘了加Cf,示波器上一看全是高频振荡,折腾了半天才发现是这个问题。

4.3.2 环境光抑制

环境光(尤其是日光灯和太阳光)会引入很大的直流分量,把运放的动态范围吃掉。怎么处理?

  • 交流耦合:在TIA后面加高通滤波器,滤掉直流分量。截止频率设在0.5Hz左右
  • 差分检测:LED交替点亮和熄灭,用差分方式提取信号。点亮时采到的信号包含环境光+血氧信号,熄灭时只有环境光,两者相减就得到纯净的血氧信号
  • 屏蔽:探头外壳做电磁屏蔽,减少外部干扰

我个人习惯用差分检测+交流耦合的组合。差分检测能有效抑制环境光,交流耦合则进一步滤掉低频漂移。

4.3.3 多路复用与同步检测

红光和红外光需要分时点亮,不能同时亮。因为同时亮的话,光电二极管分不清哪个是哪个。

典型的时序是这样的:

  1. 点亮红光LED,采样红光信号
  2. 关闭红光LED
  3. 点亮红外光LED,采样红外光信号
  4. 关闭红外光LED
  5. 所有LED关闭,采样环境光(用于背景扣除)

每个周期大约几毫秒,循环进行。ADC的采样要和LED的开关同步,这通常由MCU的定时器控制。

关键点:LED的开关时序和ADC采样必须严格同步。我见过有人用软件延时来做同步,结果时序抖动导致信号噪声很大。正确的做法是用硬件定时器触发ADC采样,保证每次采样的相位一致。

4.3.4 完整的传感器接口电路框图

一个典型的血氧传感器接口电路包括:

  • LED驱动电路(恒流源,保证光强稳定)
  • 光电二极管 + 跨阻放大器
  • 高通滤波器(0.5Hz截止)
  • 二级放大(增益可调,适配不同手指透光率)
  • 低通滤波器(100Hz截止,抗混叠)
  • ADC采样(12位以上,采样率100Hz以上)

嗯,这一章的内容就到这里。探头和传感器是血氧仪的"眼睛",眼睛不好,后面算法再强也白搭。下一章我们讲模拟前端与信号调理,把光电二极管出来的微弱信号调理成ADC能吃的"好料"。