潘天文,刘帅,虞致国,钱黎明,魏敬和,顾晓峰
1. 物联网技术应用教育部工程研究中心,江南大学 电子工程系,江苏 无锡 214122;
2. 中国电子科技集团公司第五十八研究所,江苏 无锡 214072
伴随着我国经济和社会的发展,人口老龄化进程的加快(2016年我国60岁及以上占总人口比例为15.5%[1]),我国的心脏疾病发病率不断攀升,心脏疾病已成为威胁健康的第一杀手[2-3]。但是,医院使用的高精度心电信号采集设备体积大、价格高、使用复杂,并不适合普通个人和家庭使用。动态心率信号的实时采集与监测对于心血管疾病的预防和诊治具有重要的实用价值。周琪等[4]采用压电式心率传感器进行心电采集,从测量血压时压力传感器测到的波动来计算脉率,但这种方法提取信号时会限制病人的活动,长时间使用会增加病人生理和心理的不适。本文设计了一种功耗低、便携性好的小型心率监测无线发送设备,并通过改进传统的阈值检测算法提高了心率监测的精度,具有良好的应用价值。
设计的便携式心率监测系统整体结构,见图1。该系统首先从人体采集脉搏波模拟信号,然后经PSoC单片机上的模数转换(ADC)模块进行信号的A/D转换,再利用心率算法进行计算,最后通过蓝牙将实时数据传送到手机等智能终端。
图1 心率监测系统的整体结构
系统硬件主要由采集模块、主控模块、通信模块三部分组成。采集模块为传感器和PSoC单片机上的ADC模块;主控模块为PSoC单片机上的超低功耗ARM Cortex-M0微处理器;通信模块为PSoC上的蓝牙模块。
使用脉冲光电传感器进行人体脉搏波采集,其基本原理是利用血管搏动时造成透光率的不同来测量脉搏波,即光电容积描记法[5-8]。该传感器可通过绑带固定在病人的手指上,不会限制病人的行动。传感器实物照片,见图2。该传感器使用了绿光LED作为光源,采用APDS-9008微型光传感器[9],灵敏度较高。当绿光LED照射到人体外周血管,动脉的充血容积变化导致光束的透光率发生改变,因而人体组织反射的光线也随之改变。环境光传感器接收反射的光线并能产生高增益的光电流,通过标准值的外部电阻转换为电压。而传感器输出电压值的变化就是脉搏波形的变化,因而电压变化周期就是心跳间隔周期,从而可计算出心率。
图2 脉冲光电式传感器
本设计采用赛普拉斯的PSoC单片机,该单片机集成了低功耗蓝牙线射频系统、模拟和数字外设功能、存储器及ARM Cortex-M0超低功耗微处理器核。基于PSoC单片机上的逐次逼近型模数转换器(SAR ADC)模块[10]对来自于传感器的模拟信号进行模数转换,此处选择10位分辨率,采用单端输入的工作方式。采用定时器模块用于产生中断来获取ADC转换的数据进行计算。无线传输使用单片机内嵌蓝牙模块,微处理器核与智能终端基于BLE 4.0协议进行通信连接。
系统的软件设计主要包括基于PSoC的嵌入式软件和基于手机终端的监测软件两部分。
PSoC Creator是一个基于Windows的集成开发环境(IDE),用于对PSoC系列产品进行软件和应用固件开发。PSoC Creator提供了丰富的函数,可提高设计效率和灵活性[11]。系统初始化后先进行A/D转换,接着定时器进行中断获取ADC采样值进行心率计算,然后通过蓝牙将数据传输到终端。
基于传统的阈值检测算法对心率算法进行了改进。传感器测量脉搏波信号时,会在每个波峰来临后产生一个小波峰,称为重搏波[12],这是由于脉搏波在动脉中反射造成的。在使用阈值检测算法时,重搏波产生的波形突变会导致阈值的误检,从而影响心率的计算。重搏波一般出现在0.6个心跳间隔(Time Between Heartbeats,TBH)内[13],因此为了避免重搏波的干扰,每过0.6个TBH周期后在脉搏波的上升阶段设置阈值进行阈值检测,然后根据两个相邻脉搏波的上升段阈值的时间差来计算出TBH,进而计算出心率,即每分钟的心跳次数(Beats Per Minute,BPM)。
改进算法的软件流程,见图3。假设初始心率为100 beat/min,则可算出初始心跳间隔,记为TBH(a),即TBH(a)=60 s/100=600 ms。因为TBH(a)是设定的特殊值,存在误差,所以要对TBH(a)进行处理。首先用差分阈值算法[14]对脉搏波信号进行波峰检测,求出脉搏波信号的差分波形,然后对每个差分后的值进行平方,得到差分平方值△P=[P(n+1)-P(n)]2。P(n+1)为此次信号幅值,P(n)为上一次信号幅值。由于脉搏波信号中主波和重搏波相对于其他波,波形突变,所以平方后只有主波和重搏波的附近可以检测到波峰。在TBH(a)时间内检测在TBH(a)周期内出现的波峰数:若检测到三个波峰,则不改变TBH(a)的初值;若检测到2个及以下波峰,则增加TBH(a)的初值,每次递增10,直到检测到三个波峰为止;若检测到4个及以上波峰,则减小TBH(a)的初值,每次递减10,直到检测到三个波峰为止。然后,用处理过的TBH(a)进行下一周期的心率计算。这样,通过误差修正,让TBH(a)处在一个较为准确的区间里,可使误差降到最小。
图3 改进算法的流程
接着,对脉搏波信号进行阈值检测。本文将阈值(简称Thresh)设为信号上升段的50%[15],当第一次检测到脉搏波信号超过阈值并已经过0.6个TBH时,开始计算时间(记为△t1);当第二次检测到脉搏波信号超过阈值并已经过0.6个TBH时,记第二次时间(记为△t2)。根据两次检测到阈值的时间差可计算出第二次心跳间隔,记为TBH(b),即TBH(b)=△t2-△t1。依此类推,计算出其后的TBH。最后,取TBH的平均值计算出心率。
终端显示与控制在智能手机上实现。赛普拉斯提供了一个手机应用程序CySmart[11]用于验证应用程序。本系统采用基于IOS操作系统的智能手机作为终端。手机界面上显示了动态监测的心率BPM和心跳间隔周期RR-Interval等实时数据,见图4。
图4 手机终端验证界面
本文采集了实验者在静息状态和运动状态下各10组心率数据,分别见表1~2。
同时用改进算法对比标准心率进行检出率分析,其中:
表1 静息状态的检出率
表2 运动状态的检出率
从测试数据可以计算得出,改进算法检出率总体高于阈值检测算法检出率,而表2中可观察到有两组数据的改进算法错检数略高于阈值检测。这是因为两组数据的实验者心率都在100 beat/min左右。而阈值检测算法取的初始心率特殊值是100 beat/min,与实验者实际心率较为接近,所以最后求得的心率误差较小。阈值检测算法在静息状态下和运动状态下的平均检出率分别为96.79%和97.91%,而本文所提出的改进算法的平均检出率分别为98.82%和99.01%,比阈值检测算法的检出率平均高出1.59%;这20组数据中,阈值检测算法的平均误差为2.6 beat/min,而改进算法的平均误差为1.05 beat/min,验证了改进算法的可行性。根据中华人民共和国医药行业标准[16],要求误差≤5 beat/min,因此本系统的误差在个人家庭使用环境下是可以接受的。
系统功耗测试,见图5。用万用表连接电路板上的工作电流测试接口,测得平均电流为13.53 mA,钮扣电池电压为3 V,因此平均功耗约为40.6 mW,具有低功耗特性。
图5 系统功耗测试
针对传统阈值检测算法引入的首个心跳间隔特殊值作了预处理,通过对脉搏波信号的波峰检测,确定该特殊值的大致区间来减小误差。通过静息状态和运动状态的数据可知,本文改进的阈值检测算法,提高了心率的检出率,符合医药行业标准。该心率监测系统具有便携性好、功耗低、检测精度高、实时监测的特点,具备良好的实用价值。