基于STC15的便携心电监护仪
简介
STC15为主控的便携心电监护仪,带有1.8寸LCD显示屏,可实时显示心电波形与测量血氧饱和度 原本是我的课程设计,在此基础上稍微修改了一下,水平有限 : )
简介:STC15为主控的便携心电监护仪,带有1.8寸LCD显示屏,可实时显示心电波形与测量血氧饱和度 原本是我的课程设计,在此基础上稍微修改了一下,水平有限 : )开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
//重新上传了新版本,到做毕设的时间了,好多人来问
//修改时间:2024.10.26
需求分析
心脏病是导致人类死亡的主要原因之一,及时和准确的心电监测对于预防和诊断心脏病至关重要。然而,由于心脏异常的突发与随机性,进行短期监测往往难以捕捉到异常,从而出现误诊。并且,传统的心电监护设备通常较为昂贵且不便携,无法满足人们日常生活中的监测需求。
因此,开发一款小型、便携的心电监护仪,可以让用户随时随地进行心电监测,具有重要的现实意义。
功能介绍
- 显示实时心电波形并计算心率,还可以测血氧饱和度
- 可切换下位机屏幕显示或蓝牙发送波形数据至上位机
- 心率过速、过慢警告
心电信号简介
心电信号的频谱范围主要集中在0.05~100Hz,电压约为零点几毫伏,具有微弱、低频、易被干扰等特性,常见干扰有以下几种:
1.工频干扰。由供电网络(通常是50Hz)引起的干扰,是心电信号的主要干扰源
2.基线漂移。由于呼吸、运动引起的心电基线变化,幅值的变化可达到15%,频率低。
3.肌电干扰。肌肉活动伴随有电活动。其频率范围为20 ~ 5000Hz。
心电处理电路介绍
- 第一级前置放大器,增益为7,包含右腿驱动电路,用于消除共模干扰
- 第二级107HZ低通滤波,消除高频信号
- 第三级双T有源50HZ陷波器,滤除工频干扰
- 第四级0.1HZ高通滤波,改善基线漂移,放大50倍
- 第五级放大器放大信号5倍
-
整体对信号放大了1250倍
主控
- P54脚低电平单片机复位,用于烧录软件
- 采用3V3供电
供电
- USB与锂电池供电
- USB接口选择了广泛使用的TYPE-C
- 电池为850毫安3.7V锂电池
- 插入USB线后可自动切换为USB供电
- 同时为锂电池充电
- 电池充电管理使用TP4056芯片
软件设计
心率计算
Heart Rate (bpm)= 60 / 平均R波间隔(秒)
R波检测方法 – 阈值法
1.遍历数据:遍历心电数据数组中的每一个数据点。
2.峰值条件:对于每一个数据点,检查它是否大于左右相邻的数据点,并且是否超过预设的阈值。
3.记录峰值:如果该数据点满足上述条件,则将其位置记录下来,表示检测到了一个R波峰值。
-
- 优点:简单、速度快
- 缺点:不精确,且阈值需要人工观察得出,如出现基线漂移或噪声毛刺就会产生很大影响
绘制波形实现
- 将电压值计算缩放为屏幕像素Y轴的坐标值,X轴作为时间轴
- 一个ADC值画一个像素点,相邻两点间画直线连接,最终效果就是实时电压波形滚动刷新
血氧饱和度读取
1.初始化:初始化 MAX30102 传感器,包括配置模式、采样率、LED电流等参数。
2.数据采集:通过 I2C 从传感器的FIFO Data寄存器中读取红光和红外光的光强数据。每三个字节一个数据,需要经过合并处理,合并后为一个长整型
3.计算:利用红光和红外光两个数据通过简化公式计算血氧饱和度
血氧简化公式
-
- R = red / ir
- spO2 = 120 - 25 * R;
血氧饱和度准确的计算方法需要获得光强的直流和交流分量,计算量大且需存储大量数据
简化公式的结果会不太准确
上位机
基于LabView制作,只有简单的波形绘制功能
演示
视频链接:
https://www.bilibili.com/video/BV1mJ8qeSEuj/?vd_source=51dc43e08b25c112cfd71690f421341d
评论