单片机的心电图仪系统设计.docx

上传人:b****8 文档编号:27942788 上传时间:2023-07-06 格式:DOCX 页数:23 大小:180.11KB
下载 相关 举报
单片机的心电图仪系统设计.docx_第1页
第1页 / 共23页
单片机的心电图仪系统设计.docx_第2页
第2页 / 共23页
单片机的心电图仪系统设计.docx_第3页
第3页 / 共23页
单片机的心电图仪系统设计.docx_第4页
第4页 / 共23页
单片机的心电图仪系统设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

单片机的心电图仪系统设计.docx

《单片机的心电图仪系统设计.docx》由会员分享,可在线阅读,更多相关《单片机的心电图仪系统设计.docx(23页珍藏版)》请在冰豆网上搜索。

单片机的心电图仪系统设计.docx

单片机的心电图仪系统设计

摘要

心电图是临床疾病诊断中常用的辅助手段。

心电数据采集系统是心电图检查仪的关键部件。

人体心电信号的主要频率范围为0.05Hz~100Hz,幅度约为0~4mV,信号十分微弱。

由于心电信号中通常混杂有其它生物电信号,加之体外以50Hz工频干扰为主的电磁场的干扰,使得心电噪声背景较强,测量条件比较复杂。

为了不失真地检出有临床价值的干净心电信号,往往要求心电数据采集系统具有高精度、高稳定性、高输入阻抗、高共模抑制比、低噪声及强抗干扰能力等性能。

本设计利用89C51和A/D转换以及多路模拟开关设计了一种符合上述要求的多路心电数据采集系统。

一、方案的提出与比较

1、方案的提出

图1所示是一个心电数据系统的组成框图,其中心电信号由专用电极拾取后送入前置放大器初步放大,并在对各干扰信号进行一定抑制后送入带通滤波器,以滤除心电频率范围以外的干扰信号。

主放大器可将滤波后的信号进一步放大到合适范围后,再经50Hz陷波器滤除工频和肌电干扰,然后将符合要求的心电模拟信号由模拟输入端送入高速ADC,以进行高精度A/D转换和数据的采集存储。

方案一:

采用模拟分立元件,可以产生心电波,但采用模拟元件太大,即使使用单片机电路参数也与外部元件有关,外接的电阻电容对参数影响很大,在滤波过程中会出现很大的干扰,使得输出不精确,即此电路抗干扰能力低,成本也高;而且灵活性差,不能实现各种输出的智能化。

方案二:

采用以89C51为核心,采用INA128芯片作为前置放大,运用多级运放电路来提取信号。

它在一定的程度上可以达到题目要求。

但是,共模抑制比很难达到发挥80db以上,而且精确度不高,在以后的输出中会出现很多的毛刺。

由于这些原因,我们不采用这种方法。

方案三:

以89C51为中心、采用性能优良的AD620管作为前置放大,既可以提高放大倍数,也可以提高共模抵制比、电路结构简单。

然后通过A/D和D/A转换,输出给示波器,若合理的选择器件参数,可使其输出波形失真小。

所以采用此方案。

二、系统原理图以及各模块的说明

1、系统原理图

图一

2、模块说明:

①导联选择:

采用CD4051来完成,用单片机来控制。

②前置放大:

采用AD620来完成,前置放大是心电数据采集的关键环节,用来把取样的信号进行放大,具有很高的共模抑制比和1~1000倍信号放大。

③高/低通滤波电路:

采用LM324作为核心,用大小相当的电阻电容构成滤波电路。

④50Hz陷波电路:

采用LM324作为核心,用大小相当的电阻电容构成陷波电路,电路简单,容易实现。

⑤波形A/D采集存储模块:

以单片机为核心,利用ADC0809,以2.5KHz的速率对输入信号进行采集。

由于89C51内的存储空间不够,我们扩展了两片RAM,使存储深度达到了16KB,即每一个通道存储8KB。

⑥单片机控制模块:

系统的主控制器,控制其他协调工作。

三、系统电路与理论数据

(1)导联通道的选择

方案一:

两个导联均采用两个相同的通道,即采用两个仪表放大器INA128、两个滤波通道、两个50Hz陷波通道以及两个主放大电路、两个电平移位电路,然后通89C51来控制ADC0809来选择通道来进行处理。

由于这种方法的思路非常清晰,各通道之间干扰小,但总体来说由于采用了两个通道,耗资大,所以本设计不采用此方案。

方案二:

采用模拟开关4051,在两个导联通道均通过仪表放大器以后再通过4051进行通道的选择,然后送到后级进行处理。

在这里为了保证每切换一次89C51能够采集存储完一次心电信号,我们用89C51来同时控制切换率和采样率,这样就切保了同步,同时也保证了心电信号不会被漏存少存。

方案三:

在前置放大前级采用类比多工器ADG609,考虑到一般生理信号都属于差动式的,而ADG609的类比信号的输入范围介于Vss与Vdd之间,且有四个切换对,可以很轻易地经由89C51的设定来更改切换的频率,除此之外还具有快速切颀时间(Ton75nsmax*Toff45nsmax)、低启动阻抗、低消耗功率,以上这些特性都符合此设计的要求。

ADG609的真值表如下:

A1

A0

EN

通道选择

X

X

0

NONE

0

0

1

1

0

1

1

2

1

0

1

3

1

1

1

4

(2)前置放大部分

方案一:

采用LM324与NE5534等低噪声,具有一定精度的普通运算放大器要构建放大电路,但从体表采集到的信号除了人体的心脏产生的电信号以外,还包含肌电,呼吸以及50Hz工频信号等带来的干扰.其中,工频干扰收起的共模信号可能远大于心电信号,从而影响系统对心电信号的分析采样,因此,共模抑制比是衡量心电图仪情能的重要标准之一.本题要求运算放大器的共模抑制比不小于80db.上述两种运算放大器的共模抑制能力虽然能达到这个要求,但有这样的单个运放构成的电路难以达到较高的共模抑制比,故不采取此方案。

方案二:

心电信号为一差动式信号并且小于4mV,通常信号会先经过第一级的适当放大后,再经过高低通滤波器,采用分级放大的原因是为了避免直流偏压经过放大后,造成后级的电饱和,而使放大后的信号产生失真.因此为了避免放大器饱和,在这一级的放大增益应该小于30.一般说来作为前级放大单元必须具有高输入阻抗.高共模斥拒比等基本特性,在这里我们采用了低功耗,高精度的仪表放大器-----AD620,AD620输入端采用超β处理技术,具有低输入偏置电流、低噪音、高精度、较高建立时间、低功耗等特性,共模抑制比可达130dB,非常适合作为医疗仪器前置放大器使用。

其增益可调(范围约1~1000倍),并可由公式

G=1+(51+51)/15=7.2

来确定。

为防止前置放大器工作于饱区和或截止区,其增益不能过大。

实验表明:

10倍左右效果较好。

因此,我们采用了此方案。

方案三:

采用仪表放大器INA128.其具有良好的共模输入抑制能力,共模抑制比大于120DB,而且只需外接一个电阻就可调节增益..INA128对直流电源的要求低,甚至只需2.25V的直流电源电压就要表现出色的功能特性,静态电流只有700uA,功耗低,但INA128的价格昂贵,因此我们不采用此方案。

(3)心电信号处理部分

心电信号属于低频小信号,易受干扰,因此必须对所采集的信号进行高通,低通,陷波的处理.因此我们将心电信号处理部分的方案主要放在滤波部分和陷波部分。

1、滤波部分

如图3所示,带通滤波由双运放集成电路LM324构成。

LM324具有高精度、低偏置、低功耗等特性,片内集成了两个运放,可灵活组成各类放大和滤波电路。

由于心电信号频带主要集中在0.05~100Hz左右,频带较宽,为此,采用LM324的两个运放分别设计二阶压控有源高通和低通滤波器并组合成带通滤波。

其中,U6A、C6、C7、R8、R9构成高通滤波器,为不损失心电信号的低频成分,其截止频率设计为

f=1/2π

=0.05Hz。

U6B、R10、R11、C8、C9构成低通滤波器,同样,为不损失其高频成分,截止频率设计为

f=1/2π

=500Hz

放大电路由LM324、R12、R13构成。

考虑到心电信号幅度约为0~4mV,而A/D转换输入信号要求1V左右,因此,整个信号电路的放大倍数需1000倍左右。

而前置放大约10倍左右,因此本级放大倍数设计为100倍左右,即G=1+R12/R13≈100。

其中低通滤波又分有源滤波和数字滤波。

图三为低通滤波的幅频特性.

图三

有源滤波方案:

1一阶滤波。

其结构相对简单,且采用了集成运算放大器,它具有高输入阻抗和低输出阻抗,同时由于具有缓冲作用效果比无源滤波器好,幅频特性曲线可达到-20db/10倍频,但要想实现更明显的滤波效果。

此方案仍未满足要求。

2二级滤波采有类似的结构,但幅频特性曲线能达到-40db/10倍频程,滤波效果比一阶明显。

3二级以上的滤波。

它是由多个一阶和二阶滤波器组成的,效果自然要比上述两种滤波好,但其电路比一阶和二阶复杂,所需电阻电容较多,而电阻电容的实际值很难与设计要求精确匹配,有时为了匹配需要好几个电阻的串并联,同时由于不能避免环境因素对电阻电容的影响,因此用的电阻电容越多,误差就越大,导致实际的滤波效果与设计时所期望的存在一定的差距。

本设计只对截止频率的精确度有要求,而对系的统的频域衰减率未做特别的要求,因此可以不必选择高阶滤波方案。

数字滤波方案:

数字滤波的优点是参数可调节性好,可以通过更改程序中的参数对截止频率进行精确的调节,由于参数不会随温度等环境因素改变,从而精确度得到保证。

因此我们选择了此方案。

图四

2、陷波处理部分

工频干扰是心电信号的主要干扰,虽然前置放大电路对共模干扰具有较强的抑制作用,但有部分工频干扰是以差模信号方式进入电路的,且频率处于心电信号的频带之内,加上电极和输入回路不稳定等因素,前级电路输出的心电信号仍存在较强的工频干扰,所以必须专门滤除。

方案一:

采用自适应相关模板法。

利用工频干扰的相关特性,从原始输入信号中得到工频干扰的模板,进而原始输入信号中减去工频干扰的模板,达到滤波干扰的目的。

但这种方法算法虽然简单但程序设计比较复杂,所以不采用此方案。

方案二:

采用模拟双T陷波。

通过图五幅频特性可知,对于W=W0的其他频率信号,通过双T网络具有较强的负反馈,因为双T网络具有良好的滤波特性,在仪表的电源噪声滤波电路中获得了较为广泛的应用,又因为双T网络具有比RC串、并联网络更好的选频特性,故我们选用了此方案。

图五

3、电平移位电路

 

图七

设Vin=0V时,V0=V1;

Vin=5V时,V0=V2。

根据KCL原理,利用下列二元一次方程组求出R1、R2:

V1/R0=(5-V1)/R1-V1/R2

V2/R2=(5-V2)/R0+(5-V2)/R1

其中,第一路V1为脉冲序列的低电平,电压为1V,

V2为脉冲序列的高电平,电压为V1+0.2V;

第二路V1为脉冲序列的低电平,电压为1.9V,

V2为脉冲序列的高电平,电压为V1+0.2V

设R0=51KΩ

解此方程组可得R1、R2列如下表:

一路

二路

R1/KΩ

10.00

5.263

R2/KΩ

2.632

3.448

V1/V

1.0V

1.9V

V2/V

1.2V

2.1V

四、扩展电路图

图八

五、软硬件电路设计:

(一)、软件图

 

六、电源设计

(1)+-15V电源(0.7A)-15V电源电路图如图所示

对于滤波电容的选择,要考虑:

一、整流管的压降;二、815/7915最小允许压降

;三、电网波10%。

从而允许纹波的峰峰值

按近似电流放电计算,并设

(通角),则

C=

选取滤波电容C=2200

/30V

(2)+-5V电源(1A)电源电路如图所示

允许的最大纹波峰峰值

C=

选取滤波电容C=4700

/16V

(三)+-12V电源设计同上,电路图如下:

七、测试报告(仪器种类、型号、观测现象、测试步骤)

(一)、测试仪表

100M的模拟示波器、数字万用表、函数波发生器、EDA系统开发工具、仿真器、PC机等。

(二)、调试过程及功能实现

调试过程:

1、心电信号放大部分的调试

(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,为了能够看到高通滤波的效果,我们用信号发生器产生的三角波作为它的输入信号,经过仔细的调整,我们发现当频率低于0.05Hz的时候,电压衰减很大,波形也变得非常的不稳定,且失真,因此基本达到我们设计的要要求。

(3)我们用同样的方法设计了低通滤波器。

(4)50Hz陷波电路的调试

为了防止50Hz的工频对电路的干扰。

对工频进行陷波提高电路的稳定性,

利用双T二阶带阻滤波电路进行陷波。

电路如下图所示:

根据理论值:

c为1uF,R2=160,R1=16k,R5=R6=2k,R4=4k。

在调试的过程中,根据理论值进行测试,陷波频率偏离原设计频率较远在75Hz,在电容不变的情况下,经过多次对电阻调试,最后选中R2=180,刚好将50Hz的中心频率陷掉,范围在48~53Hz之间。

达到题目给定要求。

(5)主放大电路利用同相比例运放两级放大。

2、采集电路调试在采集电路数据输入部分加入标准信号,由单片机将其写入RAM指定的地址中,在将其读出后显示在LED显示。

3、显示电路的调试调节T型电阻网络,用高精度电位器确定电阻阻值,并进行微调,结果显示正常。

功能实现:

(1)电压放大倍数与输出电压动态范围测试通过功率函数发生器产生一个小幅值的电压信号作为输入,用示波器来检测其输出波形,读取输出波形的幅值,得到增益测试数据如下表,

NO

1

2

3

4

5

输入

20mV

20.6mV

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的三角波,频率调节范围为50——600Hz,用示波器测量输出电压峰-峰值,所得低通滤波电路测试数据如下表:

NO

1

2

3

4

5

频率

53Hz

62

100Hz

350Hz

550Hz

输出电压

5V

5.11V

4.98V

4.05V

3.21V

增益

0

-0.01

-0.26

-1.20

-3.86

(3)频带内响应波动指标测试

为了减小工频干扰,我们引用了陷波电路,所以对50Hz左右的信号衰减是较大的,自然也就能满足题目对“频带内响应波动在+-3dB之内“的要求。

(4)直流稳压电源测试在给放大器供电情况下,输出交流噪声有效值为0.1mV.

(5)共模抑制比测试

由于选用的是仪表放大器AD620,它的性能指标已说明它的共模抑制比能达到130dB,因此能满足题目对“共模抑制比大于等于60dB”的要求。

(6)人体心电信号测试

C语言程序:

//-----------------------------------------

//二路信号自动存储

//-----------------------------------------

#include

#include

#include

#defineucharunsignedchar

#definePAXBYTE[0x7ffc]//定义8255

#definePBXBYTE[0x7ffd]

#definePCXBYTE[0x7ffe]

#defineCOM8255XBYTE[0x7fff]

sbitcunchukey=P1^0。

//存储开启按钮

sbitstart=P1^1。

//start输出

sbitdispkey=P1^2。

//显示按钮

sbitclrkey=P1^3。

//清零按钮

sbiteoc=P1^4。

//判断是否转换完,转换完后eoc=1

sbiton_off1=P1^5。

//采样通道选择

sbiton_off2=P1^6。

//输出通道选择

ucharxdatatable1[8191]。

//_at_0xc000。

//定义62256

ucharxdatatable2[8191]。

//_at_0xa000。

ucharclktime。

//控制200us输出

biterror=0。

//有存储之后才能有显示,即error=1。

bitmark。

//存储信号锁定

intcuntime1,cuntime2。

//存储计数

cunchu()。

//存储数据

data_display()。

//数据输出

intin()。

//初始化

clr()。

//清空所有数组空间

on_off_con()。

//通道控制

start_con()。

//start信号控制

voiddelay(ucharx)//延时

{

while(x--)。

}

 

//--------------main----------------

main()

{

intin()。

while

(1)

{

cunchu()。

data_display()。

clr()。

on_off_con()。

}

}

//---------------clear---------------------

clr()

{

inti。

if(clrkey==0)

{

delay(248)。

if(clrkey==0)

{

mark=0。

error=0。

for(i=0。

i<8191。

i++)

{

table1[i]=0。

table2[i]=0。

}

}

while

(1)

{if(clrkey==1)

break。

}

}

}

//---------------intin--------------------

intin()

{

COM8255=0x90。

on_off1=1。

//初始化模拟开关

on_off2=0。

 

}

//---------------on_off_con-------------------

on_off_con()

{

on_off1=!

on_off1。

}

//---------------startcontrol------------

start_con()

{start=1。

delay

(2)。

start=0。

delay(5)。

for(。

)//判断是还转换完

if(eoc==1)

break。

//转换完后跳出

}

//---------------cunchu------------------------

cunchu()

{

if(cunchukey==0||mark==1)

{if(cunchukey==0)

delay(100)。

if(cunchukey==0||mark==1)

{

mark=1。

error=1。

start_con()。

//调用start脉冲信号

if(on_off1==1)//判断通道

table1[cuntime1++]=PA。

else

table2[cuntime2++]=PA。

}

if(cuntime1>=8191&&cuntime2>=8191)

mark=0。

while

(1)

{if(cunchukey==1)

break。

}

}

}

//------------------data_display-------------------

data_display()

{

bitdisp_flag=1。

//输出通道切换位

intdisptime1,disptime2。

//输出计数

if(dispkey==0&&error==1)//从存储RAM输出

{delay(100)。

if(dispkey==0)

{

while

(1)

{

if(disp_flag)

{on_off2=1。

//开输出通道1

PB=table1[disptime1++]。

delay(10)。

}

if(!

disp_flag)

{on_off2=0。

//开输出通道2

PB=table2[disptime2++]。

delay(10)。

}

disp_flag=!

disp_flag。

if(disptime1>=8191&&disptime2>=8191)

{disptime1=0。

disptime2=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。

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1