基于STM32 的便携式心电仪设计
2022-07-23胡树林唐莉杨彪宫东藩侯冬晴
胡树林,唐莉,杨彪,宫东藩,侯冬晴
(吉首大学信息科学与工程学院,湖南吉首 416000)
心电仪作为临床诊断的常用工具,其对各类疾病的预防与治疗具有重要作用[1]。传统的心电仪具有体积大、操作复杂、价格昂贵等缺点,只适合在医院等场所使用,不便于日常使用[2]。随着电子信息技术与物联网技术的发展,心电监护设备逐渐进入人们日常生活中,正朝着微型化、智能化、便携式等方向发展[3]。将物联网技术与医疗应用相结合的便携式心电仪能降低设备的体积、成本和操作难度,具有研究价值。
1 便携式心电仪系统方案设计
文中设计一种可以满足日常使用的便携式心电仪,实现了实时心电采集、心率检测及蓝牙无线传输等功能。系统采用模块化设计,主要包括基于STM32单片机的微控制器单元,使用德州仪器公司的高精度模拟前端芯片ADS1292R 构成的心电信号采集模块、蓝牙无线传输模块和手机APP。通过对人体ECG 信号进行采集、放大、滤波后进行心率计算、心电图显示、心率监测。系统总体设计框图如图1 所示。
图1 便携式心电仪系统总体设计框图
2 系统硬件设计
2.1 微控制器模块(MCU)
所设计系统采用的MCU为STM32F103RCT6。该芯片内核为ARM32位Cortex-M3内核,最高工作频率达72 MHz。其硬件资源丰富,具有256 kB片内FLASH,48 kB SRAM 且具有定时器、DMA、SPI、IIC、ADC、DAC等功能[4]。其集成了多种通信接口有利于模块化设计和系统的稳定性,能满足设计的要求。单片机最小系统的外围电路由单片机、电源、时钟电路、复位电路组成,其为单片机正常工作的基本电路。MCU 供电电压为3.3 V,时钟电路由晶体振荡器和电容组成,为单片机提供时钟脉冲。微控制器单元负责系统的逻辑控制、驱动其他模块工作和对心电信号进行处理。
2.2 心电信号采集模块
心电信号使用ADS1292R 模拟前端芯片进行采集。其为一款用于生物电势测量的低功耗、多通道的同步采样24 位数模转换器(ADC),具有内置的可编程增益放大器(PGA),内部EMI 滤波、内部基准和板载振荡器。ADS1292R 具有高精度、同步采样、低功耗、多通道数据采集等优点[5]。ADS1292R 采集的数据传输使用SPI 兼容串口与MCU 通信,工作时的数据采样速率高达8 ksps,该设计使用250 sps 的采样速率。心电信号采集模块原理图如图2 所示。
图2 心电信号采集模块原理图
2.3 无线通信模块
该设计无线通信模块使用HC-05 蓝牙串口模块,其工作频段为2.4 GHz,最远通信距离为10 m[6]。其具有性能稳定、低功耗、采用AT 指令控制、操作简单等优点,能满足传输心电信号的要求。MCU 与蓝牙模块采用串口通信协议(UART),使用蓝牙模块实现MCU 与APP 的数据交互,可将心电数据传输到移动端显示,也可将用户在移动端输入的控制信息传输到MCU,实现对心电仪的无线控制。
2.4 电源设计
该系统输入电压范围为6~12 V,可使用两节18650 锂电池串联为系统供电。使用一片AMS1117-5.0线性稳压芯片(LDO)降压输出5 V,一片AMS1117-3.3输出3.3 V 为MCU、LCD 显示信号电路和指示灯供电。人体心电信号幅值较低,一般为10 μV~4 mV[7],故心电信号采集电路对电源噪声比较敏感。使用REG102NA-3.3 线性稳压芯片单独为采集电路供电,能减少电源纹波噪声对采集信号的干扰。该LDO 输出电压的噪声最大仅28 μVrms,输出电压精度高,且其体积小、外围电路简单,非常适合用于便携式设备。电源电路如图3 所示。
图3 电源电路
2.5 LCD显示模块
显示模块负责将心电数据(包括心电波形图、心率信息、状态信息)进行显示。为了追求更好的显示效果,显示模块使用TFT LCD 液晶屏。其具有重量轻、平板化、低功耗、无辐射、显示品质优良等特点[8]。其为16 位真彩显示屏,在每一个像素上都有一个薄膜晶体管(TFT),可避免信号的串扰,故显示的图像具有较高的质量。液晶屏接口使用软排线连接,可提高显示屏插接的灵活性。
2.6 警报模块
当使用者心率异常时,系统会发出警报。警报模块由SS8550 三极管和蜂鸣器组成,当心率异常次数超过设定值时,单片机驱动三极管导通使蜂鸣器上电发出警报,当心率恢复正常后警报消除。
2.7 按键模块
使用按键模块作为系统的输入设备,通过按键完成系统复位、暂停和参数设置等功能。
3 系统软件设计
3.1 单片机部分
单片机软件部分使用C 语言编程,使用KeiluVision5 集成开发环境开发,单片机软件运行流程图如图4 所示。系统上电后首先进行单片机及各个模块的初始化,然后MCU 开始读取采集的心电信号。由于此时的心电信号为原始采集信号,可能存在多种干扰噪声,故设计时针对心电信号的特点,设计了一个FIR(有限长单位冲激响应滤波器)带通滤波器滤除原始采集心电信号中的噪声干扰。使用意法半导体公司提供的DSP 库函数,对输入的原始心电序列进行处理,得到的输出序列保留了心信电号并滤除了大部分干扰噪声,更能反映真实的心电波形,有利于后续的单片机处理和显示。由滤波后的信号可计算得到心率信息。
图4 系统软件流程图
LCD 液晶屏将实时显示心电波形图及心率等信息。同时,单片机将心电数据通过蓝牙模块传输至APP 同步更新心电数据。单片机会对心率进行监控,若心率不在正常范围,系统会通过蜂鸣器发出警报。该警报会在心率恢复正常或用户按下取消按键时消除。
3.1.1 心率的计算
一个完整的心电周期包括一个P 波、一个QRS波群和一个T 波,T 波后可能还有一个U 波[9],如图5所示。其中QRS 波群是整个周期中幅值最高,特征最明显的波段,同时也是临床诊断中使用最多的波形。该设计中单片机通过连续采集5 个周期的数据,计算其均值,将均值乘以一个系数作为R 波检测的阈值,检测每个周期的R 波信号,然后使用相邻两个R 波间的时间间隔TR-R计算瞬时心率。
图5 单个周期心电信号波形图
3.1.2 心电信号的滤波处理
ECG 信号的频率范围一般为0.5~100 Hz,主要集中在0.5~40 Hz 的频率范围内,属于低频信号。由于人体环境的复杂性,人体心电信号存在不稳定性和随机性[10]。且心电信号具有微弱、低频、高阻抗等特性,极容易受到干扰。采集的原始心电信号往往叠加了多种噪声干扰信号,主要有以下3 种:
工频干扰:我国家用电力系统使用交流电为50 Hz,工频干扰噪声的频率主要为50 Hz。供电网络无处不在,人体处在其辐射的电磁波周围,容易受到工频噪声的影响。这种影响具有普遍性,是干扰噪声的主要来源[11]。
肌电干扰:由于人体肌肉细胞活动产生的生理电信号对心电信号的干扰,这种噪声会随着人体肢体运动而变化,其频率较高,一般在5~2 000 Hz之间[12]。
基线漂移:基线漂移主要是由于人体呼吸、肢体活动产生,使心电信号的基准电压发生偏移,这种偏移会使心电信号处于不同的水平上,对后续单片机处理产生影响。基线漂移是一种变化缓慢的低频噪声,其频率一般低于0.5 Hz[13]。
由于STM32F1 系列单片机性能有限,为保证系统的实时性和结果的准确性,结合心电信号频率的特点,设计了一个通带频率为0.5~45 Hz 的FIR(有限长单位冲激响应滤波器)带通滤波器,对原始采集信号进行滤波[14]。N阶FIR 滤波器输入序列与输出序列的关系是一种有限卷积和的形式,其表达式为[15]:
其中,h(i)为滤波器参数,x(n)为输入时间序列,y(n)为输出序列。FIR 滤波器使用Matlab 的Filter Designer 工具设计,采样频率设为200 Hz,阶数为200,窗函数选取海明窗。
通过Matlab 对设计的FIR 滤波器进行仿真验证,将心电信号混入50 Hz 和2 kHz 的噪声干扰,心电信号滤波仿真结果如图6 所示。可见,通过FIR 带通滤波器能有效滤除混在心电信号中的噪声干扰。将通过Matlab 得到的滤波器系数存入程序中,调用意法半导体公司提供的DSP 库函数中的ARM_FIR_F32()函数对原始心电数据进行滤波。
图6 心电信号FIR带通滤波器仿真
3.2 移动客户端(APP)
设计的APP 使用蓝牙调试器软件,在各大应用商店都可下载,这是一款功能强大的蓝牙调试工具。用户可自定义通信数据帧格式。该软件含有可直接使用的丰富的图形化组件。将心电数据添加到数据帧中,APP 端接收到数据后进行解析,将解析后的ECG 数据链接到Y-T 波形图中显示,可在手机上实时显示心电波形。
4 系统测试
4.1 测试环境
为了测试系统心率监测的准确性,使用心电信号模拟仪生成各种心率的标准心电信号接入到系统中,将测量的心率与实际心率进行比较分析。为了测试心电仪实际使用效果,该系统使用三导联的方式,通过电极片将系统与测试者连接,测试者是一位20 岁的男性。实际测试系统对人体ECG 信号的采集、显示及监测效果。
4.2 测试结果及分析
对心电模拟仪产生的心电信号进行测试,结果如表1 所示。
表1 心率监测测试结果
由表1 可知,在测试数据中,系统对心率测量的平均相对误差约为-1.34%。且在人体60~100 Bpm[16]的正常心率范围内,相对误差较小,具有可信度。
系统接入人体实际测试结果如图7 所示,可见液晶屏及APP 上都能清晰显示心电波形和心率信息,且心电波形经滤波处理后曲线较光滑,噪声干扰较小。
图7 系统接入人体测试结果
5 结论
该文设计了一种基于蓝牙无线传输方式,以STM32F103RCT6 单片机为控制器的便携式心电仪,使用模拟前端芯片ADS1292R 对心电信号进行采集,通过一个FIR 带通滤波器对原始采集信号进行滤波处理。经测试证明,该设计能实时在液晶屏和手机APP 显示心电波形图和心率信息,且心率测量相对误差的绝对值小于3%。该设计方案成本较低、操作简捷、携带方便,可以应用于日常医疗保健中,具有一定的推广价值。进一步研究表明,可将心电仪连接互联网,以实现远程心电信号的采集和监控。