随着社会的进步和科技的发展,人们对健康观念、健康方式和途径都发生着深刻的变化。我国是心脑血管疾病的高发区,然而多数医院的心电监护设备数量少、不宜移动、且成本高,无法满足市场的需求。为了满足对心电监护设备的需求,降低医疗成本,需要一种与PC相结合的心电检测系统。计算机与外设连接的总线接口由多种形式,其中PCI和ISA总线插拔麻烦,且扩展槽有限;RS232串行总线传输速度慢且与主机的串行口数目较少。近几年USB总线接口异军突起,它具有热插拔、即插即用、系统扩展和配置方便,高效数据传输等显著优点,克服了传统总线接口的缺陷,本文设计的心电监测系统也采用了这种方法。
1 硬件电路设计
1.1 硬件的总体结构
本文设计的心电检测系统硬件总体结构图如图1所示,包括导联电路,滤波放大电路,微控制器,Flash存储器,电源变换电路和USB接口电路等几部分组成。通过电极从人体采集到心电信号,经导联电路和滤波放大电路后进入单片机的A /D,再经单片机处理存储到Flash,从而完成心电信号的采集。系统可以通过USB接口电路实现与PC机的通信,将存储在Flash中的心电数据以文件格式转存到PC机中,从而实现了数据的无限存储功能,同时通过VC软件编程可以在屏幕上显示心电波形。电源变换电路中采用9V电池供电,体积小巧,易于便携使用。
1.2 USB接口电路
本文使用的是Philips公司的PDI-USBD12。 PDI-USBD12是一款性价比很高的USB器件,完全符合USB1.1版的规范。它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口,并且支持本地的DMA传输。此外,PDIUSBD12还集成了许多特性,包括SoftConnetTM、GoodLinkTM、可编程时钟输出、低频晶振和终止寄存器集合。所有这些特性都为系统节约了大量成本,同时使USB功能在外设上的应用变得容易。
图2为USB接口电路,USB接口采用4线电缆,D+、D -两根线是用于发送信号,VDD、GND二条线,向设备提供电源。 PDIUSBD12的XTAL1和XTAL2引脚外接6M晶振。数据线和控制线分别与单片机的I /O口相连,通过SPCE061发送命令和数据从而控制USB接口芯片PDIUSBD12,实现数据的快速高效传输。
1.3 单片机系统
本文采用凌阳公司推出的16位SPCE061单片机,该单片机具有较宽的电源电压范围(2.4~3.6V),CPU最大速度为49.125MHz,8道10位ADC(A /D的转换速度最大为96kbps),片内2k的RAM,32k的Flash,32个I /O接口等特点。 Flash采用凌阳公司512k*8位的SPR4096,工作电压为2.25~2.75V,它与SPCE061具有很好的相互传输能力。
1.4 放大滤波电路
放大滤波电路如图3所示,前置放大器采用ANALOG DEVICES公司的AD620,这是一款性价比很高的仪用放大器,输入失调电压最大为50uV,输入失调漂移0.6uV每度,共膜抑制比120dB(G=10),且最大供电电流只有1.3mA。放大器采用低功耗低噪音的TLC2254,每通道供电电流35uA,噪声为19nV /Hz(1kHz),非常适合便携式设备。由于心电信号多在0.5~150Hz,所以需要进行滤波,在TLC2254上加一个0.48~159Hz的带通滤波器。对于工频50Hz干扰,为了减少硬件设计,同时考虑降低功耗问题,将采用软件滤波方式,经切比雪夫2次滤波和平滑滤波,效果较为理想。由于心电信号存在负值,而凌阳单片机的A /D范围为0~3。3V,所以必须对信号进行抬压。这里采用LM385 -1.2V精密基准电压源,与信号相加,从而实现了信号所有点的取值为正。
2 系统软件设计
心电检测系统的软件设计包括数据采集存储程序设计和USB数据传输程序设计。
2.1 采集存储程序设计
采集存储程序设计如图4所示,首先对单片机和Flash芯片初始化,设置系统时钟、采样频率、引脚定义等。然后对每次采样数据进行滤波,由于前边硬件设计中已经设计了一个带通滤波器,所以这里主要考虑去除50Hz工频以及毛刺。采用切比雪夫I型2次滤波可以有效去除50Hz工频而平滑滤波,并可以去除毛刺,公式如下:
考虑到使用切比雪夫滤波器产生的系数为小数,为利于计算,将其变换成整数,每部分系数均乘以4096,取整数部分,计算得到的结果再采用右移12位的方法得到最终结果。
图5为心电信号处理前后对照图,可以看出效果比较明显。
2.2 USB数据传输程序设计
USB数据传输程序设计的目的就是使PDIUS-BD12在USB上达到最大传输速度。 PDIUSBD12的程序设计采用中断驱动,当CPU处理前台任务时,USB的传输可在后台进行,这就确保了最佳的传输速率和更好的软件结构。后台中断服务程序和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现。主机首先要发令牌包给PDIUSBD12,PDIUSBD12接收到令牌包后就给单片机发中断,单片机进入中断服务程序,首先读PDIUSBD12的中断寄存器,判断USB令牌包的类型,然后执行相应的操作。
SPCE061单片机与PDIUSBD12的通信中,PDI-USBD12负责处理所有与USB总线事务有关的任务,如总线唤醒、数据接收/发送、打包、CRC校验等,但不负责解释这些数据的意义;SPCE061负责处理数据、响应主机请求、以及控制PDIUSBD12的工作。主要是靠单片机给PDIUSBD12发命令和数据来实现的。SPCE061的中央处理单元(CPU)通过执行存储在芯片固件里的指令集来控制PDIUSBD12的活动。CPU支持一个包括用于移动数据、执行数学和逻辑操作、程序分支等的机器语言指令的指令集。PDIUSBD12的命令字分为三种:初始化命令字、数据流命令字和通用命令字。 PDIUSBD12给出了各种命令的代码和地址。单片机先给PDIUSBD12的命令地址发命令,根据不同命令的要求再发送或读出不同的数据。因此,可以将每种命令做成函数,用函数实现各个命令,以后直接调用函数即可。
图6为程序设计的层次框图,其中D12CI.C、CHAP9.C和ISR.C可进行固件接口的移植,EPPHAL.C和MAINLOOP.C需自行设计。在MAINLOOP.C中需要设计发送USB请求、读测试Key、控制LED和和处理USB总线事件。在EPPHAL.C中需设计各I/O口对PDIUSBD12个引脚的控制与数据传输。
3 结语
基于USB总线的心电检测系统的软硬件设计及开发,充分体现了USB便捷、低成本、高抗干扰等特点。经测试,工作稳定可靠,心电波形清晰,是一种较为理想的心电检测系统。由于心电干扰的复杂性以及软硬件设计中的限制,心电信号的消噪问题还有待进一步提高。
上一篇:微控制器在单片机语音实验中的应用
下一篇:用STM8的TIM1实现流水灯实验(使用外部时钟)
推荐阅读最新更新时间:2024-03-16 15:15