庞 宇,蒋 伟,王志成,张博臻
(重庆邮电大学 光电工程学院,重庆 400065)
血压是指心脏收缩时将血液泵入血管对血管壁加储的压力,收缩时的压力为收缩压(systolic pressure,SP),正常范围值为90~140 mmHg,舒张时的压力为舒张压(diastolic pressure,DP),正常范围值为60~90 mmHg,具体数值跟性别、年龄等因素有关,是反映人体健康状况的重要生理指标[1]。血压的测量方式一般分有创测压法和无创测压法,有创测压法采用在人体动脉血管里加入血压传感器,虽然测量准确,但测量条件复杂,给人体带来一定创伤,一般在特殊条件下使用[2-3]。无创测压法,通过在测量部分加入一些辅助传感器,采集出相应部位的生理信号,通过对这些信号的算法处理分析,最后可以计算出血压值,此方法无创便携,测量结果偏差也在几个mmHg范围内,目前被广泛采用。
示波法又称振动法[4],其基本原理为:采用气泵、电磁阀、袖带及压力传感器组成封闭的测量系统,对袖带进行加气,从而阻断手腕或手臂的动脉处血流,在放气或充气的过程中,由于脉搏的微弱振动引起袖带气压振荡波动,通过压力传感器将振荡脉搏波信号采集出来。根据临床医学实验和理论,这些采集出来的波动信号与收缩压、舒张压存在函数关系,从而可以计算出血压[5-6]。采集有2种方式:放气式和充气式,本文采用放气式采集振荡脉搏波信号,具体步骤是:手腕戴上袖带并保持静坐,手臂与心脏平齐,气泵快速充气到约180mmHg时阻断动脉血流,此时袖带内只有微弱的振荡信号;逐渐放气减压过程中(5~10 mmHg/s),袖带内静压接近收缩压时,振荡波幅值变化较大,静压等于平均压(mean pressure,MP)时,振荡波幅值最大;随着袖带内气压减小,静压值小于平均压时,幅值逐渐减小;静压值小于舒张压后,又只有微弱的振荡信号了,如图1所示。
图1 示波法原理示意图(放气式)
示波法中常用的主要有波形特征法和幅度系数法,特征法就是根据收缩压、舒张压处振荡脉搏波幅值出现较大变化,由于实际测量中的干扰因素较多,特征法的特征拐点选取偏差较大,影响包络线的拟合,适应性较差,逐渐被其他方法取代[7]。
幅度系数法,就是根据振荡脉搏波幅值最大处所对应压力值(平均血压值)与收缩压、舒张压之间的比例关系确定血压值[8]。如图1所示,设振荡波幅值最大处的值为A(MP),收缩压处为A(SP),舒张压处为A(DP),则比例关系式如下:
K1值的范围一般是0.40~0.75,K2值的范围一般是0.45~0.90,根据振荡脉搏波的最大幅值和比例系数关系计算出收缩压和舒张压,结合采样频率和波峰数计算出脉率[9]。
幅度系数法简单实用,但不能适应个体的变化[10]。研究表明,收缩压和舒张压处振荡波的归一化系数随平均压变化而变化[11]。变幅度系数法根据不同平均压选择出不同的归一化系数K1、K2的值,如表1所示。本文采用变幅度系数法实现的人体血压测量,实验结果表明,与听诊法均值误差基本都在5 mmHg以内。
表1 归一化系数
硬件总体电路框图如图2所示,主要模块包括电源模块、血压信号控制模块、算法处理模块、显示模块、存储模块。
图2 血压系统总体电路框图
电源管理模块主要负责整个系统的供电,利用A/D转换检测锂电池的电量并发出是否需要为电池充电信号;血压信号控制部分主要由气泵、袖带、电磁阀、压力传感器、驱动电路组成,构成封闭回路,可实现充放气的控制;STM32F103RCT6作为主控芯片,完成整个系统的逻辑控制、算法处理;显示部分通过IIC协议控制OLED屏幕显示处理后的数据,如收缩压、舒张压、心率等;存储部分通过串行外围设备接口(SPI)协议控制串行FLASH,扩展系统的存储内存,完成数据保存。
采集部分由气泵、电磁阀、分支器、袖带、压力传感器构成封闭回路,完成对袖带的充气或放气。本设计气泵选用的是DQB030-A型气泵,3 V电压驱动,功率0.6W,密封性小于3mmHg/min,满足测血压需求;选用DQF1-3A型电磁阀,其工作压力范围0~350 mmHg,功率0.3W,从300 mmHg压力泄气到15 mmHg的时间小于3 s,泄气速度满足放气需求;由于人体生理信号是低频小信号,信噪比低,选用MP3V5050GP压力传感器,其内部有信号运放和调节功能,可进行片上补偿,直接将0~375 mmHg的压力值转换为0.06~2.82 V的电信号,与电子血压计的设计要求匹配。
加压阶段:电磁阀关闭,气泵采用100 Hz的PWM波控制,100%的PWM快速充气3 s,50%的占空比慢速充气2 s,预充气完成,袖带气压可达200 mmHg左右;减压阶段:气泵停止充气,电磁阀用20 Hz的PWM波控制,根据气压调节PWM占空比控制在20%~26%之间,实现以5~10 mmHg/s匀速减压,压力传感器和处理器的模数转换完成数据采集,采集频率为250 Hz,采集混合信号如图3所示,前5 s基本完成了快速充气,随后开始减压,采集到微弱的振荡脉搏波信号。
图3 混合信号及频谱图
软件设计主要包含压力值控制、信号分离、噪声处理、峰值误差补偿、变幅度系数法算法实现、数据有效性判断,具体流程如图4所示。
图4 整体设计流程框图
压力信号为气泵加给袖带的绝对压力,当袖带里的气压减压到一定程度时,它里面包含了动脉的振动压力,这个由脉搏振动引起的压力远小于整个袖带的绝对压力,如图3信号为本实验装置采集到的实际混合信号,其中包含了静压力信号、脉搏波振动信号、高频振动干扰信号、基线漂移干扰信号等。对图3进行血压信号频谱分析,静压力信号相当于直流信号,且通过示波法中的袖带静压力相对采样幅值为2 000左右,实际采集到的频率几乎接近0 Hz,如频谱图所示0 Hz处的幅值极大,而血压信号采样相对幅值为40左右,频率值分布主要在1~10 Hz,与人体脉搏波频率、幅值等特性符合。本文分离血压信号是通过0.8~10 Hz的带通滤波器进行信号选择,而类似一些高频振动干扰信号,通过频谱图可知其幅值很小,频率也基本高于10 Hz,经过带通滤波器后其对血压分析判定的影响几乎可以忽略,选用如图5电路模拟带通滤波器转换为数字带通滤波器。
图5 带通滤波器电路示意图
前级1阶RC低通滤波在S域的传递函数为
通过Z变换并转换为差分方程,T1为采样周期,则
当采样间隔足够小时,
后级1阶高通滤波的频域和时域表达式为
离散化后可得
式中,b=R2C2/R2C2+T2。
将混合信号经过10 Hz低通滤波器可得袖带静压力信号,由于气泵的压力信号相当于直流信号,频率低,而人体脉搏波频率一般在1~10 Hz之间。经验证,可通过0.8 Hz的高通滤波器,fs为250 Hz,式(6)中a为0.025 2,b为0.975,提取出动脉振动脉搏波信号,信号曲线如图6所示。
图6 压力振荡分离信号曲线
通过对软件滤波后的采样点得到的数据进行单个脉搏波的峰值查找,为了消除重搏波的波峰对脉搏波峰的影响,人体脉搏波的振荡频率为1~2 Hz左右,少数条件下可放宽至1~3 Hz左右,本文采集装置的采样率为250 Hz,在对采样点进行局部最大值点查找时,考虑到采样的250个采样点中可能包含到1~2个脉搏波波峰,进行局部峰值查找时选择100~150个采样点为宜,本文选择的是每隔100个采样点,峰值查找频率2.5 Hz,得到最大值点即为振荡脉搏波的峰值点,如图7所示。
图7 离散峰值处理曲线
由于测量条件时存在干扰因素,如非线性放气、电磁阀抖动、人体手腕抖动、说话等都会不可避免地导致采集到的数据出现干扰点,本次实验数据为现场实际测得,存在较多干扰,适合后期算法处理,如图6圈注的几个A点,影响后期的曲线拟合,导致血压测量误差,必须进行干扰点处理。干扰点处理算法通过结合基线漂移进行的动态系数匹配进行调整,其流程如图8所示,处理后效果如图7所示。
图8 峰值误差补偿流程框图
3.3.1 静压力曲线拟合
通过PWM波控制电磁阀来实现系统匀速线性放气,由于电磁干扰、手腕抖动、脉搏波与静压分离不彻底等因素导致放气过程中采集到的静压信号也存在微弱的波动,袖带静压的非线性将对气压值的计算导致较大误差,通过示波法采集到的血压处静压力信号是线性变化的,选择最小乘法进行线性拟合,主要是考虑到减轻MCU的计算负载,最小二乘法线性拟合原理如下:
设直线表达式y=a+bx,有n组数据,波峰、波谷均值数据(xi,yi)与直线y上的误差为di,使得(d12+d22+… +dn2)为最小值,即求出最佳值a、b的方法叫最小二乘法,则令
D对a和b分别求1阶偏导数为:
再求2阶偏导数为:
满足最小值条件,令一阶偏导数为零:
引入平均值:
则联合解得:
结合a、b的值,可解得拟合曲线,如图9所示。
图9 静压拟合曲线
传统的做法是对多出现的微弱波峰点进行直线拟合,这样拟合的值偏大,通过对比峰值、谷值、均值点拟合的确定系数可知,均值拟合效果优于单一点的拟合,本文采用峰谷均值点拟合曲线,使得静压力曲线准确,具体确定系数如表2所示。
表2 拟合点选择分析
3.3.2 振荡脉搏波包络线拟合
通常以振荡脉搏波的波峰点作为拟合对象,则拟合函数的最大值点作为脉搏波的最大振幅处,对应的压力值就是平均压;由于测量过程中的干扰因素,如手腕滑动导致气压变大或变小,采集到的波峰就会有所偏差,本文采用前后序列均值的方法确定平均压所处位置,具体算法为:
步骤1确定出数据中最大峰值处x0,以此处为参考点;
步骤2前后第一个序列的峰值处x1,t1,求出均值m1=(x1+t1)/2;
步骤3依次重复参考点处前后第二、第三个序列峰值处x2,x3,t2,t3,并求出均值m2,m3;
步骤4结合峰值拟合包络线最大值处x4,确定出序列最大峰值处x0=((m1+m2+m3)/3+x4)/2;
经过此算法计算后的平均压稳定、准确,抗干扰能力增强。
为了寻找振荡脉搏波波峰合适的拟合算法,本文进行了多项式拟合、双直线拟合及高斯拟合,并进行了对比。
1)多项式拟合:由于整体包络线类似二次函数形状,采用二次多项式拟合,拟合函数为y=ax2+bx+c,拟合曲线如图10(a)所示。
2)双直线拟合:考虑到振荡脉搏波幅值先逐渐增大到最大值再逐渐减小,以峰值最大处进行前后2段的直线拟合,采用y=ax+b型函数进行双直线拟合,拟合曲线如图10(b)所示。
3)高斯拟合:研究表明,标准的振荡脉搏波的整体幅值大小呈现一定的正态分布,且峰值分布较均匀,设修正后的波峰组数据为(xi,y(xi)),整组数据长度为N,拟合式为:
式中,A、u、σ为高斯函数待估参数。
对式(13)取对数后展开化简可得:
则式(14)可化为3阶多项式:
设拟合数据与峰值数据误差为bi,导出:
根据最小二乘原理,可求出a0、a1、a2,结合式即可估算出高斯函数待估参数A、u、σ,如下式所示,拟合曲线如图10(c)所示。
通过计算对比图10(a)(b)(c)3种拟合包络曲线,拟合误差如表3所示。由表3可知,高斯拟合函数最接近振荡脉搏波实际分布情况,本文选用高斯拟合峰值曲线。
图10 峰值包络线拟合曲线
表3 拟合曲线误差
对脉搏波峰值进行高斯拟合后得峰值包络曲线g(x),袖带静压力曲线的线性拟合y(x),效果图如图11所示,通过前后序列均值的方法结合拟合曲线g(x)的最大值确定出最大值点x0,x0对应点即为平均压MP。根据变幅度系数法确定出收缩压、舒张压的计算公式。
式中,θ为处理器采集气压传感器数据与气压值的转换系数(mmHg),本文设计选用MP3V5050GP气压传感器与STM32F103RCT6的ADC1采集,系数为0.109 49,计算x1、x2对应点的函数值可得收缩压SP为y(x1)θ,舒张压DP为y(x2)θ。
图11 血压计算示意图
脉率(pulse rate,PR)是指人体动脉每分钟搏动的次数,健康人体脉率范围一般是60~100次/min。考虑到测量过程中的干扰,为了提高计算准确度,本文选用收缩压x1、舒张压x2之间的所有脉搏数来进行脉率算法处理,信号采样频率fs为250 Hz,则N个脉搏波的时间t1和脉搏P:
其中,N为收缩压x1、舒张压x2采样点之间波峰个数。
实物系统硬件并结合Matlab调试成功后对存储的数据进行处理计算,样机如图12左图所示,在分支器预留的分支口接上血压表方便调试观察,右图为标准听诊器测血压器。
图12 测量装置样机和标准听诊器测血压器
运用本文的方法测量与标准听诊器误差结果,如表4、表5所示。
表4 收缩压误差测量结果
表5 舒张压误差测量结果
由表4、5可知,收缩压、舒张压监测误差最大为4.75 mmHg,标准差为2.20 mmHg,符合AAMI/ISO标准,可满足临床使用要求。
1)提出了静压曲线采用峰谷均值点拟合,使得静压线更加接近于线性放气。
2)对查找出的波峰值进行了误差补偿算法处理,有效防止了测量过程中由于手抖动、电机干扰等产生的影响。
3)最大峰值采用前后序列均值和拟合曲线峰值共同确定,减小了脉搏波间距误差,使得平均压准确、稳定,以平均压幅值为基础的变幅度系数法计算结果更准确。在一般的电子血压计研究中,此方法具有可实现性和工程实用价值。