专利名称:一种在电子血压计中确定收缩压和舒张压的算法的制作方法
技术领域:
本发明涉及电子血压计的医疗电子信息技术领域,特别是涉及一种基于“示波法”的快速、有效判别收缩压和舒张压的方法,适合在单片机上实现。
背景技术:
人体血压的测量分为直接测量和间接测量。前者需要侧破血管,放入导管,虽然测量精度较高,但是对实验环境的安全和卫生要求较高,所以一般限于危重病人。间接测量又称无创测量,仅限于测定动脉压力,虽然方法简单易行,但是测量精度较差,并且只能测量收缩压和舒张压,但是人们还在不断寻找提高精度,目前临床上广泛使用的是柯式音法(听诊法),以及在它基础上改进的“示波法”。示波法可以实现自动化测量血压,本节主要介绍示波法的测量方法。示波法使用专门的充气袖带绕上臂一周,通过充气球先给袖带充气,当袖带内静压力大于动脉收缩压(SP)时,袖带阻断动脉血流,此时袖带内没有脉搏信号(脉搏信号为小振幅的交流信号)生成;再缓慢均匀放气,当袖带内静压力低于收缩压时,开始生成脉搏信号,并且脉搏信号的波幅随静压减小而逐渐增大;静压力等于平均动脉压(MP)时,动脉关闭处于去负荷状态,脉搏信号波幅达到最大;当袖带内压力小于平均压时,脉搏信号的波幅逐渐减小;当静压力小于舒张压(DP)以后,动脉管壁刚性增加,脉搏信号的波幅又维持较小等幅度的水平。整个过程如图1所示。脉搏信号为交流信号,频率等于人体脉搏的频率,脉搏信号的包络近似于抛物线,分别如图2、图3所示。脉搏信号波幅序列中的最大振幅Amp处的压力被定义为平均压,常用幅度系数法从脉搏信号归一化的包络线上找出舒张压和收缩压,即:
Asp/Amp = α,其中 a e
Adp/Amp = β,其中 β e
这种方法被证明是简洁有效,具有较强的抗干扰性和个体适应性,容易在以微处理器为核心的监护仪中实现。但这仅仅是初步测量,由下面的算法来精确测定收缩压和舒张压。(I)FAN算法(扇形算法)测定收缩压
收缩压处的脉搏波波形特点是波谷形状平缓,为此本算法采用扇形(FAN)算法识别形状平缓的波谷。FAN算法的大 致原理如下图4,主要分为以下两步:
步骤1:首先设置特定的阈值f),然后以第一个采样点TO作为起点,以TO与下一个采样点Tl的连线TOTl为基准,在TOTl上下各取ε弧度,得到直线(Ul,LI);若第三个采样点(Τ2)落在U1、L1之间,则用Τ2取代Tl,以连线Τ0Τ2为基准,上下各取ε得到直线(U2,L2),将(U2,L2)与(U1,LI)比较,保留最会聚的直线,图中为(Ul,L2),此过程不断重复下去,直到采样点Tm落到区域以外。步骤2:在脉搏波波形的每一拍中,设定初始阈值为ε 0,以每拍的第一个点为第一个采样点,按照FAN算法执行步骤1,计算后面的采样点是否在得到的直线区域以内。如果该拍内所有的采样点均在该区域内,则度量范围为如果采样点Tm落在该区域以外,则更新度量阈值为重新执行步骤I。如此循环,直到该拍内所有的采样点均在区域以内,得到度量范围%。^最小的拍即收缩压SP所在的拍。FAN算法是目前较为准确和可靠判定收缩压所在点的算法。由于FAN算法较为复杂,通常的做法是将单片机取样生成的脉搏信号送往上位机或PC,由上位机或PC上数学运算软件等工具来完成复杂的计算,所以不适合在处理能力一般的单片机上实现,而且整个测量过程也不适合一般消费者来操作,因此这样的血压测量设备将变得使用复杂,完全失去便携性。本发明的主要目的就是改进和简化FAN算法,使之可在性能中等的单片机上进行实现,保持电子血压测量设备的便携、易用的优点。(2)振幅减小算法测定舒张压
舒张压处的脉搏波特点是振幅显著减小,且位于该拍谷地部分的末端。通常的差分算法是从平均压MP向舒张压DP方向计算每拍的脉搏信号幅度降低量,以最大的降低量所对应的脉搏波确定为舒张压DP的位置。本发明提出了一种不同于差分算法的判定舒张压的方法,也非常便于在单片机上进行实行。参考文献:
1、刘建强,王永才《基于示波法的电子血压计设计》,http://www.doc88.com/p-1824785584566.html
2、百度文库,《电子血压计(示波法)产品注册技术审查指导原则》,http://wenku.baidu.com/view/ceb0e36d01Ica300a6c3908d.html 3、百度文库,《示波法血压测量的实现与讨论》,http://wenku.baidu.com/view/5a22dbd026fff705ccl70a04.html
4、张桂平,《电子血压计测量原理及存在的问题》,http://wenku.baidu.com/view/4920d41fc281e53a5802ff71.html
5、网络博客,《血压的数值计算公式》,http://blog.21ic.com/user 1/2804/archives/2010/77539.html
发明内容
为了克服上述现有技术的不足,本发明提供了一种快速确定收缩压和舒张压的方法,便于在单片机上进行实现。因为扇形算法确定收缩压过于复杂,限于单片机等MCU的性能而无法实现,而单片机等MCU又是便携式电子血压计等测量设备必不可缺的重要器件之一,所以本发明使便携式电子血压计的便携性、易用性成为可能。本发明所采用的技术方案是:根据图5,测量开始时,MCU —边采样压力传感器信号测量静压,一边控制微型充气泵将袖带压力提升至170mmHg,然后停止采样压力传感器信号,控制充气泵以3 5mmHg/秒的速度缓慢放气。当袖带内静压力低于收缩压时,带通滤波器输出脉搏波信号,MCU对脉搏波信号进行采样,记录下每个脉搏波幅度的最大值,同时MCU立即启动采样压力传感器信号,测定并记录袖带内的静压。当袖带内静压力低于舒张压时,脉搏波信号逐渐消失,停止两路信号的采样。MCU内存RAM记录的脉搏波最大值,可形成一条脉搏波的包络线,如图3。在确定收缩压时,观察脉搏波包络线位于平均压左侧的部分,从第一个采样点开始,以每个被观察的采样点(以下简称被观察点)连线至包络线顶点(即平均压所在的采样点),形成一条线段,称之为“基线段”,显然每个被观察点均有一条基线段。被观察点同时连线至其与包络线顶点之间的每个采样点,形成若干条线段,这些线段都称之为“偏线段”。“基线段”斜率与每个“偏线段”斜率的差,表示“偏线段”与“基线段”的偏离程度。本发明量化偏离程度的方法是将被观察点每个“偏线段”与“基线段”的斜率差求绝对值,然后将绝对值求和,再求平均值(称之为“斜率差绝对值均值法”);或将被观察点每个“偏线段”与“基线段”的斜率差先求平方,然后将平方值相加,再求平方根,最后除以“偏线段”的个数(称之为“斜率差平方根均值法”)。最后以最小的均值作为判断脉冲包络线的最平缓处特征的条件,从而确定收缩压SP所在的位置。与复杂的FAN算法相比,本发明提出的“斜率差绝对值均值法”和“斜率差平方根均值法”确定收缩压采样点的方法,非常便于在单片机上实现,并且通过均值处理,相较于传统的差分算法(收缩压判别点在脉搏波幅度有明显增加处,舒张压判别点在脉搏波幅度有明显减少处),则大大弱化了每个脉搏脉冲可能引入的干扰,提高了判断的准确性。在确定舒张压时,观察脉搏波包络线位于平均压右侧的部分,以每个被观察点连线至其后第一个采样点,形成一条线段,以该线段的斜率与被观察点幅度的比值作为判断对象,以此衡量静压低于平均压时脉搏波幅度变化快慢的程度,比值最大的采样点即为舒张压的位置,将此种方法称之为“脉搏降幅百分比法”。与传统的差分算法确定舒张压的方法相比,本发明提出的“脉搏降幅百分比法”有较强的抗干扰能力,可以确保判断结果准确。
图1为示波法测量血压的原理示意图。图2为脉搏信号示意图。
`
图3为脉搏信号归一化的包络线和幅度系数法示意图。图4为FAN算法示意图。图5为本发明所使用的电子电路的原理示意图,其中的主要器件和模块说明如下:
MCU:使用TI公司的MSP430F149,是一款工业领域常用的16位单片机,含有丰富的外围电路,如多路12-bit精度的模拟-数字转换电路(ADC)。它带有2048字节的内存RAM。外接在其XT2上的晶振可高达8MHz。带flash存储器,用于保存目标代码。工作电压1.8
3.3V,支持多种低功耗模式;
压力传感器:使用Freescale (飞思卡尔)公司的型号为MPVX5050GP的空气表压压力芯片,工作电压5.0V,测量量程为O 375mmHg ;
带通滤波器:由一个有源高通滤波器和一个有源低通滤波器构成的模拟滤波器,通带频率范围为0.48Hz 3.0Hz0有源器件是型号为LM324的运算放大器;
显示模块:为定制的LCD显示装置,用于显示测量过程中的参数和测量结果的显示。图6为“斜率差绝对值均值法”和“斜率差平方根均值法”的原理示意图。图7为确定舒张压算法示意图。
具体实施例方式图6为本发明“斜率差绝对值均值法”和“斜率差平方根均值法”的原理示意图。由前所述,脉搏信号包络线的顶点为平均压。图6中Tm为平均压所在的取样点,对应的振幅Am,为所有取样点振幅的最大值。“斜率差绝对值均值法”的计算过程如下:
第一步:以第一个采样点TO为基点,计算线段T0T1、T0T2、T0T3、……、T0Tm的斜率分别为:
TOTl 斜率 Kl= (Al-AO)/(Tl-TO)
T0T2 斜率 K2= (A2-A0) / (T2-T0)
T0T3 斜率 K3= (A3-A 0) / (T3-T0)
TOTm 斜率 Km = (Am-AO) / (Tm-TO)
第二步:以线段TOTm斜率Km为中心,确定K1、K2、K3、……、Km-1与Km的偏离程度,有两种方法:其一是计算Km与Ki (l<=i<=m-l)的差值,并将这些差值的绝对值相加,求平均值,记为DO,如下:
DO = (I Km-Kl I +1Km-K2| +1Km_K3 | +…+1Km-Km-1|)/(m_l)
第三步:重复第一步和第二步,以Tl采样点为基点,计算线段T1T2、T1T3、……、TlTm的斜率分别为:
T1T2 斜率(A2-A1)/(T2-T1)
T1T3 斜率(A3-A1)/(T3-T1)
TI Tm 斜率(Am-A I) / (Tm-T I)
以TlTm斜率为中心,确定T1T2斜率、T1T3斜率、……、TlTm_l斜率与TlTm斜率的偏离程度,同样是将这些差值的绝对值相加,求平均值,记为D1。重复上述步骤,直至以Tm-1为基点,计算出结果Dm-1。最后,比较D0、D1、D2、……、Dm_l,确定最小的D值,此值对应的取样点即为收缩
压SP所在点。这种方法称之为“斜率差绝对值均值法”。用C语言实现这一算法过程的代码如下:
//定义一个结构BLOOD存储脉搏波的峰值和对应的静压值 typedef struct blood
{
float peak;//脉博幅度的峰值
float mmHg;//对应的血压值
} BLOOD;
BLOOD bp [100];
unsigned int pulse_cnt; // 脉搏波脉冲个数
float Max_peak; //脉搏波波幅峰值的最大值,即脉搏波包络线的顶点
float ratio; //临时变量
unsigned int Ks, Km; //Ks为收缩压观察点,Km为平均压所在点unsigned int d[50] ; //存储 DO,......,Dm-1
unsigned int k,I;
unsigned int cnt_h=0; //计数器,记录幅度系数法确定的符合条件的釆样点个数unsigned int x[50] ; //存储幅度系数法确定的釆样点序号A查找最大幅度值Max—peak */
Max—peak = bp
.peak;
Km = 0;
for (k=l;k〈pulse—cnt;k++)
{
if ((bp[k].peak>Max—peak))
{
Max—peak = bp[k].peak;
Km = k;
}
}
A查找最大幅度值Max—peak结束*/
Λ计算斜率差绝对值均值Vfor (k=0;k〈Km;k++)
{
ratio = 0;
d [k] = (bp[Km].peak-bp[k].peak)/(Km_k);for (l=(k+l) ; KKm; I++)
{
d[l] = (bp[I].peak-bp[k].peak)/(l~k);ratio = ratio + fabs (d[k]_d[l]);
}
d[k] = ratio/ (Km_k) ; // 均值处理
}
Λ计算斜率差绝对值均值结束V/*幅度系数法确定大致范围*/cnt—h = O;for (k=0;k〈Km;k++)
{
ratio = (float)bp[k].peak/Max—peak;if (ratio>=0.3 && ratio<=0.75) {
x[cnt_h] = k;cnt—h++;
}}
/*幅度系数法确定大致范围结束*/
/*确定收缩压的采样点*/ ratio = d[x
];
Ks = X [O];
for(1=1;l〈cnt_h;I++)
{
if(d[x[l]] < ratio)
{
ratio = d[x[l]];
Ks = x[l];
}
}
/*确定收缩压的采样点结束*/
最后得到的收缩压为bp [Ks].mmHg ο上述C源代码,经过合适的编译器编译,几乎可以工作在任何8位或16位的单片机上。
“斜率差平方根均值法”的计算过程,仅仅在上述第二步中,计算其他线段斜率与斜率Km的偏离程度时,计算Km与Ki (l<=i<=m-l)的差值,并将这些差值的平方相加,再求平方根,然后将平方根除以参与计算的采样点数,得出平均值,记为DIFFO^T:
DIFFO = sqrt[ (Km-Kl) ~2+(Km_K2) ~2+(Km-K3) ~2+—+ (Km-Km-1) ~2]/(m_l)
其中符号X~2表示求变量X的平方,符号sqrt[]表示对[]内的数值求平方根。同样地,最后比较DIFF0、DIFF1、DIFF2、……、DIFFm_l,确定最小的DIFF值,此值对应的取样点即为收缩压SP所在点。这种方法称之为“斜率差平方根均值法”。用C语言实现的代码只需将计算“斜率差绝对值均值”改为计算“斜率差平方根均值”即可,如下:
/*计算斜率差平方根均值*/ for (k=0;k〈Km;k++)
{
ratio = 0;
X[k] = (bp[Km].peak-bp[k].peak)/(Km_k); for (1= (k+1) ; KKm; I++)
{
X[I] = (bp[I].peak-bp[k].peak)/ (l~k);ratio = ratio + (x [k] -x [I]) * (x[k]-x[l]);
}
X[k] = sqrt (ratio)/(Km~k) ; //均值处理
}
/*计算斜率差平方根均值结束*/
本发明提出的确定舒张压的“脉搏降幅百分比法”,技术方案原理如图7所示,计算过程如下:
第一步:分别以采样点Tm+1、Tm+2、Tm+3、……、Te为基点,计算基点相对于其前面一个采样点脉搏包络线幅度下降值与基点幅度的比值,分别为:
Tm+1 点比值:Rm = (Am-Am+1) /AmTm+2 点比值:Rm+l = (Am+1-Am-2)/Am+1Tm+3 点比值:Rm+2 = (Am+2-Am_3)/Am+2
Te 点比值:Re_l = (Ae-1-Ae) / Ae-1
第二步,遍历Rm、Rm+l、Rm+2、……、Re_l这些比值,找出最大的比值,对应的采样点即为舒张压所在处。C语言实现这一算法的过程如下: unsigned int Kd; //Kd为舒张压观察点
unsigned int r[50] ; //存储 Rm,......, Re-1
unsigned int k, I;
unsigned int cnt_l=0; //计数器,记录幅度系数法确定的符合条件的采样点个数 unsigned int y[50] ; //存储幅度系数法确定的采样点序号 /*计算每个观察点幅度降幅*/ for(k=Km;k<(pulse_cnt-l);k++)
权利要求
1.一种在电子血压计中确定收缩压和舒张压的算法,基于对脉搏波信号及其包络线(示波法)的处理,在单片机上实现对收缩压和舒张压采样点的准确判别,从而实现血压的自动化测量,其特征是:使用“斜率差绝对值均值法”或“斜率差平方根均值法”,能够直接在电子血压计的单片机上实现,并判别收缩压采样点位置,使用“脉搏降幅百分比法”,能够在电子血压计的单片机上实现,并判别舒张压采样点位置。
2.根据权利要求1所述的算法,其特征是:使用单片机完成“示波法”中收缩压和舒张压所在采样点位置的判别。
3.根据权利要求1所述的算法,其特征是:“斜率差绝对值均值法”确定收缩压的过程中,观察脉搏波包络线顶点左侧部分,从第一个采样点开始,依次计算每个采样点的若干“偏线段”与“基线段”的偏离程度,用“基线段”和“偏线段”的斜率差绝对值的均值衡量偏尚程度,偏尚程度与均值成正比。
4.根据权利要求1所述的算法,其特征是:“斜率差绝对值均值法”确定收缩压的过程中,判别收缩压所在采样点位置的标准是斜率差绝对值均值最小。
5.根据权利要求1所述的算法,其特征是:“斜率差平方根均值法”确定收缩压的过程中,观察脉搏波包络线顶点左侧部分,从第一个采样点开始,依次计算每个采样点的若干“偏线段”与“基线段”的偏离程度,用“基线段”和“偏线段”的斜率差平方和的根的均值衡量偏尚程度,偏尚程度与均值成正比。
6.根据权利要求1所述的算法,其特征是:“斜率差平方根均值法”确定收缩压的过程中,判定收缩压所在采样点位置的标准是斜率差平方根均值最小。
7.根据权利要求1所述的算法,其特征是:“脉搏降幅百分比法”确定舒张压的过程中,观察脉搏波包络线顶点右侧部分,从顶点开始,计算每个采样点与紧跟其后的采样点线段斜率与采样点本身波幅的比值(即脉搏降幅百分比),作为衡量静压下降期间脉搏波幅度变化快慢的程度,比值越大,波幅变化越显著。
8.根据权利要求1所述的算法,其特征是:“脉搏降幅百分比法”确定舒张压的过程中,判定舒张压所在采样点位置的标准是脉搏降幅百分比最大。
全文摘要
本发明涉及基于“示波法”的电子血压计的技术领域,提出一种确定收缩压和舒张压的方法,适合在电子血压计的单片机上实现。传统的FAN算法确定收缩压采样点位置,算法复杂,需单片机将采样数据上传至PC,由PC借助特殊的数学软件完成处理,使测量过程变得复杂,测量装置便携性较差。本发明提出一种“斜率差绝对值均值法”或“斜率差平方根均值法”,可快速有效确定收缩压采样点位置,使血压测量装置有很好的便携性,并易于操作。本发明提出的“脉搏降幅百分比法”相比于传统的差分算法(即舒张压判别点在脉搏波幅度有明显减少处)确定舒张压位置,抗干扰能力得到改善,提高了测量准确性。
文档编号A61B5/0225GK103169465SQ20131012924
公开日2013年6月26日 申请日期2013年4月15日 优先权日2013年4月15日
发明者瞿浩正 申请人:瞿浩正