1、 简易心电图仪的设计方案设计者:汪仨 王彪 鲁成华 谭桂仁 谢华超 刘柱康摘 要心电图是临床疾病诊断中常用的辅助手段。心电数据采集系统是心电图检查仪的关键部件。人体心电信号的主要频率范围为 0.05Hz100Hz,幅度约为 04mV,信号十分微弱。由于心电信号中通常混杂有其它生物电信号,加之体外以 50Hz 工频干扰为主的电磁场的干扰,使得心电噪声背景较强,测量条件比较复杂。为了不失真地检出有临床价值的干净心电信号,往往要求心电数据采集系统具有高精度、高稳定性、高输入阻抗、高共模抑制比、低噪声及强抗干扰能力等性能。本设计利用 89C51 和 A/D 转换以及多路模拟开关设计了一种符合上述要求的
2、多路心电数据采集系统。一、方案的提出与比较1、方案的提出图所示是一个心电数据系统的组成框图,其中心电信号由专用电极拾取后送入前置放大器初步放大,并在对各干扰信号进行一定抑制后送入带通滤波器,以滤除心电频率范围以外的干扰信号。主放大器可将滤波后的信号进一步放大到合适范围后,再经 50Hz 陷波器滤除工频和肌电干扰,然后将符合要求的心电模拟信号由模拟输入端送入高速 ADC,以进行高精度 A/D 转换和数据的采集存储。方案一:采用模拟分立元件,可以产生心电波,但采用模拟元件太大,即使使用单片机电路参数也与外部元件有关,外接的电阻电容对参数影响很大,在滤波过程中会出现很大的干扰,使得输出不精确,即此电
3、路抗干扰能力低,成本也高;而且灵活性差,不能实现各种输出的智能化。 ,方案二:采用以 89C51 为核心,采用 INA128 芯片作为前置放大,运用多级运放电路来提取信号。它在一定的程度上可以达到题目要求。但是,共模抑制比很难达到发挥 80db 以上,而且精确度不高,在以后的输出中会出现很多的毛刺。由于这些原因,我们不采用这种方法。方案三: 以 89C51 为中心、采用性能优良的 AD620 管作为前置放大,既可以提高放大倍数,也可以提高共模抵制比、电路结构简单。 。然后通过A/D 和 D/A 转换,输出给示波器,若合理的选择器件参数,可使其输出波形失真小。所以采用此方案。二、系统原理图以及各
4、模块的说明1、系统原理图图一2、模块说明:导联选择:采用 CD4051 来完成,用单片机来控制。 前置放大:采用 AD620 来完成,前置放大是心电数据采集的关键环节,用来把取样的信号进行放大,具有很高的共模抑制比和 11000 倍信号放大。 高/低通滤波电路:采用 LM324 作为核心,用大小相当的电阻电容构成滤波电路。50Hz 陷波电路:采用 LM324 作为核心,用大小相当的电阻电容构成陷波电路,电路简单,容易实现。波形 A/D 采集存储模块:以单片机为核心,利用 ADC0809,以 2.5KHz的速率对输入信号进行采集。由于 89C51 内的存储空间不够,我们扩展了两片 RAM,使存储
5、深度达到了 16KB,即每一个通道存储 8KB。单片机控制模块:系统的主控制器,控制其他协调工作。三、系统电路与理论数据(1)导联通道的选择方案一:两个导联均采用两个相同的通道,即采用两个仪表放大器INA128、两个滤波通道、两个 50Hz 陷波通道以及两个主放大电路、两个电平移位电路,然后通 89C51 来控制 ADC0809 来选择通道来进行处理。由于这种方法的思路非常清晰,各通道之间干扰小,但总体来说由于采用了两个通道,耗资大,所以本设计不采用此方案。方案二:采用模拟开关 4051,在两个导联通道均通过仪表放大器以后再通过 4051 进行通道的选择,然后送到后级进行处理。在这里为了保证每
6、切换一次 89C51 能够采集存储完一次心电信号,我们用 89C51 来同时控制切换率和采样率,这样就切保了同步,同时也保证了心电信号不会被漏存少存。方案三:在前置放大前级采用类比多工器 ADG609,考虑到一般生理信号都属于差动式的,而 ADG609 的类比信号的输入范围介于 Vss 与 Vdd 之间,且有四个切换对,可以很轻易地经由 89C51 的设定来更改切换的频率,除此之外还具有快速切颀时间(Ton75ns max*Toff45ns max) 、低启动阻抗、低消耗功率,以上这些特性都符合此设计的要求。ADG609 的真值表如下:A1 A0 EN 通道选择X X 0 NONE0 0 1
7、10 1 1 21 0 1 31 1 1 4(2)前置放大部分方案一:采用 LM324 与 NE5534 等低噪声,具有一定精度的普通运算放大器要构建放大电路,但从体表采集到的信号除了人体的心脏产生的电信号以外,还包含肌电,呼吸以及 50Hz 工频信号等带来的干扰.其中,工频干扰收起的共模信号可能远大于心电信号,从而影响系统对心电信号的分析采样,因此,共模抑制比是衡量心电图仪情能的重要标准之一.本题要求运算放大器的共模抑制比不小于80db.上述两种运算放大器的共模抑制能力虽然能达到这个要求,但有这样的单个运放构成的电路难以达到较高的共模抑制比,故不采取此方案。方案二:心电信号为一差动式信号并且
8、小于 4mV,通常信号会先经过第一级的适当放大后,再经过高低通滤波器,采用分级放大的原因是为了避免直流偏压经过放大后,造成后级的电饱和,而使放大后的信号产生失真.因此为了避免放大器饱和,在这一级的放大增益应该小于 30.一般说来作为前级放大单元必须具有高输入阻抗.高共模斥拒比等基本特性,在这里我们采用了低功耗,高精度的仪表放大器-AD620, AD620 输入端采用超 处理技术,具有低输入偏置电流、低噪音、高精度、较高建立时间、低功耗等特性,共模抑制比可达 130dB,非常适合作为医疗仪器前置放大器使用。其增益可调(范围约倍),并可由公式1+(51+51 )/15=7.2来确定。为防止前置放大
9、器工作于饱区和或截止区,其增益不能过大。试验表明:倍左右效果较好。因此,我们采用了此方案。方案三:采用仪表放大器 INA128.其具有良好的共模输入抑制能力,共模抑制比大于 120DB,而且只需外接一个电阻就可调节增益 INA128 对直流电源的要求低,甚至只需 2.25V 的直流电源电压就要表现出色的功能特性 ,静态电流只有700uA,功耗低,但 INA128 的价格昂贵,因此我们不采用此方案。(3)心电信号处理部分心电信号属于低频小信号,易受干扰,因此必须对所采集的信号进行高通,低通,陷波的处理.因此我们将心电信号处理部分的方案主要放在滤波部分和陷波部分。1、滤波部分如图所示,带通滤波由双
10、运放集成电路 LM324 构成。LM324 具有高精度、低偏置、低功耗等特性,片内集成了两个运放,可灵活组成各类放大和滤波电路。由于心电信号频带主要集中在左右,频带较宽,为此,采用 LM324 的两个运放分别设计二阶压控有源高通和低通滤波器并组合成带通滤波。其中,、构成高通滤波器,为不损失心电信号的低频成分,其截止频率设计为 5。9876RC、构成低通滤波器,同样,为不损失其高频成分,截止频率设计为 500Hz1098放大电路由 LM324、构成。考虑到心电信号幅度约为,而转换输入信号要求左右,因此,整个信号电路的放大倍数需倍左右。而前置放大约倍左右,因此本级放大倍数设计为倍左右,即。其中低通
11、滤波又分有源滤波和数字滤波。图三为低通滤波的幅频特性.图三有源滤波方案: 一阶滤波。其结构相对简单,且采用了集成运算放大器,它具有高输入阻抗和低输出阻抗,同时由于具有缓冲作用效果比无源滤波器好,幅频特性曲线可达到-20db/10 倍频,但要想实现更明显的滤波效果。此方案仍未满足要求。 二级滤波采有类似的结构,但幅频特性曲线能达到-40db/10 倍频程,滤波效果比一阶明显。 二级以上的滤波。它是由多个一阶和二阶滤波器组成的,效果自然要比上述两种滤波好,但其电路比一阶和二阶复杂,所需电阻电容较多,而电阻电容的实际值很难与设计要求精确匹配,有时为了匹配需要好几个电阻的串并联,同时由于不能避免环境因
12、素对电阻电容的影响,因此用的电阻电容越多,误差就越大,导致实际的滤波效果与设计时所期望的存在一定的差距。本设计只对截止频率的精确度有要求,而对系的统的频域衰减率未做特别的要求,因此可以不必选择高阶滤波方案。数字滤波方案:数字滤波的优点是参数可调节性好,可以通过更改程序中的参数对截止频率进行精确的调节,由于参数不会随温度等环境因素改变,从而精确度得到保证。因此我们选择了此方案。图四2、陷波处理部分工频干扰是心电信号的主要干扰,虽然前置放大电路对共模干扰具有较强的抑制作用,但有部分工频干扰是以差模信号方式进入电路的,且频率处于心电信号的频带之内,加上电极和输入回路不稳定等因素,前级电路输出的心电信
13、号仍存在较强的工频干扰,所以必须专门滤除。方案一:采用自适应相关模板法。利用工频干扰的相关特性,从原始输入信号中得到工频干扰的模板,进而原始输入信号中减去工频干扰的模板,达到滤波干扰的目的。但这种方法算法虽然简单但程序设计比较复杂,所以不采用此方案。方案二:采用模拟双 T 陷波。 通过图五幅频特性可知 ,对于 W=W0 的其他频率信号,通过双 T 网络具有较强的负反馈,因为双 T 网络具有良好的滤波特性,在仪表的电源噪声滤波电路中获得了较为广泛的应用,又因为双 T 网络具有比RC 串、并联网络更好的选频特性,故我们选用了此方案。图五3、电平移位电路经过一系列信号调理后,陷波输出的心电信号为交变
14、信号,而本设计中0809 转换输入电压范围为5,因此,在送入之前还需进行电平抬升,在图四中,电平抬升部分由、构成。图六通过调节 100K 的电位器,从而可以调节输出电压的范围。(四)、单片机系统的设计 1、由 ADC0809 与 89C51 构成的数据采集存储系统信号采集部分: 前级经过处理放大的模拟信号通过 ADC0809 处理后转换成数字信号, ADC0809 的转换时钟脉冲为 200us, 为了有效的转换 ,ADC0809 的 start 启动信号设置为 100us 的时钟脉冲,启动方式采用定时器溢出和软件 写位启动相结合的方式,输出通道是采用软件分时控制其输出通道。输出后的数字信号直接
15、送往单片机处理,当存储键有效时,单片机就会把输入信号存储起来,存储采用顺序存储方式,即先存第一通道再存第二通道,为了保证每个通道不会少存或重存,我们用单片机来不断查询 ADC 的转换结束线EOC,即第一个通道的数据转换完以后,EOC 线为高电平,然后存储到第一个通道的存储区,同时切换到第二个通道的 A/D 转换,存储方法与第一个道通道一样。为了回放的时候能看到比较完整的心电图形,存储周期(每一个通道)设置为 8KB*400us=3.2s,因此要占用较大的数据存储空间,显然单片机内部的数据存储空间是无法满足要求的,本系统采用的是外扩两片 8KB 的数据存储芯片以达到设计要求。当存储键无效的时候,
16、摸/数转换后的信号直接由单片机输出,信号不会存储起来。单片机输出的信号送到下一级数/摸转换电路还原成模拟信号,再经过倒 T 网络后送到示波器显示。当回放键有效的时候,就会把存储在外部数据单元的心电信号显示出来。图八所示是单片机与信号调理电路连接框图。由于单片机里存储的是两路信号,而本设计的提高部分又要求同时显示这两路信号,但 DAC0832 转换后只有一个输出端口,为了达到此要求,我们设计了两种方案。方案一:采用 CPLD 来还原 DAC0832 送来的两路信号,然后通过倒 T形网络进行电平移位,把两路心电信号电平移到不同的电平等级上,再通过CPLD 进行二选一切换送往示波器,由于人眼视觉暂留
17、,而 CPLD 切换的速度非常快,因此在示波器上看上去就是两路信号同时显示。虽然这种方法较容易实现,且易于控制,两通道之间干扰小,但用到了 CPLD 芯片,价格比较昂贵,况且这里要求切换的频率不是很高,普通单片机可以轻松实现,不需要使用复杂的 CPLD 系统。所以,在这里我们不采用此方案。方案二:采用模拟开关和 89C51 来进行控制,具体电路见原理图,在某一时刻我们只让单片机存储的一路信号送往 DAC0832,在 DAC0832 输出的外部我们并联了两个倒 T 形网络来进行电平移位,而这两个倒 T 形网络另一端接在高速模拟开关 4051 的两个通道上,通过单片机来控制 4051 的选择地址线
18、。当第一路信号送过来时,用单片机来控制 4051 打开一个通道进行信号的传输,然后送到显波器显示;第二路信号来时,4051 又打开另外一个通道送往显示。这样,不断地切换两个通道来进行轮流显示,只要切换的速度足够快,同样在示波器看上去也是两路信号同时显示。因此,我们采用了此方案。T 型电阻的结构如下:图七 设 Vin=0V 时,V 0=V1;Vin=5V 时,V 0=V2。根据 KCL 原理,利用下列二元一次方程组求出 R1、R 2:V1 / R0 = (5 V1) / R1 V1 / R2V2 / R2 = (5 V2) / R0 (5 V2) / R1 其中,第一路 V1 为脉冲序列的低电平
19、,电压为 1V, V2 为脉冲序列的高电平,电压为 V1 0.2V;第二路 V1 为脉冲序列的低电平,电压为 1.9V,V2 为脉冲序列的高电平,电压为 V1 0.2V设 R0 = 51K解此方程组可得 R1、R 2 列如下表:一路 二路R1/ K 10.00 5.263R2/ K 2.632 3.448V1/V 1.0V 1.9VV2/V 1.2V 2.1V四、扩展电路图图八五、软硬件电路设计:(一) 、软件图六、电源设计(1)+-15V 电源 (0.7A) -15V 电源电路图如图所示对于滤波电容的选择,要考虑:一、整流管的压降;二、815/7915 最小允许压降;三、电网波 10%。从而
20、允许纹波的峰峰值dUVUt d9.4157.0%)1(28按近似电流放电计算,并设 (通角),则0C= 选取滤波电容 C=2200 /30VFIut 1439./ F(2) +-5V 电源 (1A) 电源电路如图所示允许的最大纹波峰峰值 Vt 76.253.41%)0(2C= 选取滤波电容 C=4700 /16VFIut 3607.21/0 F(三)+-12V 电源设计同上,电路图如下:七、测试报告(仪器种类、型号、观测现象、测试步骤)(一) 、测试仪表100M 的模拟示波器、数字万用表、函数波发生器、EDA 系统开发工具、仿真器、PC 机等。(二) 、调试过程及功能实现调试过程:1、心电信号
21、放大部分的调试(1)前置级调试 由 AD620 来完成前置级,按照题目的要求,在此部分信号放大倍数要达到 1000 倍,为此,我们利用 LM324 采用了两级放大。我们先设 AD620 的 Rg=5K,外接电阻分别为 50K,这样前置的放大倍数大概就是 20 倍,但经过测试,输出的波形会出现严重的失真,于是我们把 Rg 换成了一个 50K 的可变电阻,经过调试当 Rg=11.5K 的时候输出的效果最好,波形失真最小。(2)高通滤波器的调试 在高通部分,为了满足题目的要求,我们设置低频截止频率为 0.05Hz,经过计算,RC 选频网络中的 C 为 0.1uF,R 分别为1.5M 和 7.5M,
22、为了能够看到高通滤波的效果,我们用信号发生器产生的三角波作为它的输入信号,经过仔细的调整,我们发现当频率低于 0.05Hz 的时候,电压衰减很大,波形也变得非常的不稳定,且失真,因此基本达到我们设计的要要求。(3)我们用同样的方法设计了低通滤波器。(4)50Hz 陷波电路的调试为了防止 50Hz 的工频对电路的干扰。对工频进行陷波提高电路的稳定性,利用双 T 二阶带阻滤波电路进行陷波。电路如下图所示:根据理论值:c 为 1uF,R2=160,R1=16k,R5=R6=2k,R4=4k;在调试的过程中,根据理论值进行测试,陷波频率偏离原设计频率较远在75Hz,在电容不变的情况下,经过多次对电阻调
23、试,最后选中 R2=180,刚好将 50Hz 的中心频率陷掉,范围在 4853Hz 之间。达到题目给定要求。(5)主放大电路 利用同相比例运放两级放大。2、采集电路调试 在采集电路数据输入部分加入标准信号,由单片机将其写入 RAM 指定的地址中,在将其读出后显示在 LED显示。3、显示电路的调试 调节 T 型电阻网络,用高精度电位器确定电阻阻值,并进行微调,结果显示正常。功能实现:(1)电压放大倍数与输出电压动态范围测试 通过功率函数发生器产生一个小幅值的电压信号作为输入,用示波器来检测其输出波形,读取输出波形的幅值,得到增益测试数据如下表,NO 1 2 3 4 5输入 20mV 20.6mV
24、 21mV 23mV 25mV输出 19.8V 20.8V 20.9V 23.1V 25.2V实际增益倍 990.1 1009.4 995.2 1004.1 1008结果分析:系统的放大倍数在 1000+-5%的范围内,输出电压满足动态范围大于+-10%的要求。(2)-3dB 高频截止频率 (理论截止频率为 500Hz)输入峰-峰值为 5V 的三角波,频率调节范围为 50600Hz,用示波器测量输出电压峰- 峰值,所得低通滤波电路测试数据如下表:NO 1 2 3 4 5频率 53Hz 62 100Hz 350Hz 550Hz输出电压 5V 5.11V 4.98V 4.05V 3.21V增益 0
25、 -0.01 -0.26 -1.20 -3.86(3)频带内响应波动指标测试为了减小工频干扰,我们引用了陷波电路,所以对 50Hz 左右的信号衰减是较大的,自然也就能满足题目对“频带内响应波动在+-3dB 之内 “的要求。(4)直流稳压电源测试 在给放大器供电情况下,输出交流噪声有效值为 0.1mV.(5)共模抑制比测试由于选用的是仪表放大器 AD620,它的性能指标已说明它的共模抑制比能达到 130dB,因此能满足题目对“共模抑制比大于等于 60dB”的要求。(6)人体心电信号测试C 语言程序:/-/ 二路信号自动存储 /-#include#include#include#define uc
26、har unsigned char#define PA XBYTE0x7ffc /定义 8255#define PB XBYTE0x7ffd#define PC XBYTE0x7ffe#define COM8255 XBYTE0x7fffsbit cunchukey=P10; /存储开启按钮sbit start=P11; / start 输出sbit dispkey=P12; /显示按钮sbit clrkey=P13; /清零按钮sbit eoc=P14; /判断是否转换完,转换完后 eoc=1sbit on_off1=P15; /采样通道选择sbit on_off2=P16; /输出通道选择
27、uchar xdata table18191; / _at_ 0xc000; /定义 62256uchar xdata table28191; / _at_ 0xa000;uchar clktime; /控制 200us 输出bit error=0; /有存储之后才能有显示,即 error=1;bit mark; /存储信号锁定int cuntime1,cuntime2; /存储计数cunchu(); /存储数据 data_display(); /数据输出intin(); /初始化clr(); /清空所有数组空间on_off_con(); /通道控制start_con(); /start 信号
28、控制void delay(uchar x) /延时while(x-);/-main-main() intin();while(1)cunchu();data_display();clr();on_off_con(); /-clear-clr()int i;if(clrkey=0)delay(248);if(clrkey=0)mark=0;error=0;for(i=0;i=8191while(1) if(cunchukey=1)break;/-data_display-data_display()bit disp_flag=1; /输出通道切换位int disptime1,disptime2;
29、 /输出计数if(dispkey=0if(dispkey=0)while(1)if(disp_flag) on_off2=1; /开输出通道 1PB=table1disptime1+;delay(10); if(!disp_flag) on_off2=0; /开输出通道 2PB=table2disptime2+;delay(10); disp_flag=!disp_flag;if(disptime1=8191disptime2=0;if(cunchukey=0|clrkey=0|dispkey=0)delay(50);if(cunchukey=0|clrkey=0|dispkey=0)break;while(1) if(dispkey=1)break;else /从采样端输出start_con();if(on_off1=1) /选择输出通道on_off2=1;else on_off2=0;PB=PA;