基于MSP430的脉搏血氧仪设计解决方案

基于MSP430的脉搏血氧仪设计

  本文讲述基于MSP430FG437微处理器的脉搏血氧仪设计方案。通过探头(probe)接触手指、耳朵或者鼻子等人体组织来测量血氧饱和度、脉搏等生理指标,并将测量数据显示在LCD上。其中使用到的传感器同样可用于测量心率。探头内部包含两个LED,一个为可见光(660nm的红光),另一个为红外线(940nm)。当这两种光穿透人体后的光强度发生改变,通过计算两种光强度的比例就可以获得血氧含量的百分比。


一、设计方案介绍


  脉搏血氧仪作为医疗器械,用于检测病人的血氧含量。这介绍的脉搏血氧仪能向多在测量获得的血氧含量、心率低于正常水平的时候发出鸣声警报。这种用途非常适用于刚出生的婴儿以及在手术过程中的健康监测。设计方案使用超低功耗的MSP430芯片设计,这个芯片的高度集成使得设计方案不需要太多的外部元件,并且它通过减少开启时间以及交替给两种LED光源提供电力来降低整体的功耗。


二、工作原理


  血氧饱和度(SpO2)是血液中被氧结合的氧化血红蛋白(HbO2)的容量占全部可结合的血红蛋白(Hb)容量的百分比,即血液中血氧的浓度,它是呼吸循环的重要生理参数。而功能性氧饱和度(SaO2)为HbO2浓度与HbO2+Hb浓度之比。因此,监护中常用SaO2来估计SpO2的水平。


  由于血液在含氧量不同的情况下吸光率也不同,因此脉搏血氧仪采用红光和红外光分别照射人体组织,并通过测量透射光的强度来计算血氧饱和度的值。SaO2的定义是氧化血红蛋白与总体血红蛋白的比例,这种关系见公式(1)。


  根据血液被氧化程度的不同,人体组织吸收光线的多少是不同的,这种特征是非线性的。脉搏血氧仪中所使用到的两种波长的光,交替开启用于测量。通过使用两种光来进行测量有利于降低测量后的数学计算复杂程度。


  具体的计算见公式(2),λ1和λ2表示两种光的波长。经过人体组织的光被转换成电信号,其中,直流信号是光线经过人体组织和血管吸收之后的结果;交流信号是光线经过动脉影响之后的结果。在实践中,SaO2和R1的关系并不是公式表现出的线性关系,因此要通过查表获得准确的读数。


三、电路


  图1描述了系统的结构,两个LED根据时分复用(time multiple)的原理,每个LED每秒被采样500次。PIN二极管因此被两个LED光源交替激活,其输出信号被OA0和OA1运算放大器进行放大,ADC12对两个运算放大器的输出进行采样。采样结果由ADC12准确的进行测序,MCU软件则负责分离红外线和红光。测量所获得的SaO2和心率被显示在LCD上,采样的结果也可以经过RS232接口实时的传送到电脑上。单独的软件就可以用图形化的曲线显示采样的结果,除了MCU和四个晶体管,这个设计只需要少量的被动元件(参考图9)。这使用兼容Nellcor的探头,型号为520-1011N,探头内部包含有传感器,探头采用D类型的九个引线的连接器。

图1,系统结构


1、LED驱动电路


  前面提到,方案采用一个LED发射可见红光,一个LED发射红外线。探头兼容Nellcor(美国医疗器械公司)的产品,其内部的两个LED背靠背的连接在一起,并且使用H-Bridge结构的电路驱动LED,见图2。而H-Bridge互补电路又由MSP430的端口2.2和2.3进行驱动。DAC0控制流经LED的电流,控制LED发光亮度。整体属于时分多路复用(time multiplexed)电路。通过DAC内的软件,外部电路可以经由引脚5和引脚10连接MSP430FG437内部12-bit的DAC0进行寄存器的管理。当这两个引脚没有被用于输出DAC0信号,它们就分别设定为Hi-Z或者是低电平。晶体管的基极(base)连接下拉电阻(pulldown resistor),以保证晶体管在非工作状态下处于关闭。

图2.LED驱动电路


2、采样和调节PIN二极管信号


  光二极管(photodiode)接收到光线之后产生电流,再输入到跨阻放大器进行放大。三个内置的运算放大器中,OA0就是被用于放大上述的电流信号,由于这个电流非常微弱,因此要求OA0具有非常小的漂移电流(drift current)。


  由OA0输出的信号包含大约1V的直流成分和小交流成分(约10mV pk-pk)。直流成分的信号是由人体组织和扩散光形成的,这部分的信号与LED发射光的强度成比例。小交流信号则由两部分原因形成,一是在动脉(arteries )造成的血氧变化,从而造成穿透光强度变化并形成交流信号;另一个原因是50/60Hz的环境光形成的噪声信号。交流成分正是需要提取和放大的有用信号。


  对于LED的电平控制需要保持OA0的输出在预设的范围内,图3中电路就是用于完成上述任务。红光LED和红外线LED在这个预设范围内分别进行控制。实际上,两个LED的输出误差非常小。

图3.输入前端电路和LED控制电路


  在图3中,OA1对OA0的输出交流信号进行提取和放大。直流追踪滤波器(DC tracking filter )提取直流信号,用于OA0的输入偏移量(offset input,用于抵消直流成分),这样就只有交流信号被放大。从而实现直流成分有效的过滤。OA1的偏移量(offset)也被放大并加到输出信号中,它也会在随后的电路被过滤掉。
集成在MSP430内部的计时器A被用于控制驱动LED的顺序,并且自动开始ADC转换。其时序图见图4,CCR0中断则会使用另一种驱动顺序,此时DAC12_0的控制位DAC12OPS被驱动的LED来决定其被设定还是清除。MSP430的port2用于设定开启对应的LED。DAC12_0的数值被设定为相应的光线强度;DAC12_1被设定为直流追踪滤波输出。

图4.计时器A的时序图


  OA1将OA0输出和DAC12_1输出的差值进行放大。LED发射的可见光的强度经过调节,DAC12_1将为一条直线,这是因为两个LED在OA0的输出是相同的。ADC将自动被触发,它进行两个采样,一个是用于追踪直流信号的OA0输出,一个是OA1输出,它们被用于计算心率和血氧浓度。两个采样交替进行,通过设定ADC内部的控制寄存器中的MSC位来使用采样计时器。为了节省功率,在一次ADC转换结束之后,就会产生中断告诉MCU关掉LED、清除DAC12_0。


3、交流信号的调节


  OA1的输出由ADC进行采样,每秒采样1000次,也即红光LED和红外线LED输出交替采样500次。OA1的输出必须去除残余的直流成分。在这采用高通数字滤波器是不切实际的,因为这要求的截止频率很低,因此采用IIR滤波器来跟踪直流电平。直流信号从输出信号中剥离出来,从而得到“真实”的交流数字信号。采样获得的信号再经过数字滤波,去除50Hz的环境噪声。这样就实现了具备6Hz、-50dB衰减的低通FIR滤波器。这的输出信号就已经非常接近于心脏的跳动。(图5)

图5.交流信号调节


  图6显示的直流追踪滤波器为IIR滤波器,它将输入和输出的差额叠加在输出信号上。如果输入出现阶跃变化(step change),输出则在一段时间内自动调节并最终与输入相同。变化率由系数K决定,而K由实验室制定。因此,如果输入包含直流信号和交流信号,将K值设定的足够小就可以形成一个时间常数,这个时间常数与交流信号的频率相关。这样,在一段时间内交流信号将被消除,输出端只追踪输入的直流信号。为了保证有足够的动态范围,在计算的时候使用双精度(32bit),而实际只适用最重要的16bit数据。

图6.追踪滤波器结构


4、计算含氧度和心率


  因为两个LED都由脉冲信号驱动,传统的模拟信号处理并不适宜,转而使用数字信号处理技术。采样信号经过低通滤波移除50/60Hz的噪声。对于每种波长的光,直流信号都被移除,而留下交流部分,因为交流信号才是真正反映动脉血氧水平。在一定数量的心跳数量上计算信号的平方平均值(即均方根值),就得到RMS数值。

图7.R与SaO2关系


  而对于直流信号的测量是持续计算一定数量的心跳数量下的信号平均值。每个LED的驱动强度都是被控制的,因而PIN二极管上的直流电平在极小的误差内满足设定的目标值。在每个LED上都采取同样的做法,最终的结果是两个LED的直流电平都非常接近。一旦LED的直流电平接近,就可以通过公式(2)来计算SaO2的大小。心率的测量则是通过计算每三次心跳的采样结果来获得,因为采样率是500sps,因此每分钟的心跳可以由公式(3)计算。图7显示理论的和实际的R与SaO2之间的关系。当血氧饱和度下降到低于80%,可以假定两者为线性关系。图8显示从电路板串行接口获得的心跳信号,数据传输率为115kbps,这些可以在LCD屏幕上显示出来。图9为电路原理图。

图8,反应心跳的信号

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章