基于嵌入式Linux的心电监护系统的研究

2016-11-16 15:19喻晓夏澎
电脑知识与技术 2016年25期
关键词:心电监护

喻晓+夏澎

摘要:便携式心电监护设备是现代化医院、社区、家庭不可缺少的医疗设备。在分析总结传统心电监护原理及方法的基础上,提出了一种基于嵌入式Linux的心电监护系统的实现方案。所研究系统具有体积小、可携带、成本低、监护准确、效率高等特点。经实验验证,该系统基本能够实现直观、可靠、准确、有效的心电监护,保证了监护数据的完整性。

关键词:嵌入式Linux;心电监护;Qtopia Core

中图分类号:TP311 文献标识码:A 章编号:1009-3044(2016)25-0220-04

1 背景

心电监护设备能够准确、实时地监测病人的心电参数,方便医生及时和准确的诊断,因此在医疗设备中占有很重要的地位。传统的心电监护设备尽管可以对危重病人进行长期持续的心电监护,但由于其本身结构复杂,不方便移动,使得多数非住院患者,特别是早期症状轻微的患者不能得到及时准确的诊断,从而延误诊断和治疗的机会[1]。所以,开发智能化、数字化、可携带的心电监护设备有着很强的现实意义和广阔的应用前景。

目前国内外心电监护仪器中,大多数使用电脑配备心电采集卡的方式或单片机配备心电采集电路的方式。不方便携带的设备、低效率的保养、测量准确度不够等,都是普遍存在的问题[2]。针对这些问题,本文提出并设计了一个基于嵌入式Linux平台的心电监护系统,能够实时、多任务并准确地进行心电监护。该系统利用嵌入式Linux系统和心电监护相结合,有效减少设备本身体积,更加便于携带的同时还有效地实现了心电监护的功能,提高检测结果的准确性。

2 系统总体方案设计

心电监护系统主要需实现心电数据的实时显示,报警等功能。本文设计的嵌入式心电监护系统原理框图如图1所示。主要有六大功能模块,分别是嵌入式平台控制模块、心电采集模块、心电数据显示模块,系统输入模块、QRS波检测算法模块和心电数据打印模块。

本系统的工作原理为:通过心电电极从人体体表采集心电信号,经心电放大器,电平抬升电路将数据发送到ARM内核的嵌入式核心控制平台,由ARM内置的 A/D 转换器进行模数转换然后,由控制平台将数据进行数字滤波、QRS波群检测、心率计算及心律失常分析,最后在LCD液晶屏上显示波形和分析结果,并打印测试结果或者通过串口网口电路将数据发送。

整个嵌入式心电监护系统由硬件和软件两部分组成。硬件部分为嵌入式处理器、心电采集模块、心电显示模块和心电数据打印模块的设计。软件部分主要为移植操作系统、设计设备驱动程序、开发心电信号采集处理程序以及设计GUI界面等。

3 系统硬件设计

根据总体方案设计,图2为整个心电监护系统的硬件结构图。其中S3C2410X 微处理器、存储器(SDRAM、NAND FLASH、NOR FLASH),网口、串口,USB接口、电源复位电路、JTAG接口均由SBC2410开发平台提供。

由于Linux系统可以通过内核配置USB驱动,因此系统采用可以即插即用的USB接口鼠标和键盘作为输入工具,方便操作。

系统采用5V电源为核心板供电,12V电源给液晶屏供电。这些电压由单独的电源模块提供。

3.1 嵌入式处理器

嵌入式处理器通常把传统计算机中许多由板卡完成的任务集成在芯片内部,使得嵌入式系统设计有利于小型化,并同时具备高效率、高可靠性等特征。在目前市场上流通的一千多种嵌入式处理器芯片中,使用最广泛的当属ARM系列芯片。ARM公司是微处理器行业的一家知名企业,其设计生产的ARM处理器具有高性能、低耗能以及稳定性等众多优点[3],因此是当今设计嵌入式系统的首选。

本系统是借助广州友善之臂科技有限公司的 S3C2410开发平台进行开发。它是一款基于ARM9处理器S3C2410芯片的嵌入式开发平台。该平台引出了CPU的大部分信号引脚,同时较完整地集成了各种设备接口,便于用户二次开发[4]。

3.2 心电采集模块

根据设计要求和心电信号的特点,本系统设计了心电数据采集模块,其结构如图3所示。其原理为:由专用的心电电极采集心电信号后将其送入前置放大器初步放大后,送入带通滤波器进行干扰信号的过滤,滤波后的信号通过主放大器再次进行放大后,利用50HZ和35HZ两种陷波器分别进行工频和肌电干扰信号的过滤,最后将心电信号送入S3C2410里的A/D转换器,进行高精度的A/D转换。

3.3 心电显示模块

目前便携式设备最常使用的显示设备一般为LCD液晶显示器,其优点在于显示精度高同时还节能省电。本系统采用一款日本三菱公司生产的型号为AA084VC03的TFT-LCD彩色液晶屏作为心电显示模块,屏幕大小为640×480。

3.4心电数据打印模块

目前微型打印机一般有三种类型:针式、笔式和热式。其中,热式打印机可以说是物美价廉,在保证打印质量的同时,还具备低耗节能、结构轻巧等优点,因此被认为是最适合作为嵌入式系统的打印设备[5]。

本模块使用行式热敏打印机LTP1245,其打印机控制板的硬件总体框图如图4所示。

在本设计中,热敏打印电路与SBC2410开发平台通过串口方式进行连接通讯,打印机的通讯协议和汉字字库已固化在打印机电路之中,通过与ARM9控制平台交互调试,该模块已达到设计目的,其打印速度可达50毫米/秒,打印效果良好。

4 系统软件设计

本心电监护系统软件部分的设计主要工作为:移植操作系统;设计设备驱动程序;开发心电数据采集、显示和心电波形检测算法等应用程序。软件层次如图5所示:

4.1 软件开发平台搭建

操作系统负责整个系统的管理,进程调度等,整个系统软件都建立在操作系统之上。因此,需要选择适合应用的操作系统。

与当前市场上其他的嵌入式操作系统如pSOS或winCE相比,Linux操作系统最大的优点就是源代码开放及免费,而且还具备良好的可移植性、完善的网络功能以及功能强大的编译器等。因此,本系统选用嵌入式Linux操作系统作为软件开发平台。

4.2 驱动程序设计

驱动程序是操作系统内核和硬件设备之间的接口。其作为系统的底层,对上层应用程序的开发起到了基础性的作用。

4.2.1 LCD液晶屏模块驱动

S3C2410的LCD控制器用于传输视频数据和产生必要的控制信号。控制信号有:VF-RAME、VLINE、VCLK、VM等,视频数据端口是VD[23:0]。LCD控制器由REGBANK、LCDCDMA、VIDPRCS和LPC3600组成[6]。

本系统中,LCD驱动程序的主要编写步骤为:

1)定义RGB数据结构,通过RGB值的变化确定显示颜色;

2)设置LCD寄存器;

3)通过静态编译配置内核,生成支持系统硬件的新内核。

4.2.2 模数转换ADC驱动

本系统使用A/D转换器来转换采集到的模拟心电信号,所以在编写应用程序之前必须首先编写和加载ADC驱动程序。

A/D转换驱动程序的工作流程如图6所示,主要包括A/D转换器的打开、进行转换并读取结果/关闭转换器等。

在本系统的开发过程中,A/D驱动程序采用动态编译进内核。首先用arm-linux-gcc对A/D转换驱动程序进行交叉编译,得到.ko文件,用insmod 命令将其加载到内核里去,这样系统就支持A/D采集了。

4.2.3 USB驱动

本系统在进行更新以及维护时,通常是通过USB接口进行传输程序的,因此也必须进行USB驱动的开发。USB设备的驱动程序包括主机端设备驱动程序、主机控制器驱动程序和设备驱动程序[7]。

在本系统中,USB驱动采取静态编译进内核。为了能够使系统挂载上U盘,还必须进行U盘支持的配置,同样在内核配置界面里配置。因为要U盘用到了SCSI 命令,所以先增加SCSI 支持。

本系统因为还要用到QT GUI 界面,为了能够支持USB鼠标,还得进行USB鼠标配置。配置如下:

Device Drivers --->

[*] HID Devices --->

USB HID Boot Protocol drivers --->

<*>USB HIDBP Keyboard (simple Boot) support

<*> USB HIDBP Mouse (simple Boot) support

保存→退出

将内核烧入目标板,重启系统,重启后的系统就有USB驱动,并且支持U盘挂载和USB鼠标了,这样,通过Qt设计出来的界面就可以用鼠标点击了。

4.2.4 SD卡驱动

根据本系统的设计需要,提供了SD卡存储心电数据,因此,要进行SD卡驱动程序的设计。S3C2410芯片中已经集成了一个SD卡主机控制器,用于访问SD卡。Linux系统本身并不支持S3C2410的SD控制器,必须往内核中移植驱动程序 [8]。

在本系统设计过程中,移植SD控制器驱动程序分为3个步骤:打补丁、增加SD平台设备、修改主机控制器驱动程序以指定原理图中的中断。

1)给内核打补丁

内核中要增加对S3C2410的MMC/SD/SDIO控制器的支持,需要添加相应的程序代码。从官方网站(http://svn.openmoko.org/branches/src/target/kernel/2.6.14.x/patches)下载补丁包,然后修改/drivers/mmc/host /Kconfig文件用以向内核增加驱动编译选项,最后再修改同目录下的Makefile文件添加编译文件。

2)增加SD平台设备

由于内核本身不支持SD控制器,因此需要在s3cmci.c文件中添加相应的代码以支持SD平台设备,与其他大多数硬件驱动一样,首先要初始化设备,向内核注册该设备。在s3cmci.c中有个s3cmci_init()函数,它是该文件的入口函数,用来向内核注册添加不同平台驱动。在此函数向内核注册的同时会调用s3cmci_driver_2410结构函数,这个结构中的成员是SD卡驱动的核心函数,包含了许多文件操作接口函数,内核便是通过它来访问这些操作接口函数的,其中包含了设备探测、设备的注销和挂起等函数。

3) 指定中断资源

根据开发板的硬件原理,nCD中断信号线与S3C2410处理器的GPG8引脚相连,所以在drivers/mmc/host/s3cmci.c文件中,只要在s3cmci_def_pdata结构体中修改gpio_detect成员即可。

经过修改后,就可以进行编译了。SD卡驱动是通过静态编译进内核的,因此在内核配置界面进行配置后重启系统,系统就能够支持SD卡挂载了。

4.2.5 网卡驱动

在本系统的开发过程中,应用程序是通过网络cifs拷贝到目标板上运行的,并且本系统在将来的扩展功能中,将要增加远程网络心电监护功能,因此,必须为本系统配备网卡驱动程序。

本系统开发板采用了一款针对嵌入式应用的低成本局域以太网控制器CS8900A。该网卡驱动的开发,现在都是采用直接移植的方法。从网上下载cs8900.c和cs8900.h文件,把它们放到/drivers/net/arm/,接着只要对一些文件做一些修改,进行移植就可以了。

4.3 GUI应用软件设计

Qtopia Core是挪威Trolltech公司发布的一款基于嵌入式Linux的面向单一应用的嵌入式产品的Qt开发平台,它的前身是Qt/Embedded(常简称为Qt/E)。Qt是一种C++跨平台开发工具,具有一次编程,多平台运行的优点[9]。因此,本文采用GUI开发软件Qtopia Core设计了操作简单、人机友好的心电监护系统界面,该人机交互界面可实现心电数据的采集、处理、显示、分析、存储以及传输等功能。

根据对便携式心电监护系统的需求分析,可以将该系统分为五个功能模块,其结构图如图7所示。分别是主控模块、参数设置定模块、实时任务处理模块、数据存储模块和传输通信模块。各功能模块在各自独立完成系统所分配任务的同时又通过系统的框架协议进行联系。

5 系统测试与结果

为了检验本系统的准确性,在实验阶段,采用模拟心电信号发生器产生各种心电信号,用本系统进行采集。

开机后,进入心电监护系统主界面,点击监护界面上的“启动监护”键,并打开模拟心电发生器,设置心率为79次/分钟,幅度为1mv, 系统开始采集心电信号并在监护界面上显示心电波形和心电信号的特征参数,此时显示心率为79次/分,并显示心率正常。如图8所示。

改变模拟心电发生器上的心电心率的频率,设置为40次/分钟,查看心电监护系统的监护界面,此时,心率栏显示40次/分,并在分析结果栏显示心率过慢。如图9所示。

接着再次改变模拟心电发生器上的心电心率的频率,设置为144次/分钟,观察监护界面波形的变化情况,此时心率显示142次/分,并显示心率过快。如图10所示。

按照上面的实验进行10次,得到10组心电率数据,如表1所示。将监护系统上显示的心率与模拟心电发生器的心率进行比较,发现系统检测得到的心率与产生的心率基本一致。

同时,还对本系统的其他功能进行了测试,发现本系统能够正常设置各种参数,能够进行正常存储数据、报警、冻结、解冻当前心电界面,并且能够长时间稳定,准确的进行监护。通过以上的实验,说明本系统基本实现了设计的要求,能够进行正常,可靠的显示心电波形,从实验的效果看,该系统工作性能良好,运行稳定。

6 结束语

本文中心电监护系统的实验测试,是通过采集模拟心电发生器产生的心电信号来进行。实验的结果证明了系统硬件和软件设计的准确性和可靠性,有一定的实用价值,而且适应性较好,易于推广应用。

参考文献:

[1] 孙志刚. 适应社会发展需要加强社区医疗建设[J]. 中国医药卫生, 2005,6(7):111-112.

[2] 黄澍涛. 医用监护仪的临床应用与发展特点[J]. 中国医疗设备, 2011(2):59-61,156

[3] 吕京建, 肖海桥. 嵌入式处理器分类与现状. http://www.bol-system.com.

[4] 李静. 基于嵌入式平台的目标识别研究[D]. 桂林: 桂林电子科技大学硕士学位论文, 2009.

[5] 梁海. 基于嵌入式技术的小型化血球分析仪的研制[D]. 桂林: 桂林电子科技大学硕士学位论文, 2007.

[6] Jonathan Corbet,Alessandro Bubini.Linux设备驱动程序[M]. 北京: 中国电力出版社, 2006.

[7] Karim Yaghmour. Building Embedded Linux Systems[EB/OL]. 2003.

[8] 李俊. 嵌入式Linux设备驱动开发详解[M]. 北京: 人民邮电出版社, 2008.

[9] 倪继利. QT及LINUX操作系统窗口设计[M]. 北京: 电子工业出版社, 2006.

猜你喜欢
心电监护
心电监护仪的日常维护及常见故障维修策略
护士应用心电监护仪导线保护的固定方法创新
规范心电监护仪的使用与管理方法在住院患者中的应用效果
PDCA 循环管理对降低冠心病监护病房心电监护误报率的效果研究
护理干预在心电监护仪监护患者中的应用效果
心电监护仪维修质量控制方法探讨
心电监护仪电压测量不确定度的评估
基于Andriod平台的心电监护系统设计
液体敷料对心电监护患者皮肤的保护作用研究
心电监护仪常见故障维修研究