基于VC++的心电信号数据采集系统
2010-01-08武利珍张文超
武利珍,张文超
(杭州电子科技大学电子信息学院,浙江杭州310018)
基于VC++的心电信号数据采集系统
武利珍,张文超
(杭州电子科技大学电子信息学院,浙江杭州310018)
该文针对常规心电监护设备体积笨重、价格昂贵和不利于家庭化的局限性,设计了一种基于STM32芯片能够实时采集心电信号的电路。采集的心电数据通过串口提交到PC机,以VC++为开发平台,设计了心电信号采集系统。经实验室使用验证,该系统可实现对心电信号的实时采集、显示和存储,而且性能可靠,工作稳定,成本又大大地降低。
心电信号;便携式;数据采集
0 引 言
心脏病是威胁人类健康的主要疾病之一,而心电图是其诊断的重要依据。临床医学实践表明,对于心脏病的防治,最有效的手段是预防和保健。心脏病具有突发性的特点,但是目前由于心电图机的应用场合的限制和HOLITER的价格非常昂贵,使得病人得不到实时监控,这对病人的病情诊断和治疗是极为不利的。随着PC机的普及,设计基于PC机的医疗器械已越来越受到欢迎,医疗设备家庭化已成为一种发展趋势[1]。本文介绍的是项目“基于STM 32的便携式心电图仪设计”的一部分,该项目是要开发一种体积小、价格低的能够随身携带的心电监护系统,并能够借助串口实现数据与PC机的通信。本文介绍了采集和处理心电信号的硬件电路和上位机软件管理系统。
1 系统整体设计概述
系统原理框图如图1表示。心电信号由电极获取,经前置放大电路、高低通滤波、主放大和电平抬升电路处理后,得到符合要求的模拟心电信号,并送入到STM 32的ADC进行AD转换。为了更好的抑制干扰信号,在电路中还引入了右腿驱动电路。系统控制芯片采用意法半导体公司推出的新型32位ARM内核处理机芯片STM 32系列中的STM 32F103VC,AD转换后的数字心电信号经过滤波处理得到光滑、正确的心电信号数据,最后将滤波后的心电信号通过串口可靠地传输到PC机,以便对心电数据做进一步的分析和处理。
2 心电采集硬件电路设计
系统硬件主要划分为3大部分:前置放大电路,主要完成心电信号的提取;带通滤波及主放大电路,用于调理采集到的信号,使之符合处理要求;STM 32处理电路,完成心电信号数据传送功能及其他控制。
2.1 前置放大电路
前置放大电路是硬件电路的关键,直接决定整个系统性能的好坏。因此必须根据心电信号的特点来选择合适的放大器。体表心电信号的频率主要集中在0.05~100Hz,幅度大小为10μV~4mV,典型值为1mV,是一种低频率的微弱双极性信号。而STM 32的ADC输入端电压范围是0~3.3V,因此需要对心电信号进行放大和电平抬升,总体放大倍数约为1 000倍,然后再通过电平抬升电路抬高1V左右。心电测量中,实际的电极不可能完全对称,这样将会引起基线漂移现象,还有无处不在的电源工频50Hz干扰,肌电干扰等,这些都要求心电前置放大器必须有很高的共模抑制比。一般要求共模抑制比在80dB以上[2]。
图1 系统整体方框图
本设计选用INA 118仪表放大器作为系统前置放大器,它具有低噪声、低漂移、高共模抑制比、高输入阻抗等特点,它的增益可达1 000倍,计算公式为:G=1+50k/Rg。防止前置放大器进入截止或饱和状态,这里增益取10,由G=1+50/Rg得出Rg=5.6k。由于人体的阻抗和心电电极阻抗非常大,所以在前置放大前设计了一级跟随作为信号缓冲。为了更好的抑制50Hz干扰,采用右腿电极经电阻与放大器接地端相连,以降低人体的共模电压[3]。心电前置放大电路及右腿驱动电路如图2所示。
图2 心电前置放大电路及右腿驱动电路
2.2 带通滤波及主放大电路
心电信号频带主要集中在0.05~100Hz,因此带通滤波器设计的带宽为0.03~110Hz以滤除干扰信号。带通滤波器用高低通滤波器来构成[4],如图3所示,基于小型化和成本考虑,硬件滤波只用一阶高通滤波器和一阶低通滤波器,虽然设计了右腿驱动电路,但是仍然有50Hz干扰进入电路,本文不再设计50Hz陷波器,而改为用软件的方法通过设计数字滤波器来滤除工频干扰。
图3中高通滤波器由U5A、C4、R6组成,设置其截至频率为f=0.03Hz,低通滤波器由U5B、C5、R7组成,设置其截至频率为f=110Hz。
2.3 STM 32处理电路
STM32系列采用ARM公司具有突破性的Cortex-M3内核,工作频率为72MHz,内置高速存储器,丰富的增强I/O端口和连接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。该内核是专门设计于满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域的要求。
图3 高、低通滤波电路
STM32的应用为项目基于STM 32的便携式心电图仪设计带来了优势。无需外扩芯片即可完成心电信号的采集、显示、存储和传输等。本文只介绍与PC机通信的USART模块电路。由于串行通信采用RS232电平信号,而STM32输出的电压范围是0~3.3V,因此为了将心电信号传至上位机,采用电平转换芯片ST3232进行信号之间电平的转换。该芯片可将单片机输出的心电信号的电平转化为RS232电平,并将其传至上位机进行显示。
3 软件设计
3.1 数据采集与发送程序
下位机的软件设计包括初始化设置、A/D转换、串口通讯等几个主要部分。ADC采用DMA中断方式,采样频率为200Hz,中断服务子程序完成电压的采集和数据的发送。DMA中断程序流程图如图4所示。ADC设置为定时器外部触发。
图4 DMA中断程序流程图
3.2 上位机界面的软件设计
经过处理后的心电信号通过串口送到上位机。在上位机上通过VC++软件编程[5]实现心电信号的显示,记录,回放和分析等功能。上位机管理软件的开发是使用V isual C++6.0完成的。VC++与Windows操作系统密切结合,有一套功能强大的可视化类库(MFC),采用面向对象的编程方法。上位机主要分为以下的几个部分:(1)串口通信程序,完成心电信号的读入;(2)心电信号显示程序,实时显示出心电波形;(3)心电信息管理程序,主要是完成记录采集时的信息和分析结果并存储到.txt文件中。软件流程如图5所示。
4 结束语
心电波形即为本系统从作者本人身上采集到的一段心电信号如图6所示。从图6可看出,该心电信号清晰,波形平稳,基本上没有基频漂移的干扰,50Hz的工频干扰也得到了很大的抑制,满足了进一步处理分析的要求。
本文以高性能、低功耗的STM32芯片为硬件基础,设计了前端心电信号采集硬件电路,以VC++为软件开发工具,实现了对心电信号的实时采集、显示和存储等。与传统的采用数据采集卡的系统相比,不仅操作简单,通用性强,而且极大地降低了成本,很适合于后续的功能开发。下一步是完善其分析功能。
图5 上位机软件流程
图6 心电信号采集时的界面
[1]代少升,张跃孙.便携式远程心电实时监护仪的研制[J].医疗卫生设备,2008,27(9):1-2.
[2]王大雄.嵌入式便携心电监护仪的功耗降低方法研究[J].工程设计学报,2007.1 l(2):99-102.
[3]W inter BB,Webster JG.Driven-right-leg Circuit De-sign[J].IEEETrans Biomed,2005,27(8):62-66.
[4]程佩青.数字信号处理教程[M].北京:清华大学出版社,2004:261-262.
[5]孙雄勇.VISUAL C++6.0实用教程[M].北京:中国铁道出版社,2004:208-225.
Data Acquisition System of ECG Based on VC++WU Li-zhen,ZHANGWen-chao
(School of Electronics Information,Hangzhou Dianzi University,Hangzhou Zhejiang310018,China)
In accordancewith the big size and bulky volume and not conducive to the familyof ECGmonitoring equipment limitations,design anew ECG collecting equipment of real-timemonitoring base on STM 32 processor.The ECG data are transmitted into the PC by serial port,and designed a low-cost virtual ECGAcquisition System used VC++studio.Practical laboratory tests verify that this system can acquire,display and store ECG signal in real time,and the performance and working stability of the system is dependable.
ECG;portable;data acquisition
TP368.2
A
1001-9146(2010)03-0013-04
2009-09-16
浙江省自然科学基金资助项目(Y407133)
武利珍(1983-),男,山东菏泽人,在读研究生,新型电子器件设计及应用系统.