资源描述
基于仿真平台的心电采集系统设计
心电采集系统是综合了模拟和数字电路知识及单片机知识与一体的系统设计产物。本次课程设计的目的在于开发一个综合性实验课程,让生物医学工程专业学生了解专业特点,巩固硬件和软件方面的知识,提高解决实际问题的能力。
本次设计将单片机纳入系统中,利用硬件与软件结合实现了系统的简易化设计。在了解心电信号特性的前提下,整个电路的设计以符合心电采集电路的基本要求来完成。电路逐次分解为放大滤波电路和单片机电路两个部分,并利用了仿真开发平台PROTEUS实现了电路和单片机的仿真和调试,单片机程序设计运用KEIL C51集成开发环境进行编译。最后将电路仿真和程序设计集中起来即构成了整个心电采集系统。
整个设计通过仿真方便的实现了电路参数的选择,获得最佳参数配置。而且PROTEUS和KeilC51的结合实现了单片机仿真,为今后单片机系统开发提供了一个很好的仿真工具。本次毕业设计结果利于更多的同学强化自身的知识,了解如何将模拟电路,数字电路,单片机应用等结合在一起来完成一个系统设计的流程,学习如何分析问题、找到解决问题的方法,锻炼自己的思维以及动手能力。
第一章 绪论
第一节 设计思想
在这个科学发展速度很快的时代,各项技术都在突飞猛进的发展。我们作为当代大学生,应该不断地强化自己的能力,在大学学习期间,通过各项课程学习增长知识,通过实验强化知识,提高自己的到手能力。而本设计主要就是通过将模拟电路,单片机运用及软件等相关知识结合起来制作出一个简易的心电数据采集系统,这样不仅可以考察同学对于放大器运用的了解程度,也可以进一步加强大家对单片机知识学习的兴趣,了解更多的专业知识,巩固自己的学习成果。
整个系统主要是以单片机为中心,将数据采集电路,数据采集系统以及显示系统结合起来。通过对于整个系统的设计,同学了解心电信号是如何一步步经过处理显示到PC机上的。首先了解一下医学信号放大器的特点,掌握其相关指标。其次,了解如何除去信号的干扰,以及滤波电路设计的思路。 最后主要就是数据采集及转换电路,了解整个电路的发布,及相关元器件的性能,怎样知道数据的A/D转换。
第二节 设计要求
心电信号的特点:信号十分微弱,常见的心电频率一般在0—100Hz之间,能量主要集中在17Hz附近,幅度小于5mV,心电电极阻抗较大,一般在几百千欧以上。在检测生物电信号的同时存在强大的干扰,主要有电极移动引起基线漂移(一般小于1Hz),电源工频干扰(50Hz),肌电干扰(几百Hz以上)。电源工频干扰主要是以共模形式存在,幅值可达几V甚至几十V,本设计要求心电放大器必须具有很高的共模抑制比。而电极移动引起基线漂移是由于测量电极与生物体之间构成化学半电池而产生的直流电压,最大可达300mV,那么心电放大器的前级增益不能过大,或者需要采用超低频的交流放大器。由于信号源内阻可达几十KΩ、乃至几百KΩ,所以,心电放大器的输入阻抗必须在几MΩ以上。不仅要求输入阻抗,对CMRR也要有80dB以上的共模抑制比。同时在有源低通滤波器中要求能够有效地滤除与心电信号无关的高频信号,最后在设计要求对某一频段的信号能够抑制或衰减。通过系统调试,最后得到放大、无噪声干扰的心电信号。在模数转换,数据采集一块,系统对于这个过程要求利用单片机来实现数据采集,然后再将其送入PC机
综上在考虑成本,环境因素,测试条件等情况下,设计要求要能够做到简易而且可以实现基本功能。因此在设计过程中,需要仔细对所选用的元器件进行分析,了解其工作特性。在电路的设计上面,再通过定量运算,确定各个电路在于器件选用上的参数,考虑器件匹配,误差等相关问题,考虑这些因素的影响问题。在仿真调试过程中,应尽量做到一步一步的仔细操作,保证结果准确性,然后分析结果,由此来进行整个设计的制作。
第三节 总体框架
单片机处理
三阶低通滤波电 路
50HZ带阻滤波电 路
导联切换
放大电路
信号采集
A/D转换
右腿驱动电 路
PC显示
图1-1 总体框架图
一、放大器电路及滤波电路
放大器是硬件电路的关键所在,设计的好坏直接影响信号的质量,从而影响到仪器的特性;就共模信号而言,设计主要利用右腿驱动电路实现对于信号的处理,消除电路中的共模电压,提高整个电路共模抑制比;在高频滤波的处理上,因为由常识得知,常见的心电频率一般在0--100Hz之间,能量主要集中在17Hz附近,幅度微小,大概为5mV,所以要对100Hz以内的信号进行保护,从而把100Hz以外的高频信号全部滤除;工频50Hz的陷波电路,设计主要是采用了双T带阻滤波电路。
二、数据采集电路
整个设计的数据采集核心主要是以AT89C2051和ADC0809组成的,ADC0809的地址选择端A、B、C都接地,所以ADC0809的数据采集通道只有IN0被选通。16路模拟信号连接到多路选择模拟开关HCC4067后,即可通过地址选择端A、B、C、D进行选择,每一次选通一路,选通的通道经IO COM X和ADC0809的IN0相连,以进行A/D转换。P2.7(地址总线最高位A 15)可作为A/D转换的启动开关,P2.7为低电平有效。在启动A/D转换时,可由写信号WR和P2.7控制ADC0809的地址锁存和转换启动。而在读取转换结果时,则由读信号RD和P2.7控制ADC0809的OE信号[2]。
第二章 系统电路设计
第一节 放大电路设计
放大器是硬件电路的关键所在,其噪声大小直接影响信号的质量,特别是多级放大电路的前置级等效输入噪声决定决定信号的整体质量。根据心电信号的特点,前置级应该满足下述要求:
(1)高输入阻抗。被提取的心电信号是不稳定的高内阻源的微弱信号,为了减少信号源内阻的影响,必须提高放大器输入阻抗。一般情况下,信号源的内阻为100kΩ,则放大器的输入阻抗应大于1MΩ。
(2)高共模抑制比CMRR。人体所携带的工频干扰以及所测量的参数以外的生理作用的干扰,一般为共模干扰,前置级须采用CMRR高的差动放大形式,能减少共模干扰向差模干扰转化。
(3)低噪声、低漂移。主要作用是对信号源的影响小,拾取信号的能力强,以及能够使输出稳定[3]。
一、三运放差分电路
如图所示的同相并联三运放结构,这种结构可以较好地满足上面三条要求。放大器的第1级主要用来提高整个放大电路的输入阻抗。第2级采用差动电路用以提高共模抑制比。
。
图2-1 三运放差分放大电路
图4是将A3、A4两个同相输入运放电路并联,再与A5差分输入串联的三运放差分放大电路,其中A3、A4是组成的同相差动带增益的电压跟随器可以大大提高电路的输入阻抗,从而对共模信号产生高抑制比。为了取得最佳的低频响应,必须将该级的输入端直接耦合到电极上,因此我们将该级的增益设计得较低,以减小该级的输入偏流,避免使电极极化产生高压。根据虚短、虚断的概念,我们可以知道由A3、A4构成的前置放大电路仅对差模信号有放大作用,差模放大倍数为(Rp+2R1)/ Rp倍。这样的电路有以下几个优点: A3、A4提高了差模信号,差模信号按差模增益比放大,远高于共模成分(噪声),而在此级中,同时 A3、A4的作用让共模信号受到抑制,从而进一步提高共模抑制比,差模信号与共模信号比大大提高,使这个电路的信噪比都提高;决定增益的电阻(R1、Rp、R3)对共模抑制比Kcmr没有影响,因此电阻的容差不重要,R1、R3的失配仅使两输出端之间的差模增益失配,与Kcmr相比,这一点并不重要。电路的另一个特点是对共模输入信号没有放大作用,共模电压增益接近于零。这个因素不仅与实际的共模输入有关,而且也与A3和A4的失配电压和漂移有关。如果A3和A4有相等的漂移速率,且向同一方向漂移,那么漂移就作为共模信号出现,没有被放大,还能被第二级抑制。这样对于A3和A4的漂移要求就会降低。A3和A4前置放大级的差模增益要做得尽可能高,相比之下,第二级(A5)的漂移和共模误差就可以忽略,对放大器的要求就可以大大降低。当R3=R4,R5=R6时,两级的总增益为两个差模增益的乘积,即:
Avd=((Rp+2R1)/Rp)(R6/R4) (式2-1)
由此可知,上述电路具有输入阻抗高,共模抑制比高等优点
二、集成运算放大器
当前,随着线性集成器件――集成运算放大器的迅速发展[5],各种高性能的集成运放步断出现,生物电放大器都采用集成器件进行设计。一般说来,集成化仪用放大器具有很高的共模抑制比和输入阻抗,所以在传统的电路设计中都是把集成化仪器放大器作为前置放大器。然而,绝大多数的集成化仪器放大器,特别是集成化仪器放大器,它们的共模抑制比与增益相关:增益越高,共模抑制比越大。而集成化仪器放大器作为心电前置放大器时,由于极化电压的存在,前置放大器的增益只能在几十倍以内,这就使得集成化仪器放大器作为前置放大器时的共模抑制比不可能很高。同时,在集成器件构成的前置电路设计中有个很大的障碍,就是集成运放本身的噪声比分立元件的噪声大,使得电路无法获得低噪声。这就不能达到了放大电路所需要的低噪声的要求。而在前置放大器的输入端加上隔直电容(高通网络)来避免极化电压使高增益的前置放大器进入饱和状态,但由于信号源的内阻高,且两输入端不平衡,隔直电容(高通网络)使等共模干扰转变为差模干扰,结果适得其反,严重地损害了放大器的性能。
为了实现心电信号的放大,设计电路如下:
图2-2 采用INA128进行心电信号的放大
1. 前级采用运放A1和A2组成并联型差动放大器。理论上不难证明,在运算放大器为理想的情况下,并联型差动放大器的输入阻抗为无穷大,共模抑制比也为无穷大。更值得一提的是,在理论上并联型差动放大器的共模抑制比与电路的外围电阻的精度和阻值无关。
单路宽带高输出驱动运算放大器TLC071:
图2-3 TLC071引脚图
2. 阻容耦合电路放在由并联型差动放大器构成的前级放大器和由仪器放大器构成的后级放大器之间,这样可为后级仪器放大器提高增益,进而提高电路的共模抑制比提供了条件。同时,由于前置放大器的输出阻抗很低,同时又采用共模驱动技术,避免了阻容耦合电路中的阻、容元件参数不对称(匹配)导致的共模干扰转换成差模干扰的情况发生。
3. 后级电路采用廉价的仪器放大器,将双端信号转换为单端信号输出。由于阻容耦合电路的隔直作用,后级的仪器放大器可以做到很高的增益,进而得到很高的共模抑制比。
从理论上计算整个电路的共模抑制比为:
(式2-2)
式中:CMRTotal或CMRRTotal-放大器的总共模抑制比;CMR1-第一级放大器的共模抑制比;CMR2或CMRR2-第二级放大器的共模抑制比;A1d、A1c、A2d和A2c-分别为第一级放大器和第二级放大器的差模增益和共模增益。
经过实际测量,图2-1所示的电路采用图中所给出的参数时,电路的共模抑制比在120dB以上。
三、方案比较
通过对前面两个放大器特点的阐述可以看出,如果用INA128则在抑制共模信号上面有独特的效果,特别是在第一级上其阻抗可以达无穷大,从而基本可以完全抑制共模信号。但是考虑本次设计目的来说,采用LM324则更为理想。因为三运放差分电路具有典型性,简单易懂,利用LM324可以让同学巩固学习同相,差相放大器时的相关知识点,了解其工作的原理,知道如何利用他去实现信号的放大。所以在选择放大电路的时候运用了三运放差分电路,来进行信号的放大。在成本考虑上面,INA128的价格也比LM324贵。综合考虑多方面因素,在本次设计过程中选择LM324较为有利。
四、放大电路参数设定
根据图2-1实现确定放大电路中的电阻R1—R6,在确定各电阻元件之前,必须先确定前后两级的增益分配。如前所述,A1、A2前置级的增益要尽量高,对于前面一级增益够大对于整个电路的共模抑制比提高都有益。我们通常这一级增益选80左右,第二级采用差分输入,增益可设置为10,这样整个电路放大倍数可以达到800倍。为此可令=10,即:
R3=R4=R5
= (式2-3)
则放大器一级为100,即||=100,要求确定电阻R1—R6的阻值。
可以先确定R3,R4的值,然后在确定其他各项参数,因为在前面我们知道,R1,R3对共模抑制比不会有很大的影响,所以这两个元件的匹配问题可以暂时不用考虑。而在前面的R1,R2的匹配问题,我们可以通过一个桥式电路进行测量,选择出尽量匹配地电阻。
在选择放大器的过程中,首先通过测试放大器的共模抑制比,选择接近的放大器来进行设计。实验所选用的电阻值分别为R1=R2=22K,Rp=10K,R3=R5=R4=10K,R6=4.7M.
五、放大器仿真设计
图2-4 放大电路仿真图
确定放大电路中的数值后,将设计的放大电路在PROTEUS当中进行还原,然后设定各个元件所需的参数值。然后再利用开发平台中的DEBUG进行仿真测试。在以上电路的中,整个电路的放大倍数设计为800,信号输入的频率为100HZ。
结果如下:
图2-5 结果图
仿真测试中主要运用正弦信号。经过测试,对比两个波形,计算得出整个信号的放大倍数为890。分析过程,发现计算误差存在,元件误差如电阻,存在一定影响。
第二节 抗共模抑制电路设计
对于共模信号的处理,我使用右腿驱动电路,来消除电路中的共模电压,提高整个电路共模抑制比;然后在高频滤波的处理上,因为由常识得知,常见的心电频率一般在0--100Hz之间,能量主要集中在17Hz附近,幅度微小,大概为5mV,所以要对100Hz以内的信号进行保护,从而把100Hz以外的高频信号全部滤除;工频50Hz的陷波电路,设计主要是采用了双T带阻滤波电路。
一、共模抑制比定义
我们通常运用共模抑制比来衡量一个差分放大电路对共模信号的抑制能力。其定义为放大电路对差模信号的电压增益与对共模信号的电压增益之比的绝对值,即
=||
差模电压增益越大,共模电压增益越小,则共模抑制能力越强,放大电路的性能越优良,因此希望值越大越好。共模抑制比也可以用分贝表示:
=20lg||dB (式2-4)
二、有源屏蔽驱动电路
从与人体相接触的电极到测量系统,通常有大于1M的距离。例如ECG,EEG体表电极到前置放大器之间有数根约1M的导联引线。而导联引线用屏蔽电缆,这样,信号通过电缆传输时,在信号线与电缆屏蔽层之间就存在这分布电容。这样可能就使共模电压出现不等量的衰减,让放大器的CMRR下降。
有源屏蔽驱动电路也可以用来消除共模电压。有源屏蔽驱动电路是将差动式传感器的两个输出经两个运算放大器构成的同相比例差动放大后,使其输入端的共模电压1:1地输出,并通过输出端各自电阻(阻值相等)加到传感器的两个电缆屏蔽层上,即两个输入电缆的屏蔽层由共模输入电压驱动,而不是接地,电缆输入芯线和屏蔽层之间的共模电压为零,这种电路就是有源屏蔽驱动电路。它消除了屏蔽电缆电容的影响,提高了电路的共模抑制能力,因此经常使用于差动式传感器,如电容传感器、压阻传感器和电感传感器等组成的高精度测控系统中。
图2-6 屏蔽驱动电路
屏蔽驱动技术是以提高高频率信号的实际输入阻抗,在使用1米长的屏蔽线作为输入引线时,对10KHz的信号来说输入阻抗可以提高三倍。屏蔽驱动对于减少50Hz共模干扰也很有好处。
三、右腿驱动电路
我们知道,人体本身通过各种渠道从环境中拾取工频50HZ交流电压,在心电测量中成为交流干扰,这种交流共模干扰通常在几伏以上,为消除干扰,一般采用右腿电极经过电阻与放大器接地端相连,降低人体的共模电压,这是右腿接地方法。而这里我运用的是右腿驱动电路,原理是采用以人体为相加点的共模电压并联负反馈,其方法是取出前置放大级中的共模电压,经驱动电路倒相放大后再加回体表上,一般的做法是将此反馈共模信号接到人体的右腿上,所以称为右腿驱动。
图2-7 与并联型差动输入前置放大器相配合的驱动电路
采用右腿驱动电路,能够使50HZ共模干扰电压降低到1%以下,而且对于50HZ干扰的抑制并不以损失心电图的频率成分为代价(如果用选频电路,则去掉了心电信号中的50HZ分量),与右腿接地比较起来,右腿驱动技术抑制交流干扰的效果更佳;但是由于右腿驱动电路存在交流干扰反馈电路,而可能有交流电流流经人体,成为不安全因素,限流电阻R不能太小,通常取1MG以上。
四、方案比较
屏蔽驱动主要适合于传感器等的高精度测控系统中,而且屏蔽驱动在电路设计比较复杂,还要涉及到体积较大的电感,虽然也可以去除50Hz的干扰信号,但是采用右腿驱动电路会使电路更简单、实用,电路中使用了较为简单的电压并联负反馈电路,使实际中存在的共模信号得到抑制,还提高了CMRR。所以在设计中右腿驱动电路更适合在此应用。
第三节 抗工频干扰电路
一、工频50HZ干扰滤除电路
工频干扰是心电信 号的主要干扰,虽然前置放大电路对共模干扰具有较强的抑制作用,但部分工频干扰是以差模信号方式进入电路的,加上电极和输 入回路不稳定等因素,前级电路输出的心电信号仍存在较强的工频干扰,所以必须专门滤除。带阻滤波器电路是用来抑制或衰减某一频段的信号,而让该频段以外的所有信号通过。这种滤波电路也叫陷波电路,经常用于电子系统抗干扰[8]。
如何实现带阻滤波器的功能,,首先要了解双T网络的频率响应的原理。
双T网络由两个T型电路并联组成,其中一个T型电路由两个电阻R和一个电容2C组成,而另一个由两个电容C和一个电阻R/2组成。信号经这样两条支路送到输出端。设双T网络的传递函数H(jw),H(jw)=1.当信号频率很高时,电容C接近短路,信号通过两个电容传递到输出端,此时仍有H(jw)≈1,当信号频率很低时,电容C接近开路,信号就通过两个电阻传送,仍使H(jw)≈1,所以,如果适当地选取R,C元件的参数,便可以使得在中间的某个频率f0处通过C,R/2,C支路和R,2C,R支路传送到输出端的信号大小相等,相位相反,从而相互抵消,总的输出(在f0时)为零,f0称为双T网络的谐振频率[6]。
在设计双T网络的中,先根据运算,确定元件大小,然后根据实际情况来进行组合。
二、双T滤波器参数设计
下面来介绍RC双T带阻滤波电路(如图2-8)。RC双T电路的传递函数可推得:
图2-8 RC双T带阻滤波电路
(式2-5)
在设计中采用了不对称RC带阻电路,其参数根据需要和经验确定,在文献双T网络
有源滤波器性能分析(汪克仁编)有具体介绍。得到一种参数规律:
则F(S)中的各个参数为:
将各个参数代到F(S)式中,则:
(式2-6)
式中:
由于在电路的设计中,使用了不对称RC双T带阻滤波器,所以要想获得最好的效果,就启用=0.356时的参数。设R=5K,则由公式(5)得到:
中心角频率=50Hz
为方便仿真,元件的参数我分别取一下值:
C1=1.265μF(取1μF)
C2=0.4217μF(取0.1μF)
C3=1.40415μF(取1μF)
R1=R=5K(取5.1 K)
R2=9R=45K(取51K)
R3=0.75R=3.75K(取4K)
可以通过数值的改变而改变,但是只要可以保证电路的可靠性,在元器件的选择上可以有很多变化的。
三、抗工频电路仿真测试
图2-9 仿真图
首先在PROTEUS中将电路图编辑,然后进行测试。
结果如下:
当输入的信号为50HZ时
图2-10 输入信号为50HZ时结果图
50HZ信号没有被完全滤除,但是双T滤波器仍然可以正常工作。对于误差的分析,说明在电路中元件参数的设定存在一定的误差导致实验结果存在误差。所以应该认真计算公式得到相应的参数。
第四节 高频信号滤波电路
一、滤波电路原理
由RC元件与运算放大器组成的滤波器称为RC有源滤波器,其功能是让一定的频率范围内的信号通过,抑制或急剧衰减此频率范围以外的信号。可用于信息处理,数据传输,抑制干扰等方面。具有理想幅频特性的滤波器是很难实现的。只能用实际的滤波器的幅频特性去逼近理想的特性。常用的方法是巴特沃斯(Butterworth)逼近和切比雪夫(Chebysher)逼近。滤波器的阶数N越高,幅频特性衰减的速度越快,就越接近于理想幅频特性。
通过数字信号处理的学习,我了解到BUTTERWORTH型滤波器具有单调的平稳的幅度响应,但其阻带区衰减比CHEBYSHEVE型慢,实际的滤波器电路不但都具有不理想的幅度响应,而且都产生相位移,即非线性的相位响应。而在这点上,CHEBYSHEVE型与BUTTERWORTH型相比,具有更为严重的非线性相位响应,所以在这点上,我们采用的主要是BUTTERWORTH型。[9]
如图10所示,两个虚线框内分别为一阶和二阶低通滤波器,连接起来就是三阶低通滤波器,也就是相当两的滤波器级联,它们的传输函数分别是和。在参数归一化的前提下,该电路的传输函数满足=·。所以得到以下式子:
图2-12 三阶巴特沃斯滤波器
二、三阶巴特沃斯滤波器参数设计
根据图2-12取节点1、2、3可得:
根据运放的特点:
解节点方程可得电路转移函数:
(式2-7)
根据巴特沃斯逼近原理,若有:
则有成立,满足三阶巴特沃斯低通滤波器的条件,可实现三阶低通滤波。
这样,先取截止频率s=628rad/s=f=100Hz,信号源内阻为1KΩ。则有
R=1·1KΩ=1KΩ
R1=R2=·1KΩ=500Ω(取510Ω)
C=C2=1/(628·1·1KΩ)=1.59μF(3.3μF)
C1=1/(628·4·1 KΩ)=0.39μF(0.1μF)
在这里我们仍然采用LM324作为放大器进行工作。
图2-13 高频信号滤波电路图
三、仿真测试
电路图如下
图2-14 滤波仿真图
由于,本设计设置截止频率为100HZ,则输入不同的两个信号来进行测试比较
当输入信号为120HZ时:
图2-15 输入信号为120HZ时效果图
当输入信号频率为60HZ时
图2-16输入信号为60HZ时效果图
比较以上两个结果可以发现,高于100HZ的信号被明显抑制,但是抑制效果不是很好,示波器上有细微波形出现,说明元件参数仍然有一定影响。
第三章 数据采集系统程序设计
第一节 数据采集系统元件简介
在进行设计前,首先简要了解一下AT89C2051和ADC0809的引脚图,以及相关特性。
(1)AT89C2051:
89C2051是由ATMEL公司推出的一种小型单片机。其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,其程序的电可擦写特性,使得开发与试验比较容易[1]。
(2)ADC0809:
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
电路设计步骤为:
ADC0809的8路模拟输入端接入单片机的P1.0~P1.7端口,8路模拟量选择(A,B,C):由p3.3,p3.5,p3.6;A/D转换器启动(AIE,START):由p3.4控制;采用中断方式读入数据,数据允许输入OE与ADC0809转换结束标志EOC连在一起,并通过反相器接89C2051的p3.2INT0,p3.0,p3.1作为串行接口接入PC机。
了解AT89C2051和ADC0809后首先数据采集就是将模拟信号源输出的模拟信号转换成数字信号,并送入计算机或单片机中保存和进行处理的过程。在数据采集的过程中,A/D转换接口是一个重要的环节。一个完整的数据采集系统应该包括模拟多路转换开关,信号调理电路,采样/保持放大器,A/D转换器和通道控制电路等。在应对数据采集和转换问题上,要注意一下几个问题:
(1) 采样速度 他决定了数据采集系统的实时性,采集速度越高,对模拟信号复原就越好
(2) 孔径误差 孔径误差即模拟量不断变化过程中,产生的不确定误差,为减小他,注意要求A/D转换器加油与之相对应的转换速度。
(3) 系统通过率 在数据采集系统中,采用低分辨率A/D,减少模/数转换环节及采用重叠方式采集时,可获得较大宽带的通过速度。
(4) 模/数转换精度
本采集系统的程序主要分成三部分:主程序、A/D转换程序和串行通信程序。其中主程序是总的控制程序,主要实现各单元初始化、控制采样和中断等:A/D转换程序主要完成采样启动、数据保存等功能;串行通信程序则用来在有上位PC通过串行口发送数据到单片机时引发中断响应,也可通过PC机通信地址和本单片机地址是否相符来判断PC机是否和本单片机通信,如果地址相符,则发送A/D采样的结果给上位机,如果不相符,则跳出中断[4]。
ALE
P0.7
P0.0
WR/
P2.7
RD/
INT1/
CLK REF
REFD7
D0
C IN7
B ..
A .
START IN0
ALE
OE
EOC
D Q/
CK Q
+
+
图3-1 A/D连接图
第二节 PROTEUS开发平台
Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机以及外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;提供了多种虚拟仪器,如示波器、逻辑分析仪、信号发生器等,便于调试;支持主流单片机系统的仿真。
(1)proteus 的工作过程
运行proteus 的ISIS 程序后,进入该仿真软件的主界面。在工作前,要设置view 菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单的Definecode generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source 菜单的Add/removesource files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。
(2)Proteus 软件所提供的元件资源Proteus 软件所提供了30 多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。
(3)Proteus 软件所提供的仪表资源
对于一个仿真软件或实验室,测试的仪器仪表的数量、类型和质量,是衡量实验室是否合格的一个关键因素。在Proteus 软件包中,不存在同类仪表使用数量的问题。Proteus 还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。
(4)Proteus 软件所提供的调试手段
Proteus 提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。对于单片机硬件电路和软件的调试,Proteus 提供了两种方法:一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。
对于总体执行效果的调试方法,只需要执行debug 菜单下的execute 菜单项或F12 快捷键启动执行,用debug菜单下的pause animation 菜单项或pause 键暂停系统的运行;或用debug 菜单下的stop animation 菜单项或shift-break 组合键停止系统的运行。其运行方式也可以选择工具栏中的相应工具进行[10]。
第三节 Keil C51集成开发环境简介
在系统程序的设计上面我利用的是Keil C51开发工具,其集成开发环境是u Vision系列,他提供了丰富的库函数和各种编译工具,能够对51单片机以及与51兼容的绝大部分单片机进行设计。他支持C51语言以及汇编语言。而且他还可以与PROTEUS进行仿真,对于电路的测试来说提供了很大的便利[7]。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C51工具包的整体结构,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中
在本设计中,主要是利用C51语言来进行设计,这样可以让程序的设计步骤更明显,也可以巩固C语言的知识。
第四节 数据采集系统程序流程
接下来就是数据采集系统程序的主要流程图
主程序流程图 中断服务流程图
开始
串行口设置
定时器设置
启动定时器
等待定时时间到
中断服务
送控制字
读入转化数据
保存转化数据
发送数据
返回
图3-2 流程图
在设计过程中,首先要设置好波特率,确定单片机中T0,T1谁作为定时器,然后一步一步根据流程图进行设计。
其中A/D转换的中断程序为:
void T0INT(void) interrupt 1
{
int i;
p34=~p34;
TH0=0xFD;
TL0=0xC0;
P34=0;
P0=0x5B;
for(i=0;i<6;i++)
{
_nop_()
}
ADL=P1;
P34=1;
ADH=P1;
SBUF=ADL;
While(TI==0);
TI=0;
SBUF=ADH;
While(TI==0);
TI=0;
}
串行接口通信流程
从机应答地址是否相符
从机应答地址是否相符
开始
初始化串行口
发送地址帧
从机应答地址是否相符
从机发送准备就绪
接收数据
接收完毕
结束
N
图3-3 串口通信流程图
第五节 单片机仿真测试
在对单片机进行仿真的过程中,需要将KEIL中已经编辑好的程序加入PROTEUS中进行联调,其简要步骤为:
把安装目录Proteus\MODELS下的VDM51.dll文件复制到Keil安装目录的\C51\BIN目录中。
修改Keil安装目录下Tools.ini文件,在C51字段加入TDRV5=BIN\VDM51.DLL(“PROTEUS 6 EMULATOR”)并保存。
打开Proteus,画出相应电路,在Proteus的“Debug”菜单中选中“Use Remote Debug Monitor”。
图3-4 数据采集电路仿真图
进入Keil的Project菜单Option for Target‘工程名’。在Debug选项中右栏上部的下拉菜单选中Proteus Driver。再进入Settings,机子IP设为127.0.0.1,端口号为8000。 在Keil中进行debug,同时在Proteus中查看直观的结果。这样就可以像使用仿真器一样调试程序了。在完成以上操作步骤以后,开始进行单片机的仿真测试,设计需要知道单片机是否可以正常进行数据采集:
主要利用KEIL C51先进行编程调试,成功后加入PROTEUS中进行仿真。
图3-5程序调试图
程序在KEIL C51中调试成功后,将程序链接PROTEUS加入AT89C51中运行:
图3-6 数据采集效果图
仿真调试的结果表明数据采集可以正常的进行。
第四章 总体测试与测试结果
在绘制图形的过程中,通常会遇到复杂的图形,而靠一幅图往往很难准确的表达设计者的意图,往往需要多幅图来共同表达一个设计。在本设计中,心电采集系统的电路则需要分为几个版块链接起来。而Proteus 能够支持一个设计有多幅图的情况。前面我们所绘图形是装在第一幅图中,这一点我们可通过状态栏中的“Root sheet 1”中得知,下面我们将虚拟逻辑分析仪添加到第二幅图(“Root sheet 2”)中。而要把两幅图连接,则需要单击绘图工具栏中的导线标签按钮,在图形编辑窗口,完成导线或总线的标注,将标注名移动至合适位置,通过标注,完成了第一幅图与第二幅图的衔接。本设计电路依次连接顺序为:
放大电路:
高频信号滤波电路:
50HZ工频干扰滤波电路
单片机数据采集电路
将以上电路进行连接后,加入KEIL C51进行电路的总体仿真,输入一个75HZ,1mv的信号,进行
总体测试结果,将共模信号和放大后的信号接入。
经过计算发现本电路的共模抑制比为100,相对于设计时的共模抑制比120少了20,结果分析计算发现元件自身的噪声,以及元件的不匹配性影响了整个共模抑制比的提高,在滤波和抗工频干扰上效果较为明显,而这个电路的放大倍数为890与设
展开阅读全文