1 系统硬件结构及原理
低功耗便携式心电仪由MSP430F169、心电信号采集调理电路、液晶显示模块、数据存储模块、按键输入模块等组成,如图1所示。
通过以标准导联方式I和人体相连的电极取得的心电信号,因为环境中存在各种干扰(人体自身的肌电干扰,外部的工频干扰等),所以必须经过模拟放大电路的放大、滤波等调理之后才可进入MSP430F169单片机,利用单片机内部的A/D模块对模拟信号进行模数转换,然后存储数据,并在液晶屏上显示,观察者可以直观地看到心电信号波形和每分钟心跳的次数。系统采用SD卡来存储采集的数据,采集的心电信号数据可以长时间存储,这对于心电信号异常且有偶发性的病人具有重要价值。系统还可以通过串口把采集的心电信号实时传输到上位机,由上位机显示并进行实时分析。
1.1 微控制器
微控制器采用TI公司的MSP430F169单片机,它是一款低功耗单片机,当所有器件均采用低功耗模式工作时,总功率不到1 W,RAM 数据保持方式下耗电仅 0.1 ?滋A,活动模式下耗电250 μA/MIPS,特别适合于便携式设备;片内集成有12 bit A/D转换模块,4种转换模式,转换速度最快达到200 Kb/s,足以满足心电采集的要求。
1.2 心电信号调理电路
心电信号调理电路是本系统的重要环节之一,主要由前置放大、高通滤波、50 Hz陷波、低通滤波和后级放大电路组成,如图2所示。因为体表ECG心电仪一般只有0.05 mV~5 mV,具有微弱和易受干扰等特点, 因此,采用高输入阻抗、高共模抑制比的差分放大电路进行前置放大,以增大输入阻抗、减少共模信号干扰;带通滤波电路主要由高通滤波器和低通滤波器组成,通频带为0.5 Hz~100 Hz,滤除心电频率范围以外的干扰信号;50 Hz 陷波处理器滤除工频干扰;后级放大器将ECG信号进一步放大100倍左右到合适范围,然后输出到核心控制器MSP430F169的A/D模块。
1.3 数据存储模块
本系统中使用SD卡存储采集的心电信号数据。SD卡是一种体积小、容量大、性价比高、访问接口简单的存储卡,具有低功耗、非易失性等特点,被大量应用于数码照相机、手机等便携式设备中。使用SD卡可将心电数据传送到功能更强大的PC机中进行进一步的分析处理,其接口电路如图3所示。其中,DAT0~DAT3为数据线,CMD为命令线,CLK为时钟线,为存储模块提供时钟,CD_SW用于控制SD卡的热插拨。
MSP430F169的P1.1~P1.5连接5个独立按键,其中4个用于调整心电波形显示的周期和幅值,1个用于串口数据发送。
2 软件系统设计
系统软件部分是在IAR430开发平台下进行开发调试完成的。IAR430是专门为TI公司的MSP430单片机而设计的一款开发软件,它提供了工程管理、程序编辑、代码下载、软硬件调试等几乎所有的功能。
系统流程图如图5所示。首先系统进行初始化(包括看门狗、系统时钟、I/O口、UART1、ADC12、TimerB及LCD等初始化),开总中断后系统进入主循环体,当采集满一屏数据时,主循环体内进行心电波形的刷新显示;不满一屏数据时,进入低功耗状态。A/D采集用中断方式,系统的采样频率通过定时器控制,5个独立按键采用中断方式,通过软件延时消除按键抖动。
2.1 低功耗设计
由于MSP430单片机是专为低功耗设计的,所以本系统的程序部分按照其低功耗方案设计。除了心电波形显示、擦除这种必要步骤在大循环内运行外,其余的(包括A/D转换程序、定时器采样频率、按键)全部采用中断方式,只有事件触发时才运行;而在主程序设计中只有在采集完一屏数据之后才运行心电波形显示,其余时间全部进入LPM1低功耗模式;数据的存储不经MCU,直接利用MSP430F169内部的DMA模块实现数据传输。这一设计方法大大降低了系统的功耗。
2.2 系统各子程序设计
(1)A/D部分
MSP430F169的P6.0~P6.7为A/D复用口,本系统采用P6.4,即A4作为A/D的输入口,采用单通道多次转换方式。A/D转换采用中断方式,中断子程序内只编写一条语句,即关A/D中断,不进行其他任何操作,以使A/D最高采样频率达到理想状态。A/D的初始化程序如下:
void ADC12_S_S_Init(void)
{ P6SEL|=BIT4;
ADC12CTL0=ADC12ON+REFON+REF2_5V+SHT0_2
+MSC;
ADC12CTL1=ADC12SSEL_0+SHP+CONSEQ_2
+CSTARTADD_4;
ADC12MCTL4=SREF_1+INCH_4;
ADC12IE |=BIT4;
ADC12CTL0 |=ENC+ADC12SC;
}
(2)定时器中断部分
系统的采样频率由定时器控制,并由按键对频率进行缩放,定时器采用子系统时钟、8分频(系统时钟为8 MHz)。定时器亦采用中断方式,中断子程序内对A/D转换后的值进行存储,并查询是否采集完一屏数据,如果采集满屏,即关闭定时器中断和A/D中断,然后满屏标志位置1,退出低功耗模式,退出中断。中断子程序如下:
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
{ results[index]=ADC12MEM4;
index++;
if(index==102)//如果采集完一屏
{ index=0;
TBCCTL0 &=~CCIE;//先关闭定时器B
ADC12IE &=~BIT4;//关ADC中断
collect_a_screen=1;//满屏标志位置1
LPM1_EXIT;//退出低功耗模式
}
else ADC12IE |= BIT4;//开ADC中断
}
(3)SD卡部分
采集的数据通过MSP430F169内部集成的DMA模块传送到SD卡内。DMA选用通道0,触发方式为ADC12IFG4,按字节发送。SD卡的操作以命令方式进行,所有的命令都由主机主动发送,SD卡根据不同的命令做出不同的响应。其应答流程如图6所示。
3 应用与注意事项
用本系统采集人体心电,经验证,能够在LCD屏上正确显示出如图7所示的人体的心电波形,并能通过串口或SD卡将采集的数据传送到上位机进行进一步显示分析。本系统设计时需要注意:MSP430F169默认是关闭中断嵌套,所以用到中断嵌套时,进入中断子程序后应首先打开总中断,这样才能执行嵌套中断;在LCD上画心电波形时,应采用分列式,即擦一列画一列,这样才能保证心电波形稳定显示。
本文从家用便携式心电仪的特点出发,设计了一款功能适当、功耗极低并且价格低廉适用于家庭保健用的心电仪。同传统的数据采集系统相比,本系统采用低功耗微控制器MSP430F169,在软件设计中通过低功耗设计,大大降低了系统功耗,而且性能稳定、可靠,设计过程简便,降低了成本,具有广泛的应用价值。