心电监护(含12导联功能)
简介
重量级项目来啦!一个包含12导联心电图的心电监护仪!包含大量知识供你学习!该项目应用可以加快急救人员的工作效率,节省空间,利于应对狭窄场地。基于GD32与ADS129x(R)
简介:重量级项目来啦!一个包含12导联心电图的心电监护仪!包含大量知识供你学习!该项目应用可以加快急救人员的工作效率,节省空间,利于应对狭窄场地。基于GD32与ADS129x(R)开源协议
:CC BY-NC-ND 3.0
(未经作者授权,禁止转载)描述
警告/提示
0.代码所有者以及产权,相关事宜警示:
代码内已布置信息与编号水印,盗用代码进行参赛,提交毕设,注册商品等行为均属于侵犯知识产权,违背社会公德,破坏比赛平衡/扰乱毕设秩序的违法违规行为,一经发现,必进行举报,盗用者必遭严惩,产生后果概不负责(想想某些人参赛时在大佬评论区发“求代码”狼狈不堪的样子)
(可能说的有点过分了,但事实就是这个样子,关系到我将来的命运,况且这个项目花费了我近半年,写出一万行代码,放置1447个焊盘,连3310条导线,数千次尝试,除去学校的时间也有四个多月)
1.本项目涉及2kV高压,复刻时请谨慎操作,接触导体时请确认储能电容已放电(除颤器功能已取消)
2.当心热敏打印机机械伤人,禁止无纸打印以免损坏发热芯,发热芯电压为12V(型号QJ-8R-LXS)
3.选用其他规格屏幕时请询问商家获取数据手册,依据VGL VGH VCOM VLED更改驱动电路的稳压二极管参数,以免烧坏屏幕
4.血氧饱和度探头工作原理为红光和红外交替闪烁,低频控制,为保护视力,防止视觉疲劳,尽量不要直视血氧探头的发光二极管
5.运行时禁止触摸屏幕LED驱动部分(红色方框区域 U18附近),以免产生高电压和高温伤人以及损坏屏幕
5.拆解打印头机芯时请使用镊子夹持电源部分放电点位充分放电,以免窜电损坏电平转换及MCU
6.因避免赛事被打扰,对外公开代码对部分低通和高通滤波器参数进行了混淆(其他滤波器参数未混淆),需再次查阅文献,自己探索才可使用。完整代码将在年底下一版公布一同发布。个人复刻使用axf文件即可,axf文件为正常内容
**若因操作不规范导致伤人,项目编辑者不承担任何责任
*机械极限温度:-20~60 ℃(树脂3D) -20~X℃(注塑/其他材料3D X=材料热变形温度≈80 X<100)
*电子极限温度指承受环境极限温度,无关元件发热。
目录:
清晰封面图重现(主页浏览省略了一些细节):
· 实物展示
· 项目说明
· 开源协议
· 相关功能
· 项目进度
· 器件选型
· 设计原理
· 数据处理原理
- 血氧饱和度脉搏波显示处理
- ADS1298读出心电信号解算与实时基线修正
- NIBP无创血压数据处理
- 呼吸波数据处理
- 多导联同步心电图数据解析(R波识别,QRS起点寻找,QRS电轴解算,T波寻找与QTc解算,胸导联R/S分析)
· 软件说明
· 基础操作教学
· 仪器操作教学
· 常见问题&无脑问题大赏
实物展示
心电监护仪总览(空屏)
心电监护仪运行
12导联主界面(空屏)
12导联记录界面(拼装前为一位心衰患者测量时拍摄)
监护仪纸仓
监护仪全配件(大号乐高)
初始化界面
侧面接口
打印运行图(下乡时拍摄,一位频发室早患者)
12导联心电图打印模板(下乡时拍摄 一位冠心病患者 频发心绞痛)
监护仪快照模板 (7心电导联+脉搏波+呼吸波)
项目说明
该项目使用gd32f470ZIT6作为主控芯片,以TI ads129x作为生物电采集前端设计。其他采集系统使用标准结构。
本项目将心电监护仪与十二导联心电图相结合, 功能强大,整机体积小,可使用一张A4纸近距离覆盖外壳任意一面!同时减轻了整机重量。若运用于急救系统,可减轻急救人员负重压力,可让急救员轻松穿过狭窄区域。
本项目将8寸(A4)热敏打印机芯集成,可随时快速打印长度固定为30cm的记录。同时记录纸打印有装订参考线,内置RTC时钟同步时间,便于快速整理数据,提高工作效率。打印模板数据栏简洁易懂,排列整齐,可快速查找重要数据。
本项目提供配套视频操作教程,在文章末尾点击链接即可观看!
同时,在这里,你将会见到:
- 教学式讲解项目
- GD32F470ZIT6标准极限压榨,实现最多功能项目(RAM极限使用,GPIO仅剩2个且无接口功能,ROM写满(-O1优化时),超频最高频)
- 一万行代码,1447个焊盘,3310条导线大制作
- 登上电视台的重磅项目(河南都市频道 2024-7-30 目前只有都市报道在抖音有发部分回放)
- 全站首个12导联心电图采集电路
- 全站首套心电图基线修正与心电图(实时)详细分析标定算法
- 全站首套完整基础患者监护系统
- 全站首套呼吸波分析算法
- 全站首套血压计系统(首套血压计示波法算法)
- 全站首次热敏打印机控制器实际专项应用项目,数组合并,实时计算算法。
- 全站首个应用CLUT低RAM点亮大屏项目
我们不建议您复刻本项目。本项目为个人参赛项目,不得用于其他赛事,毕业设计等。该项目制作难度极大,成本极高,部分器件购买存在困难或者买回来需要额外操作(如打印头配件需从经销商拿货)。外壳设计原因装配较为复杂。该项目复刻时注意事项较多,无医学知识者可能会因为操作不规范带来后果。同时也欢迎善于挑战的医械爱好者复刻!
开源协议
请遵循CC BY-NC-ND 3.0协议
不得以任何形式用于商业用途(很烦那种不劳而获的人)。
未经允许不得转载,转载需标明原作者。
在转载过程中不得进行任何形式的删改
算法,界面设计等来之不易,且看且珍惜,请遵守规则,不要做伸手党啊
代码内已布置信息与编号水印,盗用代码进行参赛,提交毕设,注册商品等行为均属于侵犯知识产权,违背社会公德,破坏比赛平衡/扰乱毕设秩序的违法违规行为,一经发现,必进行举报,盗用者必遭严惩
因避免赛事被打扰,对外公开代码对部分低通和高通滤波器参数进行了混淆(其他滤波器参数未混淆),需再次查阅文献,自己探索才可使用。完整代码将在年底下一版公布一同发布。个人复刻使用axf文件即可,axf文件为正常内容
*该项目中所有引用的资料均摆放至该页原理图最后一页,且已标注来源(有平台水印则不标注,官方数据手册不标注)
项目相关功能
心电监护功能
- 一键10s快照功能
- 一键冻结
- 血压测量
- 实时分析计算
- 实时时钟显示
十二导联心电图功能
- 实时快速心律分析
- 一键冻结
- 一键10s记录
- 自动分析标注
- 一键快速打印
项目进度
2024-1-11 首次创建,原理图设计中(5/12),包含电源,12导模块,NAND存储器,最小系统,屏幕,其余等待完善
2024-1-12 原理图电源部分完善,完成声光报警电路和心电监护ECG不含呼吸(6/12)
2024-1-14 向打印机芯厂家取得联系,获得规格书(QJ-8R-02LX),完成打印电源12V设计,打印机电路(7/12),除颤器电容,导联线等配件选择完成
2024-1-17 血氧模块设计完毕(8/12)
2024-1-18 面板布局草图设计完成
2024-1-19 完成了呼吸模块,血压模块设计(10/12)
2024-1-21 高压干簧继电器过于昂贵,高压电感寻找无果,可控硅控制无相关资源,除颤器设计陷入僵局,产生是否删除除颤功能的疑问
2024-1-25 GD32引脚定义新表总结完毕,为接线提供了便利(顺便批评一下官方文档太扎眼了),控制面板电路设计完毕(11/12),在外网成功找到除颤器电路资料
2024-1-26 开始构建除颤器电路
2024-1-31 除颤器放电电路构建成功(顺便提一下国内查资料太**困难了),严厉批判某平台**的搞垄断
2024-2-3 除颤器升压变压器设计完成(但是漆包线买少了,没绕成awa)
2024-2-4 除颤器充电电路设计完成,所有模块设计完成,开始接入MCU引脚 (11.999/12),在此感谢工科男孙老师
2024-2-4晚上 原理图绘制完成(100%),开始PCB布局(3/6)
2024-2-5 布局完成,开始布线
2024-2-6 PCB设计完成,检查完毕,提交耗材申请
2024-3-4 验证状态:电源,最小系统验证成功,血压系统验证失败(器件选型错误),已保留问题
2024-3-16 验证状态:热敏打印机验证成功,但有一点小问题(12v控制,电压不稳),已保留问题,修正了电量指示灯发光二极管摆放位置
2024-3-17 验证状态:血氧饱和度验证成功(但受二度房室传导阻滞影响PI准确度未知,经常在我身上测出个位数,再涨回去,准备在暑假到医院借用仪器再次验证),在此感谢GD32血氧测量 - 嘉立创EDA开源硬件平台 (oshwhub.com)
2024-4-20 修改:已修改已知问题,美化布线(顺便优化铺铜),已保留更改
验证状态:已找其他人测试PI,PI验证成功,spo2和pi准确度需暑假去医院验证
2024-4-27 验证状态:12导联ECG电路测试成功,电路设计缺陷已更改,已保留更改
2024-5-04 验证状态:监护血压功能测试成功,打印机电路没有更强的电流供应暂缓
2024-5-05 验证状态:NAND存储器测试成功,血压功能准确性验证成功
2024-5-12 验证状态:TLI RGB屏幕刷屏试验成功(了一半),RAM爆了,MCU引脚资源紧缺,不允许添加SDRAM,准备换为F470ZIT6,再爆就换stm32h7(恼)
2024-5-18 验证状态:呼吸功能测试成功,电生理部分完结,剩余触摸,控制面板,声卡,除颤器安排最后
2024-5-26 验证状态:对前辈的代码改进,使用CLUT驱动屏幕全屏成功,不再爆RAM,节省很多脑子
2024-6-01 验证状态:找全所需颜色,再次优化代码,增快刷新速度,12导联基线修正完成
2024-6-08 验证状态:MCU更换为ZIT6,12导联成功显示在屏幕上,RAM尚好
2024-6-10 验证状态:屏幕触摸验证成功,屏幕部分结束,在PCB上对按键面板中断和其他杂项进行添加,准备打板
期间:正在上学和补习班中ing...
2024-7-03 验证状态:改进代码,将热敏打印机速度增加一倍,波形更清晰,达到普遍水平。
2024-7-05 验证状态:将与计算机通讯方式从USB改为串口,对重要信号进行保护,完善电源,提高抗干扰性能,增添螺丝孔,准备设计3D外壳。提交新版PCB
2024-7-14 设计状态:3D外壳设计完成
2024-7-16 验证状态:按键面板验证完成
2024-7-18 实现状态:十二导联心电图操作界面设计完成,实时基础心率检测程序完成,
2024-7-19 实现状态:心电图QRS精准识别程序完成
2024-7-20 实现状态:心电图Q波识别,QRS时限与电轴解算程序完成
2024-7-22 实现状态:心电图QT,QTc,T解算程序完成
2024-7-30 实现状态:十二导联心电图部分正式结束,开启心电监护部分
2024-7-31 实现状态:监护部分成功对接ECG与血氧
2024-8-01 实现状态:监护部分成功对接呼吸测量,监护导联脱落,探头脱落,手指脱落识别完成
2024-8-04 实现状态:通过二次宽限,重调阈值修复了QRS低电压无法识别心搏的问题,监护系统对接实时心电分析成功
2024-8-05 实现状态:通过内存操作修复了胸导联电压解算无故自增的问题,完成呼吸率计算
2024-8-06 实现状态:完成了心电监护系统的交互界面设计
2024-8-08 实现状态:完成了监护仪的冻结,快照功能
2024-8-10 实现状态:血压计完成,所有对于星火计划设计全部完成,圆满结束,准备次日完善资料开源
2024-8-11 实现状态:发现血压计算法异常,已纠正,优化监护仪快照打印模板
器件选型
电池管理:IP5310(英集芯) 具有出色的电源管理和电流路径管理,带有电量指示灯,短路保护等,转化效率高,承载电流3A满足使用
心电图前端:ADS1298(TI)高精度,易操作,数字器件,减小传输路径中干扰
呼吸测量前端:ADS1292R (TI) 成本低,高精度,易操作,数字器件,减小传输路径中干扰(ADS1294R缺货被迫选择)
血压压力传感器:生产商即将倒闭,该器件已停售,请另找选择,就不在这里介绍了(真是意外,万万没想到,来得太突然了)
电压基准源:REF3433IDBVR(TI)95uA低功耗,低温漂,适用恶劣环境,高精度,轻松达到国标。
打印头机芯:JX-8R-LXS(QJ) 目前搜索到成本最低的,标价500到手400左右。打印精度高,功耗较低,操作简单个性化。(需要联系经销商拿货)
设计原理
心电图原理:心电图是怎么来的 - BV1MS4y1s7nM(解算见数据处理部分)
血氧饱和度原理:唐老师讲电赛 - BV1TP411F7Ap(原本是从乐育科技学的,但是注销了,找不到了)
呼吸测量原理:呼吸时胸廓起伏改变体积和密度改变阻抗。(解算见数据处理部分)
血压计原理:唐老师将电赛 血压计 - BV1yM411b75P(解算见数据处理部分)
数据处理原理
1.血氧饱和度脉搏波的获取
图示是我们需要获取的PPG数据(类似),如果我们单纯设置一个阈值来“一刀切”,那么不在范围内的信号就会被斩于马下,呈在屏幕上呈现出满量程的假象。每一个人的脉搏波测量后所反馈所得数值都不一样,另外该波形受到意外影响:如乱动血氧夹子,二度房室传导阻滞,窒息或其他原因的血氧跌落,肢体活动等导致血流受阻。因此,我们必须使用特殊算法来适应。
读取窗:
我们设置显示窗为0~1000范围,要在显示窗内显示完整图形,首先要标记出数值的最值,标记出最大值和最小值就为将图形全部放到显示窗内提供了可能。但,传感器所反馈回来的数值非常大,并不能直接放到显示窗内,所以我们要进行下一步的必要处理。
处理窗:
脉搏波所反馈的信息很多,我们为了保留脉搏波跌落,上升,以及图形更多细节,采用分段取最值的方式,并没有采用中值滤波,现在设置一个周期,每1000周期取一次最值(红线标记相关代码,下同)
然后,我们将数值减去最小值,我们将小于最小值的数字直接略去,但分段取值的缺点因此显现,所以我们在略去的同时告诉取值部分需要重新取值(最大值同理)
这样不是又出现了满量程现象吗?其实,这是对于显示趋势时的必要牺牲,在下一周期会重新被感应,而且一个周期持续只有2秒
处理窗:
然后,我们截取数据,将图形绘制到显示窗上,为了减少超量程现象,我们为最值增加300的宽限
PPG显示窗:
但是,在调光后几秒脉搏波的最值取值不正确,或者患者发生心律失常时脉搏减弱,这个过程中,脉搏数据均未突破最值,但是波形异常小,难以阅读甚至为一条直线不能阅读,此时,我们要检测波形振幅,当振幅低于设定值,发送需要重新取最值请求
PPG显示窗(异常):
这样,当PPG信号出现振幅异常时,程序才会将波形”伸开“,至此,解决了PPG的搜索,以及意外处理
PPG显示窗(运行时):
PPG显示窗(实际运行),可以很清楚看到各个周期的处理:
*PPG与ECG不同,不能代替ECG诊断复杂情况,但PPG也有自己的用武之地如发现房颤,早搏或传导阻滞,过速或过缓,但只起到发现作用,还需要ECG确认和定性
2.ADS1298读出心电信号解算与实时基线修正
首先吐槽一下ADS1298的奇葩输出方式,在0到正满量程时输出值位0 - 0x7FFFFF,但是在负满量程到0时却跟在了0x7FFFFF之后,为0x800000 - 0xFFFFFF
所以,画出的数轴是这样子的,需要进一步处理将两者连到一起,否则当数据卡在正负中间是,解算的数据上上下下无法分析
现在红色为一组,蓝色为一组,按照uint来看,蓝色在前,红色在后,现在我们把蓝色放到后面,剩下的交给基线修正逻辑
为了把蓝色放到后面,为了防止溢出,我们分为三步走。
第一步,判断数据应属于0以上还是0以下
第二步,如果是0以下,让数据减去0x800000,使得负满量程为0
第三步,如果数据是0以上(含0),让数据加上0x8000
这样,读取数据的时候就不会抽风了,可以安心丢给基线修正逻辑
旧的问题解决,新的问题油然而生,在用”12阵法“镇住数据之后,我们发现数据上出现了很多毛刺,非常影响判读和分析,我们需要清理这些毛刺
我们发现,比较突兀的毛刺电压为8mV,那么QRS电压有可能超过8mV吗?正常人肯定不会的,但是情景是多变的,我们开始搜索病态心电图查找线索。我们直接搜索左心室高电压。
搜索结果,在搜索的病案中,QRS电压在3mV左右, 没有超过3.5mV的,保险起见我们将超过6mV的信号定为毛刺信号去除
(最终最高QRS电压为患有心力衰竭左心室扩张的亲戚,R波电压5mV)
现在,我们就和大毛刺say good bye了,小毛刺还需在电源努力
接下来,就该处理喝醉酒一样的基线了,我们可以看到基线一直在上下倾斜,这就是基线漂移现象。
基线漂移如何处理呢?基线漂移的重中之重就是找到基线信号,紧接着将原始数据减去基线信号就可以得到修正后的波形了。
要得到基线信号,我们需要去除QRS波,P波和T波,QRS波是最好去除的,只需要沿用毛刺去除代码,将QRS判定为毛刺即可
在定义的时候,I导联,aVR aVL aVF不做定义,因为这些导联是算法推算的,后算即可(bsxx 即basexx为基线变量)
想象很美好,现实是残酷的,因为高采样率的缘故,QRS有上升时间,得到的基线标本(紫色)和原始数据(红色)是差不多一样的,解决这个僵局很简单,我们使用抽样调查之后再进行接下来的处理
就这样,我们得到了抽样调查后去掉QRS波的样本,虽然采样率被极致压缩,但是这对于解算基线已经绰绰有余了
听说你要直接拿数据减去这个?不!这里面还有未除净的p波和T波,有时候s波也混在其中!
此时,请出我们的中值滤波器。
这样我们在用原始数据减去基线数据就能得到基线和最终波形
测试对象2:
*相关代码存在变更,测试图并不能反映最终结果
然后推算其他肢体导联
3.NIBP无创血压数据处理
无创血压(NIBP,下同)的测量原理为通过给袖带充气超过人体最高血压值一定数值再缓慢放气,读取放气过程中袖带压(或管路压力)的变化经过处理而得出NIBP数值。
当袖带充气超过收缩压之后,血流被阻断,不会对袖带产生作用力,在放气时,袖带压降低到收缩压之后血流重新流通并产生波动,对袖带产生作用力,引起袖带内压力值增高或暂时不变。继续放气低于舒张压之后,有压强差可得,袖带对血管产生压力与所受血管的支持力相等,合力为0,不产生形变,袖带内压强不再受血流冲击变化,压力值正常下降。
图表来自https://www.bilibili.com/video/BV1JV4y167AJ显示的是理想情况下的袖带压力变化
可是,事实上,没有什么事情是理想的,在对*0.1kPa数据前处理之后,读出的波形成了这副模样
全貌:
泄气部分
由于前处理在运算转换为mmHg int值时,在*0.75过程中丢失了波形细节,所以我们在这个失真的波形上意外的读出了(87/45)的奇怪NIBP值
我们将int换为float得到以下图形
想必你们一定不知道所蕴含的信息在哪里,我们帮你指一下:
我们可以找到四个心搏点,但是黄色标记的心搏太浅,单片机可能无法正常识别到,我们认为存在三个有效点
接下来要让让单片机认识着几个心搏点。直接让单片机处理是不可能的,因为前后都有平直线段,而且我们也不能标定阈值,由于数据读取的特殊性,只要读错一个,所得数据会造成极大误差。
根据唐老师将电赛-电子血压计电路指导,使用一个0.3~3.5带通滤波器,但在实际操作中,发现需要使用一个频率为<3Hz的低通滤波器,不断调整数值到最佳频率
亿顿操作猛如虎,经过滤波,提取,再滤波之后得到这样的数据,可以轻松找到五个搏动点,但是仍然存早许多噪声,无法满足单片机的处理需要,单片机还是看不懂。并且左边的大竖线需要在以后汇总时屏蔽掉,可使用阈值法。
通过间隔取值中值滤波,将图形稍做优化,看起来不那么杂乱无章了。就不为难单片机了,实时部分到此结束,采样完毕后统一解算处理。
通过平方削弱杂波成分,就可以通过下降枝阈值法和干扰值排除确定出搏动了。
如图是提取出来的脉搏点(未经过排除),可以看到重博波与过远的无效波
然后经过隔值法与直接法处理并比较有效点个数,多者胜出运用其方案计算
隔值法原理:
现有的数据: N N N N N N N(也是直接法算法)
第一次处理: N N N N N N(然后尝试计算)
第二次处理: N N N N N N(然后尝试计算)
第三次处理: N N N N N N(然后尝试计算)
第四次处理: N N N N N N(然后尝试计算)
第五次处理: N N N N N N(然后尝试计算)
没有第六次啦!不然比较不了间隔值!
排除干扰所得数据如图,可以见到原理数据的值和两个有效数据之间的干扰值被滤去:
第二次试验:
然后先出现对应收缩压,后出现对应舒张压,就完毕啦!
熬夜给你们赶工赶出高血压啦,我们都要快快睡觉哦~
4.呼吸波数据解析
因为实验数据被弄丢了,暂时使用绘画表示
我们首先要读取到呼吸波形,我们使用了0.1 - 4 Hz低通滤波器以及一个中值滤波进行处理,得到初步波形,将其存入数组
为保证分析和快照实时性,我们采取将数组左移,最后追加的方式存储数据
我们使用memmove方法安全且快速的移动数据
这是读取出来的原始呼吸波性,被载入到缓存数组中,但是仍然有很多毛刺,虽然在显示时无影响,但是对于数据处理是致命的
于是我们对其进行了一次带通滤波(0.2 ~ 4 Hz)和宽窗中值滤波让波形变平滑
最后进行下降沿检测即可,在实验时发现总会有1的重复值,我们进行矫正
最后我们把识别呼吸波的个数乘以三即可。因为采样率是10ms一次,传入数组体量为2000,含20s数据,乘以三即可获得60s数据
5.多导联心电图联合解析算法
这是一项艰巨的任务,也是各个数字心电图机开发所面临的挑战。
R波识别
处理第一步,通过Pan-Tompkins算法滤波+平方运算削弱p,T等小波,提高R波斜率。
所得结果1:
所得结果2:
然后就可以通过斜率识别把R波的索引提取出来,对于低电压的情况,识别到无任何波形被检测到降低阈值继续检测。
但是如结果1所示,II导联处理的数据中间存在若干干扰,还需要引入III导联进行双重校验,得出纯净的数据。
然后再将索引根据采样率计算出RR间期以及心率
紧接着计算出QRS数据与QT数据
QRS起点寻找
我们通过以上算法寻找的R波可能超过R波,也可能在Q与R之间,我们需要进一步向左寻找QRS波起点。
对于起点寻找,就需要考虑多种情况了
这些是可能的情况,部分情况可以合并(正向波和负向波的同类型情况可以合并,根据Q波的情况可以合并)
我们总结出这几种情况:
1.无Q波,直接平直
2.有Q波,即存在转折关系
我们针对第一种情况设置低于4单位即为平直(别看很多,其实整个图拉的很大),遇到平直数值停止查找,定义其对应索引值为起点
针对第二种存在掉头情况,斜率符号改变视为掉头。我们设置掉头次数不能超过三次(抵消干扰),并且遇到操作索引的前一个和后一个的差值不能小于3,否则立即停止查找,定义其对应索引值为起点
在寻找起点的同时,定义起点索引前2单位的数值为零电位(要取平均值的),进入下一步,心电轴计算。
QRS电轴计算
电轴也称平均电轴,是心脏电活动的平均方向(向量),是心电图检测指标之一,指心脏除极和复极时额面最大综合向量与水平轴形成的角度。
我们已经记录了QRS波,想要让机器识别心电轴,就必须推导出计算方法
想必学过心电图的医学生们一定对这张图非常熟悉,这张是使用I,III导联代数和进行计算的,但是,这种方法对于机器来说比较复杂,我们采取另一种方式,面积积分法。
部分教授肯定跟你们也多多少少讲过,但是因为人工计算麻烦而被抛弃,但是面积积分法是测量心电轴最标准的方法,也是机器计算最简单的方法。
在这幅图中,显示了振幅法和面积法的差距。面积积分法是把I,III导联相对于等电位线正向和负向面积代数和做图在一个特殊坐标系上,其中-III与+I的夹角度数为60deg。
在计算时有四种情况
- SI <0 SIII<0 电轴不确定
- SI <0 SIII>0 电轴左偏
- SI >0 SIII<0 电轴右偏
- SI >0 SIII>0 电轴不偏
我们选取代表性的两种做出几何推理
作图连接查看:Desmos几何 - 心电轴计算 trdrfbhqzv
红线:SI SIII 黑线:反向延长线 绿线:相交点与电偶中心连线
定义点I为A 点III为B
情况A:电轴不偏
延长P III 交直线I O 与点N
∵PB⊥ OB,∠NOB = ∠ = 60 deg
∴∠ONB = 30 deg
又∵∠NBO= 90 deg
∴NO = 2SIII
∴NA = 2SIII+SI
∵∠NAP = 90 deg,∠ONB = 30 deg
∴PA =
∵∠NAP = 90 deg
∴心电轴=
情况B:电轴左偏
延长BP交支线I与点N
∵∠BON = 60 deg,∠OBN = 90 deg
∴∠BNO = 30 deg
∴在△NBN中 ON = 2SIII
在△PAN中 PA =NA/√3
∵NA = ON - OA = 2SIII-SI
∴PA=
∴在Rt△PAO中,∠PAO = 90 deg
心电轴=
对于另外两种可情况,可以将两个面积和取相反数,根据对顶角相等的数学思维即可转化为以上两种情况,是不是很有趣呢。
所对应的计算是这样子的
T波寻找与QTc计算
T波属于小波成分,斜率较小,我们使用新的滤波器提取出T波,我们使用带通滤波器(8 ~ 22.5Hz),这样p,T的成分就明显了
紧接着把索引内小于100与大于1800的索引编号去除,防止搜索时越界。
然后计算出最大的QT间期(QTc按550ms记,再高就不可能了,就会有尖端扭转室速)
然后跳过QRS波,并向后30s到最长QT间期寻找最大最小值,最大最小值对应T波终点(对于这个滤波器处理后的数据)
然后求平均值算出QT间期
然后根据QTc矫正公式算出QTc,在用QT-QRS算出T波时限
胸导联R/S波电压分析
胸导联R/S波电压RV5+SV1和RV1+SV5是心电图分析时重要的工具。可以分析左室和右室电压的大小,对心肌梗死,高血压心脏病,心室扩张,心室肥大,肺动脉高压的诊断有指导意义。
首先根据QRS起点向左两个单位算出等电位求平均值
然后求与等电位相对值的最大最小值
最后求电压值的平均值,然后取绝对值,将记录的值(单位)转化为电压值(mV)
结束解算代码
软件说明
由于单片机片上资源极度有限,我们放弃了占用资源多的FreeRTOS与LVGL,使用裸机+LCD绘图库完成设计
由于我们的应用设计两个App切换,以及多个界面切换,我们使用了将App或界面返回值代入决策的方式实现切换
这样,只需要在App函数返回一串特征代码,管理器即可切换到指定App或界面
我们使用一个旋转开关来作为App切换,我们通过读取开关,累计标识的方式销毁当前App切换
在读取到App不一致时开启累计标识,达到一定数值后销毁并切换,标识归零。若档位开关回到当前App,标识归零
复杂的系统,机械按键是不允许出半点差错的,我们对于机械按键处理使用中断调用管理器中的按键功能决策函数,根据App和页面标识决策功能。
当然在App或页面被调用时需要设置标识
这样,整个调度系统才能有条不紊的运作下去,长期保持稳定。而且,裸机相比于RTOS大幅提升了系统稳定性,保留更多资源
基础操作教学:
规范操作,初学者请务必看完 (想快速上手请看仪器操作教学)!
监护仪上机:心电监护仪实操示范 - BV1gM411o7HB
心电监护理论:心电监护理论讲解 - BV1bG411S7yD
特别提醒:上机需检查电极片是否有污浊,导电凝胶是否完整,无意外形变。若出现质量问题,立即丢弃并更换新电极片。血氧探头按住灰色头部部分推入,按住灰色头部部分拔出
监护仪下机注意事项:依次摘除血压袖带,血氧饱和度探头,心电监护导联线按扣,心电电极片。检查贴片部位是否有异样。无异样使用75度酒精清洁,存在发炎,过敏等使用炉甘石洗剂清洁。若出现破溃,渗液请立即前往皮肤科处理。
十二导联心电图检查:心电图检查操作 - BV1LG4y1S7PT
十二导联心电图实操视频:心电图实操 - BV1BV411Y7Ki
特别提醒:不要浪费酒精棉球,只要不变干,污渍不严重即可继续使用,可以给棉球翻个面。连接夹子时避开毛发部位,肢体内侧为宜。我们的机器直接点击“十秒”按钮。
仪器操作教学:
将基础操作重点强调,引入经验和本机器操作 ,更快上手机器,初用者必看!
心电监护理论:心电监护仪规范操作理论 - BV1LveAejEWL
监护仪上机操作视频:监护仪上机操作 - BV1wZeHeVEPL
12导联心电图操作视频:12导联心电图操作 - BV1uYebeCEi8
FAQ
Q:你们公开的代码混淆滤波器参数是在搞防御性开源吗?
A:该项目是比赛项目,会被有心之人拿来另外参赛或提交毕设,扰乱比赛秩序或毕业设计,我们防的正是这些小人。另外,我已经告知滤波器参数被混淆,查阅文献,做足探索是可以补充上参数的,也就几个数字,不需要太多的操作,甚至可以超越目前的准确性。真心复刻请选择axf文件烧录,axf文件为正常参数。完整无混淆代码将在年底公布下一版是一同公布。
Q:我们复刻时外壳装不上去是怎么回事?
A:3D打印外壳和焊接会造成公差,若无法对孔,请用小刀切掉阻挡部分。若零部件不能安放进去,查看是否有外部物体阻挡,安装顺序与方式是否正确。
Q:怎么烧录?
A:正常人不会问出这个问题,用SEGGER-J-Flash,网上有你的答案。
Q:为什么颜色显示不正常?
A:目前CLut问题,本人无法解决,断电重新上电再试。
Q:怎么开机?
A:视频里有提及,短按开机,按两下关机
Q:有代码吗?有文件吗?有外壳文件吗?
A:请看附件
Q:能卖整机吗?
A:等我办完实用性专利证书,医疗器械注册证,医疗器械生产许可证,医疗器械经营许可证(医械三证)之后再卖给你。
Q:是炒作吗?/学新闻学学的/什么时候卖课?(抖音无大脑综合症常发问题)
A:完整外壳,代码,编译文件全都在这里。本人亲自编辑数据处理逻辑讲解也在这里,就请不要在这里无脑黑了!得知我们被黑之后全家人都很不开心,问这些东西的人简直丧尽天良,建议精神内科和神经外科联合会诊。
Q:应该选哪种接口的导联线和血氧夹子?
A:五导6针监护导联线,D-Sub十五针十二导联导联线,5针(交流型)血氧夹子,接口见展示图侧面接口
Q:为什么烧录不进去/爆RAM?
Q:请使用GD32F470ZIT6而非ZGT6,Keil也要更改设置
评论