基于STM32和小波自适应滤波算法的生理参数监测系统的研究
2023-03-04魏路明佘世刚邵笑校武格盈裴海珊
魏路明,佘世刚,邵笑校,武格盈,裴海珊
(常州大学 机械工程学院,江苏 常州 213164)
0 引言
据国家心血管中心组织发布的最新报告,我们国家的心血管疾病患病率上升趋势迅猛[1]。而从临床的诊断数据来看,前期人们血压数据有变化时,表征感觉并不明显。所以当一部分人血压已经偏离正常范围时,自己通常并不知晓。而此时身体器官已经造成了严重伤害[2]。因此对心血管疾病的预防刻不容缓,应通过监测手段尽早发现疾病,实施健康参数的监测。现阶段,医疗服务业所配备的实时监测健康参数的机器主要是床边监护仪,对于医疗机构来说,能够很好地满足对心率、血压、血氧饱和度等特征参数的实时监测。但由于它所包括的导线、指套及电极等组件对于日常生活来说较繁杂,不能实现随身携带的功能,因此对于家庭和个人来说并不普及[3]。且该设备价格昂贵,监测数据并不能直观的展示出来,仍需专业的分析与判断。基于目前的现状,选择开发一种能够对心率数据、血氧饱和度进行实时测量的穿戴式多参数监测系统刻不容缓[4]。
J.Martinho等人通过研究设计出了一种能够实现远程控制的生理参数监测设备[5],该设备能够对人体的心电图、血氧、血压3种生理参数进行监测收集,根据实时采集到的波形依托WI-FI互联网传输到远程后端服务器终端,为患者提供一些的帮助。AnlikerUrs等人研究出了一种能够便于携带的远程医疗监测设备,名为“AMON”[6],借助该设备,能够将患者的多项生理参数进行连续的采集和数据分析,系统将得到的数据通过互联网大数据实时传输到关联的医疗机构数据库中,让医生更加实时地了解到病人的身体健康状况,但设备不方便穿戴,且功耗较大。2006年李良成[7]等人联手各方科研组织针对血氧检测进行了一系列的研究,推出了利用双光源探头来对大脑的血氧含量进行健康监控的一项新技术,能够对大脑两侧脑组织局部范围内的血氧含量进行数据采集。苏小青等设计一种基于光电传感器的脉象检测仪,该设备能够实现对脉象的非接触检测,但不符合传统切脉装置。针对上述不足本文设计了一款体积小巧、功耗较低且成本低廉,同时兼具优良监测性能的可穿戴多参数生理监测系统。该设备外观呈现手腕外壳的形式,小巧美观,让患者在日常活动中得到实时的健康监测。并且医生可通过远程监控端实时掌握病人的身体动向,可及时对病人的治疗做出规划,十分方便对患者健康问题做出治疗。
1 多参数健康监护系统总体设计
图1 系统整体框图
为实现对心率、血氧饱和度(SpO2)和体温等人体的多个生理特征指数进行动态实时监控,该系统在多个方位布置了传感器以此来完成对人体的多点监测,通过监测模块获得实时数据经过串口传送至数据微处理器,通过OLED屏幕显示和按键实现人机交互情景,之后在ZigBee模块下完成数据的输送。系统结构图1所示,主要分为数据采集模块、微控制器及数字处理模块、人机交互模块、数据存储模块、电源模块和通信模块。数据采集模块中包含了很多个生理信号传感器,在进行人体数据监测时,往往因为体表信号不够强烈且会伴随着很多的噪声从而影响信号的准确性,因此获得的信号需要通过放大和滤波处理才能被采用。而STM32F103C8T6则被用作为该系统的主控芯片,它是在ARM的基础上采用Cotex-M3作为内核来对系统数据进行处理。系统的电源模块则采用了3.7 V的可充电锂电池。为了实现人机交互的功能,系统配置了OLED屏幕来将动态数据进行展示,按键的设置能够完成对系统各个模式之间的转换与复位。ZigBee模块的设计能够实现生理特征参数的远程输送,将系统监测到的人体各项生理参数实时传送到远程的控制端内,各个方位的传感器将采集到的数据传到系统中,经过系统内的数据模块处理后再进行报警和数据上传等流程。系统运行的结构如图2所示。
图2 系统运行结构框图
2 生理参数多点监测系统硬件电路设计
2.1 单片机最小系统和接口设计
对人体的生理特征参数进行收集、处理、判断时,仅依靠数据微处理器是远远不够的,而为系统提供大量的外围电路能够很好地解决这个问题,本系统的单片机最小系统如图3所示。选择STM32F103C8T6为系统的处理器,主要是因为其外观小巧轻便,能够提升系统的便携性。STM32F103C8T6在ARM基础下将Cotex-M3作为数据内核,包括了3.3 V的电源供电和72 MHz的工作频率。不仅如此,其外设十分全面,拥有强大的功能。主控芯片完成对数据的采集、判读、处理之后通过连接的OLED屏幕实现人机交互,不仅如此,主控芯片还连通了多个方位的传感器及无线通信模块等等,为了完成对各个外设内数据的传输和接收,系统配置了多个不同形式的接口。而在STM32F103C8T6芯片中则包含了2个12位ADC模数转换器,该转换器能够将系统内各方位传感器中存储的模拟信号进行收集;其中IIC模式以其高速的传输速度来实现对传感器中的数据收集。为了实现进一步的数据无线传送,通过对比两种方案的优劣来得到最优解,一种方式是通过UART串行通信手段将传感器内的数据发送到ZigBee模块内,ZigBee模块将数据发送至远程监护端;另一种方式则是通过UART串行通信将数据传送到本地控制端内,然后直接传送到移动终端内。
图3 单片机最小系统
2.2 温度测量电路的设计
对人体体温进行测量时,要考虑到人体各个部位间的温度差异,仅仅依靠单点测温的方式是不能得到最真实有效的数据值的。因此,可以考虑在人体的多个方位配置不同种类的温度传感器进行同时测温,在同一时刻获得人体腋下和额前的温度。检测到的温度值传输至控制芯片进行数据判别,传感器实物和电路如图4所示。对人体额前温度进行测量所采用的传感器是非接触式红外传感器MLX90614,它内部集成了红外敏感探测芯片和信号调度芯片ASSP两个部分,且这两个模块通过该传感器连接在一条总线上。不仅如此,该传感器内部还设置了低噪声放大器来对信号进行放大处理,DSP单元和ADC转换器能够实现17位的高精度测量,能够将测量的温度值精确到0.02℃,数据收集后能够通过SMBus(系统管理总线)进行输出。在红外探头中采纳了热电偶,两端分别接通到不同的点位,包括芯片冷节点和薄膜接受点,连接薄膜的一侧将温度传到相应的点位后,热电偶的输出信号为:
T0=RAM(0x07)×0.02-273.15
(1)
图4 温度传感器电路
利用单片机对人体温度进行测量,工作模式则调整为0x07,同时也加入了滤波电容装置来消除测温过程中可能出现的电源波纹,从而完成对温度的精确测控。测得的温度值发送到DSP单元得到处理后以数字方式输出。采用DS18B20温度传感器来测量人体的腋下温度,由于该传感器具有很大的接触面积,所以可以更加全面地对腋下温度进行监测,且测量值的精确度能达到0.062 5 ℃,通过8个DS18B20的并联设置集成在同一条数据总线上,从而得到8个不同方位的温度实时测量数据。而该单元主要是由64位ROM、温度传感器、非挥发性温度报警触发器和配置寄存器组合而成的,在RAM数据处理器对数据进行处理后传送到转换器中得到人体温度值,电路中接入10 kΩ上拉电阻不仅扩大了测量值并且提升了整个测量过程的稳定性。
2.3 心率和血氧浓度的设计
在人体内,心率测量值能够在一定程度上反映出血液循环系统的状况,该系统主要采用了反射式的光电容积法来对人体心率进行监测[8]。因为人体血管中的非血液组织在吸收光时呈稳定状态,所以在光信号照射下,血管内的液体能够对光信号起到一定反射作用,而该反射信号的变化也能够反映出人体动脉血的充盈变化。每当心脏跳动一次时,反射信号波形都会变化出一个尖峰脉冲,这个过程能够将脉搏信号转换为电信号。在心率收集时所采用的频率脉冲达到了50 Hz,每进行一次数据收集所消耗的时长为20 ms,设采集次数为N,用时为0.02 ns,期间的尖峰脉冲数为M,心率计算公式为:
Hb=60M/0.02N
(2)
该系统对人体腕部和指尖等生理特征参数的监测,主要采用MAX30102传感器芯片来对心率血氧进行监测[9],对外部光环境进行监测控制模块包括红光LED、红外光LED、光电检测电路及环境光抑制电路,结构图如图5所示。主要操作步骤为:通过与人体手腕部位相连的心率血氧传感器的监测获得人体的实时生理参数值[10],获得的生理参数在标准IIC协议通道下发送至主控芯片中。测量过程会受到外部环境和噪声的影响,进而测量的精确性可能会产生一些偏差。因此,在SCL和SDA引脚处将一个1 kΩ的上拉电阻接入电路,扩大心率波形的变化范围,针对系统外部存在的噪声可以通过小波自适应滤波算法消除。当Pulse sensor脉搏心率传感器对人体的指尖部位进行心率监测时,由于该部位皮肤组织较薄,因此采用了反射式的测量手段获得数据,主要利用了峰值波长515 nm的绿光LED和光敏传感器来对皮肤浅层部位的心率值进行测量,获得的数据经过低通滤波器和MCP6001 运算放大器进行放大,继而通过A/D转换器处理后传输到微处理器中。
图5 心率传感器电路图
3 系统功能的优化设计
3.1 电源模块设计
为了使该系统携带便捷,应用了能够便于充电的锂电池来为其续航,可以利用USB进行快速充电。本系统增加了电量检测电路。可以有效保证设备处于正常状态,避免因为设备电池没电出现无法监测身体的情况。该系统所配置的稳压电路是基于RS3236完成的,该电路抗干扰性强、低静态电流、噪声较低等优良性能,其电路如图6所示。数据微处理器的工作电压范围在2~3.6 V之间,而传感器和显示模块的工作电压水平均在3.3 V。电源模块的选用应当考虑系统的便携性,因此采用了体积较小的3.7 V可充电锂电池作为电源模块,该电池不仅小巧轻便,还能为系统进行长时间稳定供电。充电电路如图7所示
图6 RS3236稳压电路设计
3.2 低功耗设计
由于主控芯片所连通的传感器耗能巨大,因此内置了按键来使系统进行两种工作模式的转换。一是对人体生理参数进行动态实时测量,同时将数据发送到下一模块进行处理;另外一种模式指的是在按键控制下实现传感器模式的变化。单片机的I/O口总共可分为7种工作状态,在OUT-PP模式下将I/O口的工作模式调整为低电平(0 V)和高电平(3.3 V)。按键没有作用时,I/O口将产生高电平,控制传感器进入工作状态;当按键按下后,I/O口产生低电平,传感器也随之关闭。
图7 充电电路设计
3.3 人机交互设计
该系统的显示部分采用了OLED彩色显示屏[11],并采用了IIC的标准通信协议方式进行生理参数的实时显示,选取W5Q18Mb作为存储单元,它的传输协议是SPI。将实验得到的测量数据和系统设定存放在存储芯片内部。OLED有机发光二级管(organic light emitting diode):即有机电激光显示,指的是基于电流的作用,有机发光材料与有机半导体材料中的载流子符合及注入使得有机材料发光的技术。系统开机且ZigBee开始正常通信之后,屏幕上将呈现所测量的生理参数,患者可以在按键的作用下来控制系统进行不同模式的转换。
3.4 通信系统的设计
本系统选取ZigBee作为生理参数数据传送模块,ZigBee无线通信模块的核心选用了CC2530芯片[12],由TI公司出品。在CC2530芯片的作用下来对Zigbee无线通信模块进行技术手段支持,其中包括主Zigbee模块和从Zigbee模块两大类,主从模块进行数据的传输时应当保持在相同频率内。Zigbee无线通信主模块和芯片的主控模块利用串口进行关联,且能够在关联的同时实现数据的相互传送。TI CC2530主要是针对芯片(SOC)CMOS提出的解决方案。它所提出的解决方案能够对系统的性能进行提升,在频段域内能够很好的发挥自身作用,且满足了成本低廉,耗能小的条件。ZigBee无线通信模块主要是基于无线传统网络来实现通信的新兴科技手段,能够在短距离数据传送下高效的完成任务,可以组成若干主节点以及若干从节点。通过从节点采集到的数据传输到主节点。最终通过手持端监测生理参数。
4 系统数据处理算法
4.1 温度测量数据及算法
通过采用MLX90614传感器实现非接触式的测温,MLX90614是一款高精密的数字型红外模块。通过该模块主要对测试者额头进行测量,主要根据红外辐射特性,每次测量时内部光学系统将人体的红外辐射量转换成电信号,实现测量温度的目的。STM32通过I2C方式与其实现通信。最终把数据显示在液晶屏上。腋下温度测量通过DS18B20传感器测量人体腋下的体温值,体温值是最可以直观反映一个人当前身体状态,对测量报警温度进行非易失性的范围限制,系统在测量上述两处体温值后,通过求平均值的方法形成拟合数据,为避免错误判断。系统采集三次数据,每次取中间值进行拟合。系统监测的温度值若是超出了所设定的范围,则DS18B20传感器中的报警装置启动,程序再次判断测量值,如再次确认超过预设值,则单片机通过程序模块中的短信模块,向监护端发出短信报警。使患者在第一时间得到救治,提高了工作了效率,降低了事态升级的风险。
4.2 血压算法的实现
选取实验对象静坐于椅子上,设置采样频率fs=400 Hz,每次采样时间为5 s,经过多次实验推敲,400 Hz为最佳采样频率,一方面避免了因采样频率小进而导致样本数量不足,另一方面,又避开了采样频率过大导致样本冗余进而对血压模型建立带来诸多问题。而采样时间亦是通过反复测试生成,采样时间不能过长,过长会导致设备测量反应不够灵敏,时间选取过短不能保证脉搏波参与血压计算的数量。本文通过MAX30102采集实验对象的PPG信号,首先识别脉搏波的起始位置,紧接着对PPG信号进行周期性分割,对每一个脉搏波的特征点进行逐一识别,最终通过对PPG信号进行基线校准以及做归一化处理,使特征值的计算更加便利。通过研究特征值与人体血压之间的关联性,并筛查出关联性较大的特征值来进行血压模型的计算,进而得出血压值。
4.3 心率测量数据及处理
通过光电脉搏波传感器来获取动脉的原始信号,受到人体肌体动作、呼吸、外界环境以及心理状态的影响,因而脉搏波原始信号中包含这些因素带来的噪声和干扰[13],例如肌肉抖动带来的毛刺。因此在提取脉搏波特征参数来计算健康参数之前,应对脉搏波原始信号进行预处理,以便得到波形质量较好的可以利用的脉搏波信号,从而提高后续健康参数计算的准确度。本文通过将小波变换与自适应滤波算法相结合,提出了一种改进的小波自适应阈值滤波算法,且与传统的小波自适应软阈值滤波及小波自适应硬阈值滤波做出了分析比对。
小波变化(WT, wavelet transform)主要是利用选择的一族函数[14],通过该函数对其他信号或函数的特征进行描述或取近似值,称之为小波函数系。该变化主要是基于小波条件下对其开展平移或伸缩的方式取得的。在此基础上,可以构造出包含函数空间的框架,要进行处理分析的信号可以通过构成的框架进行映射从而将信号成功分解。而小波变化的变化域内可以将原有的时间域中的信号进行多尺度的解析重构,经过整理分析,从而获得了包含低频域成分和多尺度的高频域成分的信号连续小波变化与傅里叶变化类似,小波变化并不是对所有的信号都能适应。通常来讲,待处理信号及函数需包含于L2(R)空间,即f(t)∈L2(R),则L2(R)指R上平方可积函数组成的函数空间,也就是f(t)满足:
(3)
(4)
则ψ(t)被称之为母小波函数也就是小波。给定小波函数ψ(t):
(5)
a,b均为常数,且a>0。ψa,b(t)是小波函数ψ(t)平移拉伸以后的到的。假设改变参数a,b,可得到一组函数ψa,b(t)。对能量有限的信号f(t)∈L2(R),则f(t)的小波变换定义为:
(6)
ψj,k(t)=2-j/2ψ(2-jt-k)
(7)
函数或者信号f(t)的离散小波变换定义为:
(8)
离散小波ψj,k(t)的小波基满足:
(9)
离散小波也就是正交小波。将其内部所有的函数或信号f(t),进行小波级数的处理:
(10)
式中,dj,k称为小波系数,其计算公式为:
(11)
自适应滤波器主要的目的是通过一定的方式来对滤波器参数θ(k1)进行调节,从而将包含于滤波器输出信号中的具有特定目标函数的基准信号的取值降到最低。即F=F[x(k1),d(k1),y(k1)]。对目标函数进行定义时应当符合以下两种特征:
非负性:对于任意y(k1),x(k1)和d(k1),都有F[x(k1),d(k1),y(k1)]=0
最优性:F[x(k1),d(k1),y(k1)]=0
系统在自适应阶段,为了将函数F的取值达到最小采用自适应的算法,从而获得了取值近乎相等的y(k1)与d(k1),θ(k1)收敛到θ0,其中θ0指的是将所选函数取值降到最小化的最优系数组成的集合。在适应滤波内,均方误差(MSE)是目标函数中被最常使用的一个数据,它的概念为:
F(e1(k1)) =ξ(k1) =E[e12(k1)] =
E[d2(k1)-2d(k1)y(k1) +y2(k1)]
(12)
在此基础上,一项在线性组合器的基础下发展的自适应滤波器应运而生,它的原理是基于阵列信号的线性排列将信号输出。所以:
(13)
其中:X(k1)=[x0(k1),x1(k1),...,xN(k1)]T和W(k1)=[w0(k1),w1(k1),...,wN(k1)]T分别是输入信号和自适应滤波器系数向量。在输入信号向量中利用同一种信号延时模块处理能够得到大量的元素,也就是x0(k1)=x(k1),x1(k1)=x(k1-1),xN(k1)=x(k1-N)。
本文提出了基于小波变换的自适应阈值滤波算法,去除干扰信号,降低噪声干扰。首先利用的是小波变换,小波变换会产生不同的分辨率,进而对血氧信号、血压信号进行分解,在分解过程中重构并且提取运动伪差所产生的干扰,然后将重新构造的运动伪差作为自适应噪声抵消器的参考信号,进而进行小波降噪,通过模拟不同的噪声,在不同的噪声上面来比对小波自适应滤波算法对噪声的抑制效果,从而在不伤害原始血氧信号的同时,最大程度的对噪声以及运动伪差进行抑制,得到适合的波形。
人体的心率信号是随机变化的,由于指尖部位与心脏之间有一定的距离,所以对该部位通过传感器进行数据测量时会受到很多外部环境和噪声的影响[15]。对心率进行数据采集时所采用的频率设定为50 Hz,而在脉搏每跳动一次后都会对应产生一个波形尖峰。系统上电后,开始进行数据记录,在20 s时间内共记录了前800个心率参数,在默认阈值下进行数据处理得到尖峰脉冲数和平均心率。采用定时器对整个系统进行中断控制,在数据测量中每当产生新的数据,就会将旧的数据删除,继而获得新的参数值。而在外界环境的影响下,心率尖峰脉冲数值精确度较低,且波纹较多,波形变化范围大,容易造成错误的判断。因此,采用了小波变化自适应阈值滤波算法来解决这一问题,该算法能够对信号变化进行预测且对外部噪声进行过滤,提升数据的精确性。整个心率测量的滤波流程和算法如图8所示。
图8 算法流程图
4.3.1 小波自适应软阈值滤波
图9 小波自适应软阈值滤波
通过图9可以观察出,小波自适应软阈值算法,在对血氧信号进行滤波降噪时,在原始信号加4 db噪声后,经过小波去噪,降低了噪声,随着噪声的持续增加,很明显的可以观察出血氧信号的噪声出现了无法滤除的现象。而对心率波形进行滤除时,去除噪声效果更是几乎没有。由此可以得出随着噪声信号的增加,小波自适应软阈值算法出现了弊端,以及在降噪过程中出现疲态。
4.3.2 小波自适应硬阈值滤波
图10 小波自适应硬阈值滤波
如图10所示,小波自适应硬阈值去噪算法在低噪声时,在低噪声阶段对血氧的滤波效果表现一般,只是去掉一些部分的杂波。在对心率进行滤波时,并不能很好地去除杂波。降噪效果与小波自适应软阈值去噪相差无异,均不能达到满意的降噪滤波效果。
4.3.3 改进小波自适应阈值滤波
改进小波自适应阈值滤波如图11所示。
图11 改进小波自适应阈值滤波
5 实验结果与分析
在完整的理论体系支撑下完成了对该系统的整体优化,将理论与实际相结合,完成了软件的模拟仿真以及硬件调试。与传统的鱼跃指夹式相比,该系统在很多方面有了质的提升[16]。为了验证该系统的准确性作出了大量的对比检测实验。选择了5名志愿者,让每一名志愿者身体放松,在椅子上保持静坐状态进行数据采集,每10次的数据取平均值记录下来,如表1所示。对表1的数据进行分析可以得知,利用鱼跃指夹式血氧仪YX3030所采集到的数据和通过该设计所获得的数据对比存在一定的误差,其中心率(BPM)的数据指标通过两种测量手段得到的结果误差为±2 BPM,而人体的血氧含量监测结果存在±2%的误差。通过以上数据的比对,能够得知该设计对人体进行生理参数监控的数据更加准确。
表1 系统测试结果分析对比
6 结束语
通过对比前两种滤波算法,提出改进的自适应滤波算法对波形起到了较好的滤波降噪效果。本系统在现有硬件设计的基础之上,选取低功耗的STM32控制芯片[17]。通过对心率,血压和血氧饱和度进行监测,来完成对身体状态的评估。本方案区别与传统设计的是针对脉搏波进行优化处理。在软件上,将小波变化与自适应阈值滤波结合起来。对比以往的软件算法,采取的算法均比较单一。比如平均滤波法、或者单一采用小波变化法。本文将小波变化与自适应滤波结合起来[18-19],在硬件上采用功耗更低的芯片,可实现对心率、脉搏、血氧、体温等生理参数的监测。设计实现了一种可穿戴式监测设备。携带方便、功耗较低,可实时对自身健康进行监测[20]。