谭双平,艾志光,杨玉星,谢庆国
华中科技大学生命科学与技术学院,武汉市,430074
血氧饱和度(SpO2)表征了血液的氧含量,是判断人体呼吸系统、循环系统功能的重要参数[1]。在临床上,监测人体SpO2的变化对肺和心脏疾病的预防和治疗具有重要作用;同时,在手术、麻醉和重症监护等方面,也需要监测SpO2,以指导其手术或治疗过程[2]。SpO2的测量方法分为有创和无创两种。有创测量方法即采集人的血液样本,利用血气分析仪分析计算其血氧饱和度。有创测量不仅耗时,易使患者产生痛苦和感染,而且不能提供连续、实时的监测数据。无创测量主要是利用光电容积描记(Photoplethysmography)技术,获得红光和红外光通过人体组织后透射或反射的光电容积图信号(PPG),利用氧合血红蛋白(HbO2)和脱氧血红蛋白(Hb)对红光和红外光的吸收度不一样这一特性,通过Beer-Lambert定律计算得到SpO2。由于无创SpO2测量方法检测方便安全,目前已成为检测人体各种组织中SpO2较成熟的方法,在临床上得到广泛应用[3]。
但是,无创测量方法测量SpO2,当被测者处于低血流灌注(如肌肉紧张、低温环境等因素使血流减少导致低灌注)时,输出的PPG信号幅度很小,被各种噪声淹没;当被测者运动时,输出的PPG信号被运动噪声污染。这些因素都使得输出信号的信噪比大幅下降,影响SpO2计算的准确度,严重影响了血氧仪的性能[4]。同时,现在使用的无创SpO2测量仪对SpO2的有效测量范围也仅为70%~100%。因此我们开发了一套能在低灌注和运动条件下准确测量SpO2和脉率(PR),且将SpO2的测量范围扩展至35%~100%的高性能无创脉搏血氧仪。在硬件上,使用数字可控的可变增益放大器,自适应调节增益对不同灌注水平下不同幅度的PPG信号进行不同程度的放大,以获得可供ADC采集的最佳PPG信号;在软件算法上,开发了自相关建模法的低灌注SpO2测量算法,大大提升了血氧仪的性能,扩展了其适用范围,具有很高的临床和商业价值。
无创SpO2测量使用红光(λ1)和红外光(λ2)双光束交替照射人体组织(一般为指尖),测量经组织透射或反射后的光强来进行分析计算。无血组织(皮肤,骨骼,静脉血,其他组织等)对光的吸收是恒定的,不随脉动过程变化;当动脉脉动时,动脉体积变化引起光程改变,对光的吸收量也在脉动的变化,因此透射光的强度可分为不随脉动变化的直流分量DC和随脉动变化的交流分量AC。定义PI=AC/DC*100%,称为血流灌注指数,它反映了人体的血流灌注能力。由于氧合血红蛋白(HbO2)和脱氧血红蛋白(Hb)各自对红光和红外光的吸收谱不同,两束光交替照射组织,获得两路PPG信号和两个不同的PI,定义R=PI1/PI2,根据Beer-Lambert定律推导,可获R的计算公式:
式(2)中吸光系数均为常数,而R值可由采集的脉搏波数据计算得到,因此,理论上确定了两束入射光的波长,就能计算SpO2的值。但一般在实际计算中,考虑到光散射影响和人体组织的差异及吸光系数测量的不准确等因素,一般将(2)展开成二阶泰勒级数的形式,即
式(3)中系数A,B,C的确定由血氧仪测得的R值和标准的SpO2值利用最小二乘法二次曲线拟合定标得到。本文设计的血氧饱和度测量系统的定标曲线通过国际通用的Fluke Index 2XL SpO2模拟仪来确定。
本系统可分为三部分:①指夹式探头内部发光二极管的LED驱动电路和指夹式探头光电接收管后部的低灌注测量电路;②STM32F103数据采集主控单元,实现LED驱动电路的时序控制,低灌注测量电路的自适应增益控制,以及数据采集并通过USB传输到上位机;③PC机数据处理单元,实现数据分析处理、低灌注算法实现、实时波形显示、实时参数计算、数据保存、报警等功能。整个系统框图如图1所示。
图1 血氧饱和度测量系统框图Fig.1 Schematic diagram of SpO2measurement system
为保持PPG信号的原始特征,本系统采用全数字方式对原始PPG信号进行采集,然后传输到上位机进行数字信号处理,计算得到需要的结果。系统硬件部分包括LED驱动电路、IV转换电路、放大电路、主控单元、以及PC机。整个系统的硬件框图如图2所示。
图2 系统硬件框图Fig.2 Schematic diagram of the hardware system
2.1.1 LED驱动电路
由于本系统采用双波长测量法,我们设计探头上的红光和红外光的LED交替发光,同时设置一个暗光以提高系统准确度和抗干扰能力,该暗光信号可用于校正环境光对系统的影响。最终该三路光的发光时序通过STM32F103的I/O口产生控制信号IN1和IN2,IN1和IN2控制模拟开关接通和断开,从而控制红光和红外光的LED的切换,当红光和红外光的LED都没点亮时即为暗光状态。
2.1.2 I/V转换电路
LED被点亮后,传感器另一端光电接收管将接收的透射光信号转变为电流信号,随后I/V转换电路将该电流信号转换成与透射光强成正比的电压信号以方便采样处理。本系统I/V转换采用了集成芯片OPA381,转换电路及参数配置如图3。LED+和LED-分别连接光电接收管的+/-极,OUT1为输出电压。由于被检测的电流很小,反馈电阻取1 M以提高输出电压的幅值和信噪比。同时并联一个电容以进一步减小输入电流噪声。
2.1.3 一级差分放大电路
图3 I/V转换电路Fig.3 Schematic of I/V conversion
上述电流信号转换成电压信号后,由于PPG信号的交流分量与直流分量相比非常小,因此需要对交流分量做进一步的放大。由于差分放大器具有高共模抑制比、高输入阻抗、能有效抑制温度漂移和随机噪声等特点,因此本文采用仪表差分放大器MAX4194,在I/V转换后将原始信号减去一个直流偏置后再进行放大,以提高信号的信噪比。
2.1.4 可变增益放大电路
不同人群的手指透光性不同,同时可能出现低灌注、低信噪比等情况,也可能出现个别的高灌注导致信号饱和的情况。为了适应这些不同情况,将信号尽可能地放大以提高ADC对信号的分辨率但又不至于使信号饱和超出ADC采样的幅值范围,整个模块的模拟部分不能采用固定的放大倍数,而采用自适应增益控制以使最终的模拟信号有一个合适的幅度。为达到此目的,本设计采用低输入噪声数字可编程增益放大器LTC6910-1,它有0、1、2、5、10、20、50、100 V/V,8个增益可选。如图4电路所示,它具有三个数字输入口G2,G1,G0,STM32F103通过该三个逻辑控制口的逻辑组合即可控制增益的切换。实际系统中,STM32F103采集经过放大后的PPG信号,实时计算其幅度信息并反馈控制LTC6910-1的增益,实现实时的自适应增益调节。
图4 可变增益放大电路Fig.4 Schematic of VGA
2.2.1 ARM软件设计
STM32F 103 处理器的所有软件都采用C 语言在RealView MDK平台下开发。该系统中,STM32F103主要完成LED驱动时序的控制、PPG信号的采集、PPG信号幅度的判断以自适应地反馈调节增益和将数据打包通过USB传输到上位机,软件流程图如图5所示。
图5 ARM软件流程图Fig.5 Program flow chart of ARM
整个系统的时序由定时器中断1 保证,即STM32F103每667 μs触发一次定时器中断,在定时器中断服务程序中完成LED灯的切换,同时开启ADC采样。ADC采样完成后,触发DMA中断,在DMA的中断里,将红光、红外光和暗光的PPG信号经过处理后计算其信号幅度,并判断是否需要切换增益以自适应的调节可变增益放大器的增益值,随后将PPG信号数据通过USB传输到上位机。
2.2.2 PC机软件设计
PC机软件在Windows操作系统下运行,开发环境为Visual Studio 2008。该上位机软件与下位机通过USB接口连接,接收下位机传输来的数据,并进行相应的处理。为了实时处理下位机传输的数据,本设计采用多线程技术来完成数据读取和处理,分别为数据读取线程和数据处理线程,并开辟一块共享内存区域作为两个线程数据交互的缓冲区。数据读取线程将USB缓冲区内的数据读出并存放进数据缓冲区,当数据读取线程的时间片用完后便切换到数据处理线程,数据处理线程从数据缓冲区取出数据进行分析处理,其数据流图如图6所示。
图6 上位机软件数据流图Fig.6 Data flow diagram of software in PC
数据处理线程主要完成如下功能:将红光、红外光和暗光数据按照自定义的数据帧格式进行分离、滤波、进行算法选择、参数计算、数据存储、波形界面绘制及参数显示。其流程图如图7所示。
图7 上位机数据处理线程流程图Fig.7 Program flow chart of data processing thread of software in PC
其中上位机软件将原始数据和经过处理后的数据存放在以软件启动时刻命名的文件夹中(如果输入了被测者的个人信息,则以被测者姓名和软件启动时刻命名),便于对采集到的数据进行离线分析处理。本系统最终开发的上位机软件运行界面如图8。如图中标注,左区由上而下分别显示红光、红外光、暗光的波形,右区由上而下分别显示当前时间、PR、SpO2、PI及其他一些参考值。最下方为功能按钮,分别为开始/暂停、退出、低灌注、平均、个人信息。点击“开始”按钮软件开始运行,期间点击“暂停”按钮即可暂停运行;若PI值很低,显示参数频繁跳动出现很大误差,表明被测者处于弱灌注水平,则可点击“低灌注”按钮选择自相关建模法的低灌注算法来计算各参数;普通算法测试正常人时,使用者也可点击“平均”按钮来使参数显示更加稳定;“个人信息”按钮点击后跳出对话框,可输入被测者的ID号、姓名和年龄等个人信息;点击“退出”按钮即可退出软件运行。其中,点击“低灌注”按钮时,对低灌注信号加入本系统开发的自相关建模法的低灌注算法来计算各参数,其大致流程框图如图9所示。
图8 上位机软件运行界面Fig.8 Software interface in PC
图9 自相关建模法的数据处理流程框图Fig.9 Data processing flow diagram of auto-correlation modeling method
在低灌注时,由于血流灌注能力下降,脉动血流量减少导致PPG信号的交流分量大幅降低,在噪声干扰下脉搏波失去其明显的周期性特点,有效信号几乎被噪声信号淹没,信噪比极低。由于噪声主要是白噪声,而信号和噪声、噪声和噪声不相关,因此我们首先对信号进行自相关处理达到抑制噪声以提高信噪比的目的[7-8]。由自相关原理可知自相关后信号的频率与原始信号完全相同,由此我们可通过自相关后的信号准确计算脉率,而自相关后信号的幅值发生改变,但是它们存在相应的对应关系,我们通过建模确定其幅值关系从而计算信号的交流分量,进而计算PI和计算SpO2所需的比值R。通过该建模,我们便可通过自相关信号准确计算PR、PI和SpO2等参数。
为了验证本文所设计的血氧仪的性能,我们将其与国际通用的Fluke Index 2XL SpO2模拟仪进行了对比测试,分别评价了本系统对PR、PI和SpO2等参数检测的准确性;同时,对低灌注0.125%和运动状况的信号进行了算法处理验证,并特别的在低灌注至0.125%时,单独做了数据测试,以检验该系统对低灌注的检测能力。
通过Fluke Index 2XL SpO2模拟仪,模拟PI为5%(普通正常人的灌注水平),脉率从30到250变化,本系统检测的脉率全部正确。模拟脉率为70,SpO2为90%,PI从0.125%~20%变化的情形,Fluke Index 2XL SpO2模拟仪的PI值和本系统测量得到的PI值的拟合曲线如图10,从图中可以看出,本系统计算的PI值和Fluke Index 2XL SpO2模拟仪的PI值基本一致,其准确度和稳定性能满足要求。
图10 本系统与Fluke Index 2XL的PI值对比Fig.10 Comparison graph of PI between the system and Fluke simulator
采用模拟仪Fluke Index 2XL模拟灌注水平在5%,脉率为70,SpO2从35%~100%的情形,用本文设计的血氧仪的测量结果与Fluke Index 2XL SpO2模拟仪的值进行对比,其拟合曲线如图11。二者相关系数为0.998,接近于1,说明二者的结果基本相同。同时,在SpO270%~100%的临床测试要求范围内,测量误差不大于±2%,在SpO235%~70%的范围内,测量误差不大于±3%,具有很高的准确性和重复性。
图11 本系统与Fluke Index 2XL的SpO2值对比Fig.11 Comparison graph of SpO2between the system and Fluke simulator
为检验本系统设计的自相关建模法的低灌注SpO2测量算法对信号的处理能力,我们采集了模拟仪PI为0.125%时的数据传输到上位机,在Matlab环境下加入算法进行了处理,其结果如图12的(a)(b)所示。同时,为检验算法对运动干扰信号的处理能力,我们用手指的抖动和手臂摆动来产生运动干扰,其原始信号和经算法处理后的信号分别如图12的(c)(d)所示,从图中看出,本算法对这种手指抖动和手臂摆动的运动干扰具有很好的抑制作用。
图12 原始波形和算法处理后的波形Fig.12 Orignal waveforms and algorithm processed waveforms
为进一步检验本系统硬件及算法设计对低灌注的检测能力,我们在灌注为0.125%时进行了单独的数据测试,并给出了脉率、PI和SpO2等参数检测的结果。PI为0.125%时脉率从30至250变化时测试结果全部正确。表1给出了本系统对SpO2和PI值的检测结果、与模拟仪的偏差及标准差。从表中可看出,SpO2为70%以上的检测结果非常准确,偏差在±3%以内,标准差也很小说明其检测结果非常稳定。需要说明的是,在灌注0.2%以上时,SpO2在35%~100%全范围内检测都非常准确,在灌注0.125%~0.2%时,SpO2在较低水平时出现较大偏差,因此这里在灌注0.125%时只给出了临床要求范围70%~100%的测量结果。
系统对血氧饱和度的测量范围扩展到了35%~100%;设计的自相关模型法的抗低灌注算法使得本系统在灌注水平低至0.125%时仍能准确测量。
表1 PI为0.125%时本系统检测的PI和SpO2值Tab.1 The PI and SpO2detected by our system at PI 0.125%
将本文介绍的血氧仪与Fluke Index 2XL SpO2模拟仪进行同步对比测试,该仪器实现了脉率从30至250 BPM,灌注水平从0.125%至20%,SpO2从35%至100%范围内脉率、PI和SpO2的准确测量。
[1] 刘光达,郭维,朱平,等.基于容积波分析的血氧饱和度测量系统[J].激光与红外,2009,39(2):169-172.
[2] 周洪建,蔡桂艳.三波长无创血氧饱和度测量算法及应用[J].中国生物医学工程学报,2007,26(5):680-683,689.
[3] 严新忠,杨静,郭略.人体血氧饱和度监测方法的研究[J].医疗装备,2005,18(12):1-4.
[4] 闻大翔,周颖,王珊娟,等.体动和低灌注影响脉搏血氧饱和度准确性的临床研究[J].临床麻醉学杂志,2004,20(6):333-335.
[5] 张虹,金捷,孙卫新.数字式脉搏血氧饱和度检测系统的研制[J].生物医学工程与临床,2002,6(3):125-128.
[6] 张坤,焦腾,付峰,等.运用小波模极大值滤波算法消除光电容积脉搏波中的运动干扰[J].仪器仪表学报,2009,30(3):586-589.
[7] 范晓志,赵立志,黄晓红.基于多重自相关的微弱信号检测算法研究[J].小型微型计算机系统,2007,28(3):566-568.
[8] 于刚,张安清.强背景噪声中信号二次循环自相关检测与幅度估计[J].舰船电子对抗,2008,31(4):88-90,96.