便携式心电图采集与控制系统设计
本系统设计在硬件上由基于ARM7TDMI-S内核的微控制器LPC2478、重复可擦写低功耗U盘、点阵LCD显示器模块等组成心电动态采集存储仪;软件上则使用嵌入式实时操作系统mC/OSⅡ作为系统控制平台,提高了系统的可靠性。本系统可连续记录受检者24~48小时的心电图变化,检查期间由受检者随身携带而不影响其日常生活与工作,可长时间作动态连续监测记录,大容量的U盘和USB2.0协议的出现,使得数据的传输越来越方便和迅捷,这为便携式手持移动存储心电图设备提供了条件。该系统原理图如图1所示。
系统实现
系统主要模块框图如图2所示。由于电极采集到的心电信号属于强噪声背景下的超低频(0.5~100Hz)微弱信号(0.1~5mV),所以需要前置放大部分将微弱的心电信号高保真放大,并通过低通滤波、高通滤波及50 Hz陷波滤除干扰,才可以送往LPC2478的A/D 转换器AIN0进行A/D转换。
前置放大部分电路由输入跟随、仪用放大器、右腿浮地驱动组成,输入跟随器为提高输入阻抗、获取更多的心电信号,采用高精度运算放大器OPA427,接收来自左、右手的心电信号经调整后送往仪用放大器,由高精度仪用放大器进行一级倒相放大后的信号送到低通滤波器,原始心电信号中的共模噪声经过一级放大后返回人体,使其相互叠加,从而可以减小人体共模干扰的绝对值,提高信噪比。
低通及高通滤波部分,由于心电信号属于低频信号,为了去掉高频的干扰,还须通过低通滤波。低通滤波器截止频率为110Hz,放大器的温漂、皮肤电阻的变化、呼吸和人体运动都会造成心电信号出现所谓的“基线漂移”现象,也即输出端的心电信号会在某条水平线上缓慢地上下移动。从频谱上说,这些影响都可以归结为一个低频噪声干扰,于是使用高通滤波器滤除这部分干扰。在主放大器部分,通过调整电位器的阻值 RP1来设置整个心电放大电路的总增益。主放大器采用低功耗低噪声的运算放大器TLC225。50Hz频率陷波部分主要用来滤除以差模信号方式进入电路的工频干扰。电平提升部分用来把双极性信号转化为单极性信号,以便可直接送入AIN0。
硬件设计
硬件平台
负压产生电路
由于心电图原始数据处理中数据放大和滤波电路中OPA4277、AD620和TLC2254芯片需要用到负压,故此在电路中加入负压产生电路,主要应用电压转换芯片MC34063通过起振产生-12V的负压,之后再进行分压得到芯片要求的-5V电压。
信号前置放大电路
前置放大电路的组成和电路图如图3所示。前置放大电路由输入跟随器、仪用放大器和右腿浮地驱动等三部分组成。
(1)输入跟随器:提高输入阻抗、获取更多的心电信号,采用高精度运算放大器OPA4277,具有超低失调电压l0 V,超低失调偏移±0.1V,偏置电流最大为l nA。
(2)仪用放大器:根据系统设计要求采用高精度仪用放大器AD620,输入失调最大为50mV,输入失调漂移为0.6mV/摄氏度,共模抑制比为120dB(G=10)。该放大器增益范围为1~10000,其放大增益关系式为:
G=1+49.4k/Rg
当G=10时,Rg为5.489k,取近似值5.5k。
(3)右腿浮地驱动:把混杂在原始心电信号中的共模噪声提取出来,经过一级反相放大后,再返回到人体,相互叠加,以减少人体共模干扰的绝对值,提高信噪比,主要应用高精度运算放大器OPA4277。
高通与低通滤波电路
由于心电信号属于低频信号,为了去掉高频干扰,还须通过低通滤波。低通滤波器采用归一化设计的四阶低通滤波,截止频率为100 Hz,在频率转折处有足够的陡度,避免高频信号的干扰。考虑到元件的误差,设定截止频率为110Hz。低通和高通滤波电路如图4所示,放大器采用低功耗低噪声的运算放大器TLC2254。每通道供电电流为35mA。
主放、50Hz工频陷波和电平提升
主放电路图通过调整电位器的阻值PI来设置整个心电放大电路的总增益。主放大器采用低功耗低噪声的运算放大器TLC2254。虽然前置放大电路对共模干扰具有较强的抑制作用,但部分干扰是以差模信号方式进入电路的,且频率处于心电信号的频带之内,加上其他各种不稳定因素,经放大、低通滤波、高通滤波和主放后,输出仍存在干扰,必须专门滤除。
经过陷波器后的心电信号为双极性,系统中的MD芯片只能量化单极性信号,所以,通过TLC2254把双极性信号转化为单极性信号。
LCD 模块
此系统采用MGLS12864 LCD模块,由于该液晶显示器没有内部字符发生器,所以在屏幕上显示的任何字符、汉字均须事先建立点阵字模库,然后按图形方式进行显示。MGLS12864 模块与LPC2478 连接,D0~D7 为数据/命令双向总线,CS 为片选信号,RES 为复位信号,D/I 为数据/命令选择信号,R/W 为读写命令信号,CE为控制允许信号。
软件设计
操作系统
本系统对数据处理、数据显示及网络传输需要很高的实时性,一个可靠的RTOS是系统稳定有效运作的保证,所以我们将在LPC2478上移植mC/OS II实时操作系统,用以满足系统对多线程、硬实时的严格要求。
mC/OS II是一个成熟稳定的占先式实时内核,基于优先级调度,支持56个用户任务,提供信号量、邮箱、消息队列等任务通信机制,能够极大提高CPU的利用效率。由于基于优先级来执行任务,如果其中一个任务跑飞,其它高优先级则可以通过运行系统的监视程序对其进行修复,因此在高安全性场合具有广泛的应用。且mC/OS II源码开放,移植简单,在基于ARM的32位微处理器中有大量成功的案例。在mC/OS II中,每个任务都是无限循环的,处于5种状态之一:休眠态、就绪态、运行态、挂起态和中断态。
2.A/D转换及转存USB模块:
由前端心电信号放大模块放大后的心电信号直接送给LPC2478芯片的P0.23引脚进行A/D转换,经转换后的数据为无符号32位数据格式,将其放入缓存数组中送给USB进行存储,并留待给LCD显示输出,具体实现过程为:
首先,需创建两个数据缓存区“GcWritFileData[DATA_N]”及“GcReadFileData[DATA_N]”做为“写文件缓冲区”及“读文件缓冲区”,初始化mC/OS II操作系统,创建用于处理A/D转换的任务Task0及用于LCD显示的任务Task1,启动多任务环境,在Task0中首先进行硬件平台的初始化,设置P0.23为AIN0[0]功能,作为A/D转换的输入引脚,进行ADC模块设置,设置转换时钟等,采用直接启动ADC转换,进行转换的参考电压为精密恒压源提供的2.5V电压,最后转换结果保存至“写文件缓冲区”。接着初始化USB HOST,并创建文件系统任务“OSFileTask”,用“OSFileOpen”函数创建并打开一个命名为“ECD.dat”的文件,通过“OSFileWrite”函数将“GcWritFileData” 写文件缓冲区的数据写入到U盘中,并通过其返回值判断写文件是否成功,完成写文件后再使用“OSFileRead”函数将“GcWritFileData” 写文件缓冲区的数据读写到“GcReadFileData” 读文件缓冲区,再通过写、读文件缓冲区数据的比较来确定写入文件数据是否正确,至此,完成从A/D转换接收数据及转存至USB的过程。程序流程图如图5所示。