项目简介
心血管疾病已成为危害中国人生命安全的第一大杀手,目前上面上成熟的心电监护仪大多价格较贵,难以普及。因此,我们希望开发一台足够便宜,足够便携,足够好用的心电监护自动分析装置,有助于帮助大家随时监控心血管健康。
该项目是一个三导联ECG心电图检测分析装置,硬件部分为USB心电信号采集卡,采集心电信号并处理,最后上传至计算机,在计算机中采用python开发上位机并进行处理,显示出心电图,频谱等,并提供心颤检测各种分析功能。该项目是我们实验室研发任务的成员自行研发的衍生产品,其旨在复杂环境下稳定快速可靠地识别房颤室颤,并且提供一个十分经济的心电监护方式,为大项目的整体工作打下基础,后续将继续进行研发。
项目详情
本项目硬件部分采用兆易创新GD32F130F8P6作为主控,提供采集数据上传的功能。利用运放分别搭建各种放大/滤波陷波电路,将三导联的的心电信号提取出来并且滤除常见干扰。采用USB转串口芯片解决MCU串口和上位机的通讯问题。以下是硬件结构框图:
在上位机端,我们用python/C++混合编程搭建了心电记录/显示/分析一体化的上位机,提供了心率检测、频谱分析、房颤室颤等分析,并邀请知名专业医生指导验证(实验室合作关系)。以下是上位机软件设计的框架:
项目面临的挑战及解决的问题
我们的初始方案是采用AD8232芯片进行心电信号的提取,但是经过测试发现,无论是我们的测试电路还是买到的DEMO板,只能在无干扰状态下保持良好工作(关闭房间所有交流用电器),抗干扰性能都极差。下图是一张典型的波形,这是我们在关闭所有电器,只开一只台灯的情况下的输出波形(测试淘宝买的AD8232红色模块):
上图可以看到,其存在很高幅度的50Hz工频噪声,我们分析,这是由于其右腿反馈的驱动能力不足,以及内部设计原因所致。 当然如果是纯粹的50Hz干扰,我们可以通过后级滤波来实现,查阅datasheet和实践发现,由于AD8232内部的设计原因,在50Hz干扰达到一定程度,则会引发振荡:
考虑到我们的项目日后需要在更加复杂的环境下工作,比如应用到电除颤环境下,需要很高的抗干扰性能和灵活性保证,我们选择了采用分立运放自行搭建小信号提取电路:
经测试,抗干扰性能大大强于AD8232。我们测试的条件是空调,电磁炉等较大功率的设备全开,图下是示波器保存的测试报告:
几乎完全滤除了50Hz的工频干扰,只留下易于处理(与工作频率相差过大,因此无需处理)的100KHz开关噪声。
在心电分析方面,如何进行室颤房颤的分析成为了软件的重点问题,我们研发了“频谱反馈闭环式近似熵心颤检测算法”,用于解决房颤的识别问题,同时大大减少了导联接触不良或者强干扰状态下的误判问题。同时也开发了一些算法,用于识别心率等多项功能。以下是频谱反馈式近似熵心颤识别算法大致框架:
在实际程序编写中,我们遇到了程序计算量过大的问题:
第一次计算,PC花费了3个小时才计算出数据。
第二次,我们根据实际需要优化了计算量,计算时间缩减到了12分钟。
第三次,我们优化了python程序的运行效率,计算时间进一步缩减到了1.2S。
然而,这仍然无法满足我们的要求,因为程序不但需要实时性,而且得具备移植到嵌入式设备的能力,显然此路不通。 我们将算法移植到了C/C++上,留出对外接口,编译成立动态链接库,在windows上是dll,在linux/macOS上是so。 python在需要计算的时候调用动态链接库,达到加速的目的,实测计算速度提升了150倍。
项目硬件、软件部分涉及到的关键点
在我们需要克服各种环境下的50Hz干扰问题,在硬件上,我们做了四阶双T有源陷波电路,同时增强了右腿驱动部分的信号,增强了设备的抗干扰能力(与网上售卖的AD8232模块对比)。在软件上,我们采用了频谱动态闭环反馈的方式,大大降低的心颤误判的概率。我们采用计算信息熵的方式来分析心电信号的有序程度,在房颤和室颤时,近似熵可高达0.6-0.9,而在正常状态下,近似熵仅仅为0.1-0.4之间,在无干扰状态下,可以很清晰的识别出心颤,在干扰严重的情况下,熵会大大增加,频谱的动态反馈则可以解决这个问题。 项目软件分为三个部分:
1、GD32下位机固件软件,主要功能是采集调理后的心电信号,进行滤波等初步处理,并且实时上传。
2、python编写的上位机软件,负责图形界面以及时间复杂度较小的算法,python的跨平台特性使得软件可以轻易移植到各种平台,比如树莓派,香橙派,工控机,手机等。可移植性使得二次开发变得极为容易,举个例子,只需要购买一块linux最小系统板,配上小屏幕就可以将本项目轻松改成手持式心电监护仪,而成本依然远低于世面产品。~~~~
3、C/C++编写编译的动态链接库,该部分主要负责熵分析计算等耗时较大的算法,熵算法在python中计算往往要耗时数秒,采用C/C++编写可降低至毫秒级,保证的上位机程序的实时性和性能。python调用C/C++动态链接库以实现分析房颤室颤。移植到不同架构CPU时需要重新编译动态链接库。
项目材料清单
项目图片
项目演示视频
l “GD32杯”第五届立创电子设计大赛:《USB便携式ECG心电图监护自动分析仪》项目-功能演示
开源文档
请下载附件查看详情
附件: