APP下载

基于STM32 单片机的心电监测系统

2020-08-14李昊霖徐凌桦

科技视界 2020年22期
关键词:缓冲区心电电信号

李昊霖 徐凌桦

0 概述

科学技术发展水平日新月异,医疗水平逐渐提高,人们越来越关注自己和家人的健康状况。在众多生理信号中,心电信号的监测一直都是各国研究者们深入研究和学习的重点,由于传统的ECG 仪器相对较大并且依赖于PC 和显示器显示器,而从国内外心电图仪的发展趋势来看,新型心电监测设备越来越便携化,智能化,远程化。因此,便携性和易操作是目前家用心电监护仪设备亟待解决的问题[1]。在这样的背景下,本文设计了一款使用STM32F103ZET6 作为主控芯片,AD8232 芯片作为前端采样,ADC 配合DMA快速采集传输心电信号,再对所采集心电信号进行处理,最后根据使用者需求选择显示方式,从而实现一款轻便小巧、操作简单、低成本的心电监测设备的设计。

1 系统结构

本文设计的心电监测系统由STM32F103ZET6 最小系统、AD8232 模拟前端、OLED显示模块、HC-05 蓝牙模块组成,医用AgCl 采样电极通过单导联的方式将感知的心电信号传输到AD8232 模块,进行初步信号调理及放大后,由STM32 单片机的ADC 采集并进行数据处理,最后将采集的心电信息通过OLED 模块或者上位机显示出来。

2 硬件设计

2.1 主控芯片

选用STM32F03ZET6 芯片作为主控单元,该芯片采用的CPU 是 ARM 的 32 位 Cortex-M3,拥有片上 128K 的闪存,还有20K 的RAM,同时内置了3 个12 位精度的片上AD/DA 转换器以及串行端口外设。并支持各种外设,如定时器,ADC,SPI,USB,IIC 和UART。使得它在简单的电路上就能执行信号采集和数据滤波。

2.2 AD8232 模块

综合考虑性能和成本性能方面,选择AD8232 作为本次设计的模拟前端。AD8232 采用双极点高通滤波器来消除运动伪像和电极半电池电位[2]。AD8232 模块的默认的外围电路连接配置为0.5Hz 的双极点高通滤波器,以及双极性40Hz 低通滤波器。同时通过驱动第三电极来实现最佳共模抑制。除了40Hz 滤波功能外,运算放大器的增益也配置为11,因此系统总增益为1 100[3]。选择AD8232 的原因是因为单芯片模拟信号链前端芯片大大方便了系统设计。

2.3 OLED 模块

显示屏的选择方面主要考虑价格,因为各种屏幕都能实现功能,所以根据经费情况,选择性价比最高的0.96 的128*64 OLED 显示屏模块作为心电监测的屏幕。

2.4 HC-05 蓝牙模块

在与主机的数据通信中,选择最经典的HC-05 蓝牙模块,数据通过串口传输到主机。在本设计中,它可以通过TX 和RX接口连接到STM32F103ZET6。该模块非常灵活,使用方便。

2.5 按键及LED 电路

为了实现更好的人机交互,本设计通过三个按钮来实现硬件侧的模式选择和相关的功能切换。物理按钮可用于使操作方便可靠,用户可以通过简单地显示和指导了解如何操作硬件。按键1 选择本地模式,按钮2 选择上位机模式。在本地模式中,按钮3 用于在本地模式下显示心电图之后显示心率。

3 软件设计

3.1 系统软件算法设计

系统软件流程设计为上电后,需要通过按钮选择系统的工作模式,有上位机模式和本地模式两种工作模式,本地模式下又可选择显示心电图或者显示心率。选择本地模式后,系统可以与上位机分开工作,实现心率波形的测量显示和心率计算。在本地模式下,测量的开始和结束以及测量后的显示数据可以分别由两个按钮控制;当选择上位机模式时,系统通过蓝牙将所有采集的数据传输到安卓主机,上位机负责数据处理。

3.2 ADC 及 DMA 算法配置

本次设计应用ADC 的定时器触发ADC 转换功能,再通过DMA 传输数据。通过设置好的时间间隔触发ADC 转换,就能够做到ADC 的定时采样转换的功能,之后可以在程序的死循环中不断检测DMA 的转换完成状态标志位,转换完成之后的数据才可被读取。DMA 配置为双缓冲机制,类似于乒乓操作模式,建立2 个缓冲区缓冲区。当缓冲区1 存满时,接收的数据自动传送到缓冲区2,并对缓冲区1 中的数据进行滤波处理,因此交替采样滤波可以大大提高系统的工作速度,同时也保证数据接收不受暂停影响,非常高效实用。

3.3 数字滤波器设计

本设计的工频陷波和高通滤波均采用IIR 滤波器来设计。IIR 滤波器的设计借助MATLAB 的FDATOOL 工具包可以直接生成相关参数。再通过工具箱提供的将其参数翻译成C 语言形式的功能,复制到STM32 的程序中可直接应用该滤波器。

4 结果测试与改进

在分别完成心电采集系统的硬件及软件部分后,得到了下图1 的显示效果,存在较大误差,在综合分析了多种可能情况后出的结论为:(1)测试电路搭建太简陋使用了较多杜邦线(2)AD8232 模块与导联线接触不良。在检查了原因后我对测试电路做出了改进。在通过硬件改进以及数字滤波器的使用后,得到下图2 心电信号显示效果,可以看到显示效果有了明显的改善。

图1 改进前

图2 改进后

5 结束语

本文设计了一款基于STM32 单片机的心电监测系统,可以实现心电信号的监测,以及通过本地OLED 屏幕显示或者将数据发送到上位机来显示心电图及心率。显示效果良好,可以很好地完成心电信号的监测,实现心电监测设备的小型化、便携化、远程化。

猜你喜欢

缓冲区心电电信号
基于联合聚类分析的单通道腹部心电信号的胎心率提取
心电向量图诊断高血压病左心室异常的临床应用
基于非接触式电极的心电监测系统
穿戴式心电:发展历程、核心技术与未来挑战
基于Code Composer Studio3.3完成对心电信号的去噪
更正启事
嫩江重要省界缓冲区水质单因子评价法研究
基于随机森林的航天器电信号多分类识别方法
关键链技术缓冲区的确定方法研究
基于生物电信号的驾驶疲劳检测方法