随着社会的发展,人们的医疗保健意识越来越强,所以医生的培训也就成为非常重要的环节。心电除颤技术作为医生培训的一个主要方面,若操作规范,动作熟练,往往在紧急关头可以救人于危难之间,在培训的时候,如果能够真实地模拟急救除颤的场景,将会起到良好的学习效果。因此,在急救、有创性临床操作训练上,医学模拟教学日益显示出其成本低、重复性高、教学效率高以及符合医学伦理要求等优势。
除颤模拟发生系统可以任意选择34种状态(包括成人和儿童两大类)时也可以连接医用监护仪,使除颤模拟更加逼真。学员可以进行不同能量的除颤练习,同时这也便于老师检验学员的学习效果。
该系统是根据心电图的有关原理以及监护仪的信号合成原理研制的,严格按照医学的相关规定,产生的波形达到医学教学的目的。在相关病态心电图的关键点处达到比较逼真的效果,当系统接收到高压除颤信号以后,根据系统的预设置,进行相应的波形变换。系统可以用于医疗培训机构的培训工具,使学员快速掌握心电除颤的方法。该系统与急救模拟人、监护仪配合使用,具有广阔的市场前景。
本文介绍的心电除颤模拟发生系统是以ARM9为控制核心,充分利用ARM9丰富的I/O资源和强大的处理功能。它采用嵌入式的开发方案,并综合考虑系统的通用性和使用性,系统输出信号的幅度为0~5 mV可以连续输出室性、室上性早搏型号等,还可以产生周期为1 s,脉宽为100 ms,幅度为1 mV的方波。便于对监护仪进行校准,信号均采用三导联的同步信号输出。
1 系统结构和设计方案
系统主要包括ARM9中央处理单元、高压除颤信号采集模块、D/A转换模块,与监护仪信号匹配模块以及心电波形仿真和数据的提取,应用程序的设计等几个部分。本系统采用ARM9嵌入式开发平台,以下是ARM9处理器的主要结构及其特点。
(1)32 b定点RISC处理器,改进型ARM/Thumb代码交织,增强性乘法器设计,支持实时(real-TIme)调试;
(2)片内指令和数据SRAM,而且指令和数据的存储器容量可调;
(3)片内指令和数据高速缓冲器(Cache)容量从4 KB~l MB:
(4)设置保护单元(Protoction Unit),非常适合嵌入式应用中对存储器进行分段和保护;
(5)采用AMBA AHB总线接口,为外设提供统一的地址和数据总线;
(6)支持外部协处理器,指令和数据总线有简单的握手信令支持;
(7)支持标准基本逻辑单元扫描测试方法;
(8)支持BIST(Built-in-self-test);
(9)支持嵌入式跟踪宏单元,支持实时跟踪指令和数据。
心电除颤模拟发生系统总体设计方案,如图1所示。
2 系统硬件部分设计
该部分主要分为ARM9硬件平台、D/A转换、滤波电路、高压除颤信号的采集,其系统硬件连接图如图2所示。系统在ARM9的控制下,由D/A转换把波形数据转换为模拟量进行输出。当接收到高压采集信号后,处理器就会转换输出另一种心电波形图。
2.1 D/A转换和电阻衰减网络
该部分是系统的核心,为了保证系统的稳定和ECG信号的要求,D/A转换芯片采用8位并行的DAC0832芯片,由12 V单电源供电,每个DAC有各自独立的基准输入,对ARM9提供的数据进行变换,输出部分采用4阶巴特沃斯滤波,输出的波形经衰减后得到所要求的心电信号,经有源滤波后输出波形的峰值可达到10 V,通过电阻分压网络得到0~5 mV的电压输出范围。考虑到要采用三路D/A,如果每一路独占8个I/O端口,再加上若干控制端口,处理器提供的I/O端口数远不能满足要求,所以计划采用共用数据端口,外接I/O口片选的方式来实现,这样可以节约16个I/O口,也满足了信号输出同步性的要求。
2.2 高压信号采集电路设计
该部分采集除颤器上的高压放电信号,由于高压除颤信号具有的放电电流具有双向性,且放电时间只有4 ms,瞬态电压可达到3 000 V,所以在安全性能上要充分考虑。该部分电路图如图3所示。
电路中采用大功率电阻和瞬态抑制二极管对高压放电信号进行预处理,将高压信号降低到比较小的范围,通过整流电路把电流变为单向流动,然后通过光耦隔离输入到ARM9的I/O口中,起到保护处理器的作用。
3 软件设计
系统的硬件为基本功能和扩展功能的实现奠定了牢固的基础,软件系统的设计就是要充分利用硬件平台的资源,实现软件操作的有序运行。
软件开发工作涉及到以下两个方面:接口驱动程序的修改和完善;应用层软件的开发。应用层的程序全部用C++开发完成的。
图4是整个系统的软件模块结构图。
图4 整个系统的软件模块结构图
3.1 D/A驱动程序和高压信号采集驱动部分
设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作,以往在开发应用程序时都有一个main函数作为程序的入口点,而在驱动开发时却没有main函数,模块在调用insmod命令时被加载,此时的入口点是init module函数,通常在该函数中完成没备的注册。同样,模块在调用rmmod函数时被卸载,此时的入口点是cleanup module函数,在该函数中完成设备的卸载。在设备完成注册加载之后,用户的应用程序就可以对该设备进行一定的操作,如read,write等,而驱动程序就是用于实现这些操作,在用户应用程序调用相应入口函数时执行相关的操作,init roodule入口点函数则不需要完成其他如read,write之类功能。
驱动程序主要函数如下:
3.2 系统应用程序设计与实现
该系统的应用程序是基于Qt/Embedded设计的,目前使用的嵌入式GUI系统存在Microwindows,MiniGUI,Qt/Embedded,Qt/Embedded延续了Qt的强大功能,可以运行在多种不同的处理器上部署的嵌入式Linux操作系统。Qt/Embedded提供了信号和插槽的编程机制,该部分采用的Qt是一个创建GUI程序的C++类库,编写Qt应用程序的主要工作是基于已有的Qt类编写用户类。该部分主要分为波形界面的实现和用户按键控制的实现,波形显示采用Qt的函数类库Qpainter,由于波形界面显示两路心电波形,会产生延迟效果,所以引入了多线程机制协调,Qt支持多线程,有独立于平台的线程类,线程安全方式的时间传递和一个全局Qt库互斥量允许不同的线程调用Qt方法。
4 结语
本系统设计采用三星2440嵌入式处理器作为核心搭建了硬件平台,并采用嵌入式Linux操作系统并结合外围的D/A转换部分、与监护仪匹配网络、高压信号采集部分、应用程序控制部分等实现了心电除颤模拟发生系统的设计。该系统可以很好地模拟医学除颤的过程,并可以与医用监护仪相连接,输出符合医学标准的34种常见异常心率波形,由于系统使用嵌入式实时多任务操作系统,因此该设计具有很高的实时性、稳定性和可靠性。