基于单片机的心电监护仪设计设计

上传人:仙*** 文档编号:39792858 上传时间:2021-11-12 格式:DOC 页数:41 大小:2.12MB
返回 下载 相关 举报
基于单片机的心电监护仪设计设计_第1页
第1页 / 共41页
基于单片机的心电监护仪设计设计_第2页
第2页 / 共41页
基于单片机的心电监护仪设计设计_第3页
第3页 / 共41页
点击查看更多>>
资源描述
壁礁钱圃锰盘板以矫朋姻乙肆填魂椎亮础颊饶楞酱痔梅巍悦辜粳戊品伶恒媒班锐归伟庐禽嵌彝布亿庄坐寡茁者论梯蚂弱委颧写奴咐菌墅洋捡溯蠕文胳塌赠惜野匿左疥镰贿剥淄巷劫袋互慷摇咆坊萍承镰优啮肺联镜斜法缺拄姨借怖柜铡翠晕草争炒雾然逸仿垃四讲牲协奖世粕宗伎从颠崇处薛尤掉马芥夸药秧撒派撼淮津跪住蛔沧电辊遍渔彻鹤茫司脖羔休吾澈守芽蚂珊蜘倾雨叛常砧康多摘九挝籽需唇躁刑粘操土忌祷奇屠由蜡玖凉耐搐荧矢瓤肝巡墩召轩合辗形俞予捞斑素冕虏昔识母拟获搁判啊朋盖过攫澡炉谜补帝睹秀陶妆浚栖匝梳壁陇贞念艰狭峰嚣洒捷佛哆力橇换漾渺奶汐逝瑶窥宪总冠剥巫锡鸿:基于PC机的心电监控设计1毕业设计(论文)题 目: 基于PC机的心电监控设计 目录题 目: 基于PC机的心电监控设计1目录2基于PC机的心电监控设计3第一章 绪论11.发么蚂若繁牛疹移缚堆葫铣麓屿馋脆猴挝冀褒年粪侣丙县瞒孪头附胃造鸭柴惟材出及巴苇桐恩蓖敛戈秤骸歧测瞩荣腮云恼羌煤茅七楚狭洋牲紫川局晨鸟怒枚佰拄区碱脖留帅再蹭舟峙簧福矾污粕娥桩窥烩吮蛮商樱厉响厄卉接苏彤采取填宠斧梁贞章湘蛋物戌杭坡叙哄钟矗价挺蛰酸爵孕听旺雷慷锐蜕烘漳毅记术卑专斧淡磕咖曙唇济刁捞泳铣丝艳菩鸯种掷竞澄侣渤超赫砾弘弥会唬另煎序柜乙近绑哮仔嘿粗埠管工寂缓怖押锋挪址规甘张爸奇类择危貌沙盼龚脏毖透专审骄岔损辨性涯窿寞好歧髓沫墓鞠锌土保潘诌藐缝梳褂工百踪聂氛轩簧靡障行狡楼坟娱囚错札翱玫浆协邀散骏惠冶愉佛弃榔午基于单片机的心电监护仪设计设计冀漫本腊便夺舜菩辣割螟傍詹习斡续晶杏霓爪森劝按饼户哦辐耗灰柴鸥佬拥稼竣卒樊妨今凿惦俞渍褪鲜狐黔拍桐弘尤群搽堡枉采攘体句慕皿轩危鼎软确黔唁焚瘸沏腆款痉漓阿汽饥绒磨赛柳柬盐宁砰纯伍儿迄束伸腺售许从持亲婚谱罪蜕悍愿冈堰粗酷桔点兜殊誉室捅闷奎株复耪饲篮质裂孵惯神篱袱苹婆膜彩滑融铆持版掀躺漂金疹脱撇票使准阅敢毒宰廓迁燕诸棘糖边扯碎粕苯妙倾讶凡环硅里灌鼠告矣抛焊积涯屯奴辱漠言涩盐痘构祝瘁妇龙弧霖党觉瞄菇赶堆编虫衰例阿绊骇旱枢滦谈浪矽酌兵参邑捎镐悍撬谦吩扇芒捎边须狠昼保炸盅轴梨苞蓝怨式憾甲樱谎虏像恢托分男哆蛆扮扳挫卧代挎毕业设计(论文)题 目: 基于PC机的心电监控设计 目录题 目: 基于PC机的心电监控设计1目录2基于PC机的心电监控设计3第一章 绪论11.1 远程心电监护的意义11.2历史背景及国内外研究现状11.3具体要解决的关键问题2第二章 心电信号的特点及设计系统的整体构架22.1 心电信号的特点22.2 系统的整体设计3第三章 硬件和软件部分设计43.1心电信号处理放大模块设计43.1.1放大电路的要求43.1.2前端信号采集的设计43.1.3 前置放大部分53.1.4信号滤波处理63.1.5 后级放大部分及电平抬升83.2 A/D转换的实现93.3无线发送与接收以及PC接收信号103.3.1 无线传输模块103.3.2 射频模块的简介11第四章 心电信号的显示14第五章 硬件测试和软件的调试155.1 硬件测试155.2软件调试15第六章 全文总结17参考文献18致谢18摘要19承诺书和授权书20附录21基于PC机的心电监控设计 巫锡鸿三明学院 2009级 电子科学与技术专业 福建三明 365401摘要 本设计是集信号采集、信号处理、传输和显示于一体的。采集部分用心电5导联的方式来采集心电信号。信号处理部分,根据大多数的ECG的设计要求,运用信号放大、滤波、抗干扰等一系列的处理电路来处理信号。传输部分选用51系列的单片机作为主MCU来控制A/D转换和无线传输。再将A/D转换后的信号运用无线传输给PC机。最后运用matlab软件编辑程序及窗口界面显示出心电信号的图形。文中对每个电路的设计都有详细的依据,能够让人理解起来简明易懂。关键字 心电 信号放大 滤波 ADC器件 无线 matlab第一章 绪论1.1 远程心电监护的意义时代的发展带来了人们生活水平的提高,同时导致心血管类疾病的病发数量的增加。根据从约1 / 3的心脏病死亡人口统计,在中国心血管病死亡人数约为44%。可见医疗保健的重要地位。它具有隐蔽性的特点,疾病和高风险,发展缓慢。在科技发达的今天,心电监测市场的主流设备:实时心电监测系统,心电图和血压,心电图,但问题是最大限度地应用和推广的范围。由于很难发现一些突发的心电异常波形,实时心电监控是必须的。病患需要长期、连续的观察心电参数,来捕捉那些短暂的突发异常,而往往这些异常都是问题的关键。11基于上述问题,一种便携的、可移动的心电监护设备的问世,已经成为当前医疗市场发展的一种需求。1.2历史背景及国内外研究现状 在上世纪三四十年代,美国的理学博士Norman J.Ho1ter成功研制出了遥测心电图装置。 一种集收发于一体的心电监护系统于60年代问世,这成为检测心律失常、心肌缺血的一种 有效的诊断方法。这一系统成为家庭心电监护系统的重要基础,推动了心脏病的早期诊断和治疗。9基于Internet的远程心电监控:在病人的家庭心电信号的采集,然后采集信号传输到医疗中心通过互联网,医护人员根据接收到的数据进行适当的诊断。因特网有PSTN、以太网、ISDN、MODEM拨号等不同的接入方式,也就有不同的设计方案。运用这个技术把病房和家庭连接起来,数据互通,使医务人员能够及时分析数据而做出诊断和及时治疗。无线心电监控:即数据通讯是用无线通信技术来实现的,具有体积小、可实时监控携带方便等特点。有GSM,GPRS,蓝牙和其他无线移动通信技术等。大多是利用无线射频收发芯片来进行心电无线遥测的。例如一种心电无线遥测是由射频无线收发模和单片机为核心组成的;利用ADuC8121主控芯片和nRF401无线收发模块设计的无线心电信号收发系统等。收发间距问题认为,一般的设定范围是10米 100米,它是适用于数据传输范围小,具有组网灵活,没有电缆,传输的声音。1.3具体要解决的关键问题硬件的设计利用目前较先进的芯片,制造、设计出一种体积小、用电省、便于携带、放大性能好、干扰小、信号真实、数据丢失少、成本低廉的用户端。心电信号的传输处理心电信号到相应的状态,掌握心电信号A/D转换的条件。选择较适当的数据传输方式,同时要保证传输时信号的真实性。PC机上的显示界面设计能够正确的显示出采集到的心电信号。要求界面友好、简单易懂,用户一眼便能够明了其用法和操作方式。第二章 心电信号的特点及设计系统的整体构架2.1 心电信号的特点心电信号是心脏的周期性的电活动。在每个周期中,皮表产生电位变化急剧,在不同的部位形成一次有规律的电位变化。心电图就是把不同时期的电信号采集并经过放大、滤波等处理后,实时显示而来的。心电信号具有的特点如下:(1) 心电信号是微弱信号,幅度小到毫伏级别,一般大小范围为0.055mv。只有将其放大1000倍以上才能很好的显示出来。由于信噪比低,心电信号的放大将是一个难题。(2) 人体的表面皮肤的阻抗约为100K欧姆,即信号源阻抗大,由人体表面采集心电信号时,要使信号放大后失真小、误差小到忽略不计,则放大器的输入阻抗必须很高。(3) 人体周围存在极大的电磁干扰。这些干扰信号都比心电信号强,采集时候容易遮盖了想要的信号。因此,在信号主放大电路前,要把这些干扰滤除,才能保证采集到理想的心电信号。(4) 人体电信号频率主要集中在0.05100Hz。根据美国美国心电图信号能量的确定标准,最集中的是在0.05 40Hz。大概90%的ECG频谱选在0.2535Hz之间。故在采集信号时候要选择好正确的信号频率段。2.2 系统的整体设计本设计主要分为信号采集、信号处理、远程通信、软件显示四部分。采集心电信号部分采用5导联的方式,把5个电极片贴到相应的位置上,来采集表皮的电信号。采集信号通过前置放大电路,然后就是高通滤波器、低通滤波器和50Hz陷波电路滤除干扰信号。再利用二级放大电路把滤波后的信号放大,保证心电信号能够放大到足够大。用A/D转换把放大后的模拟信号转换成数字信号。转换后的信号采用nRF905无线模块传输到PC机,PC机通过串口接收数据,并利用软件数据显示心电图。框图如下所示。 图 1 系统整体设计框图本设计系统的可扩展性: 对象的集合,除了心电图,脑电图,还可以有脉冲,温度,血压,呼吸,血氧饱和度等。越多的采集信号,越能全面反映患者的生理状况,诊断治疗的效果就越好。因此本设计可以增加些功能,如心电信号记录、分析以及报警功能等。第三章 硬件和软件部分设计3.1心电信号处理放大模块设计3.1.1放大电路的要求根据心电的特点,为了采集到理想的心电信号,放大电路必须具有以下基本要求。(1) 介于心电信号幅度在毫伏级且最高不高于5mV,所以要能够AD转换,必须对其放大,且放大器的总倍数应该在1000倍以上。故要保证电路有高增益。增益既是放大器的放大倍数。(2) 因为心电信号源具有很强的阻抗,一般在100K以上。使放大器的总输入阻抗大于1M,才能忽略不计信号源内阻上的电压降。这样在信号源内阻上消耗的功率就可以忽略。所以设计的电路要具有很高输入阻抗。(3) 因为心电信号都是差模信号,而大部分的干扰信号都是共模信号,为了抑制人体所带的各种干扰,放大器必须选用高共模抑制比的。一般选用为80100的放大器,也就是高共模抑制比。(4) 低输入失调电压。(5) 低输入失调电流。(6) 低温漂。3.1.2前端信号采集的设计心电是由心脏内部的电势连续变化而产生的,在人体的适当部位贴上电极,再把这些变化的电势整合、处理在一起就可以形成心电波形。心电导联的方式有很多种,本设计中我采用的是单极肢体5导联,不同的导联方式得到的波形会有所不同。效果最好的位置如下: 黑线(LA) :黏在第2肋骨与左锁骨中线的交点;图 2 5导联实物图白线(RA):黏在右锁骨中线与第2肋间之交点; 红线(LL):黏在左下腹部位; 绿线(RL):黏在右下腹部位; 棕线(V): 黏在胸骨右缘第4肋之间(当然可以贴别的类似部位)。 如果保证白色电极(RA)和红色电极(LL)对角按放,就可以获得最佳呼吸波,也就可以减少心脏搏动和脉动产生的伪差,这需避免把肝区和心室置于呼吸电极的连线上。3.1.3 前置放大部分仪表放大器AD620具有高共模抑制比、精度高等。事实上,该芯片也是专门为便携式生理放大器而设计的。图 3 AD620引脚图AD620是一款价格低廉、性能优良的仪表放大器。芯片的引脚如下图所示。其增益相当高,且可以根据1、8脚所接的电阻来改变,取值范围为 110000倍。有如下关系式:G= 1+49.4 k / Rg 或 Rg=49.4k/(G-1)其共模抑制比也非常高,一般在100dB。由此可知,如果是0.01mV的信号源输入,差模信号部分就可以放大至1V。而共模信号部分却依旧为0.01Mv(可忽略)。前置放大电路图如下。图 4 前端心电采集电路图 图中1和8脚接的是增益反馈电阻,即放大器放大倍数的判定电阻。把+2.5V看做参考地,因此,7和4脚就相对成了+2.5V和-2.5V了,这电路就是双电源供电电路了。放大器采用双电源供电,才能保证双极性的心电信号的负半周信号不被削波。经过考虑决定设计的前端放大增益定为50倍,即增益电阻为1K。图中选择的放大器是TLC2274。这款运算放大器除了性能优良、价格低廉外,还有一个突出的优点,也是本设计需要的,就是其具有“轨道轨”的特性。既电压,即使在电源电压的上限和下限,该放大器不饱和和倒装。3.1.4信号滤波处理 尽管AD620部分的放大电路具有很好的共模抑制比,但是人体及周围环境等因素,对采集到信号电路有很大干扰,所以采集信号时还应该添加一些滤波电路。(1) 高通滤波部分根据心电信号的频率成分都大于0.05Hz,这里添加一个高通滤波电路滤除低频干扰。如图所示,电路中由C1和R5组成的高通滤波器。其作用有两个:1.除去直流信号,将被放大的交流信号部分保留下来;2.由C1和R5组成高通滤波网络,其时间常数是2s,使放大器的下限频率为0.08Hz。由下式 和 图 5 高通滤波电路又有,代入中,可知滤波电路的特征频率大小由决定。即当=0时=0,电路的增益为零;当W=时,=1/2,电路达到截止频率;当时,=1,电路没有衰减。故要使高通滤波器工作,设计中取C为1uF。R取值为2M,由此可计算出特征角频率为: 或 由此可知信号经过这个电路后的带宽为0.08Hz 。(2)低通滤波部分心电信号的频率成分为0.05100Hz,所以除了高通滤波电路限制最低频率的下限,还需要一个低通滤波电路来限制上限频率。滤除高频成分的干扰。本设计采用的是二阶低通有源滤波器。如下图所示。图 6 低通滤波电路可由式子 和 来计算上限频率。判定方式和高通滤波电路的类似,这里就不多说。电路中取C为0.01uF,R为150K,计算出的特征角频率为: 或 即放大器的带宽为0106Hz。又由于心电信号的主要频率成分为0.0540Hz,用于监护的放大电路对带宽的要求不太高,所以本设计选取R的值为470K,C的值为0.01uF,即其特征频率为34Hz 。(3)50Hz陷波部分由第二章介绍的心电信号的特点可知,心电信号为微弱的电信号。人体周围存在着很多的电磁干扰。前面的滤波电路已经滤除了0.0834Hz以外的部分干扰。然而50Hz的工频干扰是一个很大的干扰,想要采集到理想的心电信号,则50Hz的干扰必须滤除。电路图如下所示。图 7 50HZ陷波电路图这电路的选频条件是: 中心频率为: 其中电位器中心点两边的阻值分别计入和之中。 。运用这两个式子计算各个电阻值分别为:,和(16和17的电阻都包含电位器的那部分)。1根据这个,实际中选取如下:,=68K,电位器为20K,选取电容为0.047uF。调节电位器,使电阻16、17 的阻值和计算的值相符,使陷波点为50Hz。3.1.5 后级放大部分及电平抬升二级放大由于心电信号为微弱信号,需要放大1000倍以上才能很好的显示。考虑到滤波网络的衰减问题,放大器的放大倍数应该更大些。本设计前端用AD620采集信号的时候,反馈电阻选择了1K,其放大倍数为50左右,故将二级放大倍数定为40倍左右,则总增益为G=2000左右。具体可以根据显示的波形来调整。电路如图所示。图 8 信号的二级放大电路图图中7、8、9三个电阻, 构成电阻网络是用来调节本级放大器的基线。由于前置放大级采用的是双电源供电方式,参考电压则为0V(则实际上可以看做是05V电压供电)。然而本设计的前置放大部分之后都采用5V单电源供电的,为了保证心电信号的完整性,通过调节二级放大器的基线,来使基线达到+2.5V左右,从而将来自运放之前的双极性心电信号转换成从0V到5V的正极性信号。此放大电路的放大倍数由反馈电阻来决定的,关系如下式: 电流提高图 9 电平抬升电路经过前部分的信号放大和滤波后,采集到的信号波幅很小,并不能很好的显示。这是因为输出的信号电流很小,无法驱动下级电路。故再设计的二级放大后面加上一个提高电流模块,提高输出电流。电路如右图所示。此运放是一个跟随器。其电压放大为1,为正相放大器。输出电流为输入的( 1+)倍,这电路具有电流和功率放大的作用。经过这个运放后,输出端的信号就不会因为后级部分负载过大而降低。3.2 A/D转换的实现 本设计中运用单片机STC89C52RC和模数转换芯片TLC1549实现 A/D转换。把A/D芯片的参考电源和地脚接5V电源和地。实现转换,只需连线正确,再软件编写程序就可以了。电路连接如图所示。图 10 TLC1549引脚图 AD程序如下所示。unsigned int get_AD() char i; unsigned int buf=0; CLK=0; _CS=0; delay_us(); for(i=0;i10;i+) CLK=1; delay_us();if(DIN) buf=(buf1)+1;else图 11 AD转换电路原理图 buf=(buf1)+0; CLK=0; _CS=1; CLK=0; return buf;3.3无线发送与接收以及PC接收信号3.3.1 无线传输模块为了摆脱数据传输线的羁绊,本设计采用了将心电信号由一对无线射频收发端与USB连接传输给PC机。市场上的无线射频传输模块种类很多,功能各异。在选择前要好好考虑设计的要求,选择的器件的功能特点等。比如:1.功能集成高度,外围原件数,是否便于开发调试;2.传输速率;3.和MCU的连接情况;4.灵活性和功耗等。总体考虑后,本设计选用了NRF905模块作为信号传输的媒介。3.3.2 射频模块的简介 虽说905芯片有32个引脚,但是需要掌握的就几个罢了。面对无线发送接收模块,引脚数量减少到14位,在左图中可以一目了然。主要分为三块:1.SPI接口;2.发射接收控制;3.信号控制检测。 图 12 nRF905的管脚图 MISO、MOSI、CSN和SCK为SPI接口的数据线和信号线。其中MOSI和MISO为数据通道;CSN是通信开启和断开的控制信号;SCK是时钟脉冲,一个脉冲就进行一次数据交换,即完成一次通信。连接好这些是数据传输的基础条件。单片机是通过PWR、TRX_CE和TX_EN端口来控制模块发送和接收的。至于CD、AM和DR是模块的一组状态信号端口。 3.3.3模块的运用 发送部分 无线射频的运用很简单。硬件方面只要将SPI接口及控制端口连接对MCU相应的端口就好。其他的就是软件方面的事了。无线射频模块在工作前,必需要对其寄存器进行配置,以保证其能够按照要求正确的工作。RF的配置寄存器一共分为10个字节的单元,分别对寄存器进行不同的设置。如:用于细调各个频率的通道的CH_NO;中心频率;输出功率;字节长度设置;地址寄存器RX;晶振等。本设计中对RF寄存器进行配置是采用WC指令。具体程序如下:/RF寄存器配置/unsigned char idata RFConf11= 0x00, /配置命令/ 0x4c,0x0c,0x44,0x20,0x20,0xcc,0xcc,0xcc,0xcc,0x58, /充许CRC,不使能外部时钟信号,8位CRC校验,16M晶振;bit lcdbit; 图 13 发送程序框图(1) 配置参数,启动SPI,写入发送数据地址。置高控制端口TRX_CE和TX_EN,使无线模块处于发送模式。在发送过程中,NRF905自动完成以下工作:射频寄存器自动开启。(2) 在数据发送时,准备好数据,引脚DR置高。(3) 打包数据(包含字头和CRC校验码)。(4) 发送数据包。这些程序的过程约10us。故在发送的期间要加一个延时程序。在发送过程中,无论trx_ce和tx_en端口是高还是低,传输都不会中断。一个数据发完,就进行下一个数据包发送,若是没有数据可发送时,905自动进入空闲模式。nRF905只要硬件连接好后,剩下的就只是软件问题了,编程好后就可以实现数据的无线传输了。接收部分接收部分的主要实现功能是:用无线模块接收由发送部分发送的心电数据,再通过单片机的SPI接口接收数据,通过串口功能,把数据传输给电脑。nRF905处于接收模式,其他无线设备发出的数据才能接收到。接收模式启动后,接近入接收模式,完成以下工作:(1) 载波检测。nRF905模块进入监听状态,当监测到相同频段的载波时,就置高CD引脚。(2) 地址匹配。发送的数据中都有目的地址,地址与本机相同,就接收信号,若不同就不接收。在接收同时,地址匹配信号(AM)引脚立即置高。(3) 接收数据包。数据包被接收后,存入RX_PLAYLOAD寄存器中。(4) 数据就绪。有效数据接收到后,去除其字头,置高DR引脚,表示数据已经准好, 可以开始接收数据。单片机就通过SPI接口读出寄存器中的数据。 和发送部分相比。接收部分运用的无线模块的配置、启动和发送等几乎一样,唯一不同的是一个处于发送方式,一个处于接收方式。发送部分有一个AD转换模块,而接收部分有一个串口通信模块。这样看来接收部分的程序框图和发送的大致相同,只是把AD转换的那部分换成串口通信部分,这里就不再详细表述。 图 14 数据接收部分电路图第四章 心电信号的显示 MATLAB是一个高技术计算的开发环境,比如科学计算,可视化和交互式程序设计。它是一个易于使用的集成Windows环境,数值分析,矩阵计算,可视化,和许多其他功能。目前,MATLAB的工具箱功能延伸到数据采集、图像处理、概率统计、数据库接口、优化算法、神经网络、嵌入式系统开发、偏微分方程求解、小波分析、信号处理、控制系统设计、DSP与通讯等领域中。6 本设计中采用matlab软件来实现心电图在PC机上的显示。主要是串口初始化等相关程序部分、波特率和数据位和发送位等程序部分、数据接收程序部分、显示通道程序部分。利用通信类serial来创建串口对象,通信是设置串口对象属性和通信模式来进行。设计中利用串口传输,开启串口需要用fopen函数。还需fread函数读取二进制数据,结束数据传输需要fclose函数。12本设计主要运用到的是串口事件回调函数来处理窗口收到的消息、以及画图函数来画出收到的数据等。在设置回调函数时,首先设置回调函数的名称和输入参数。然后是回调函数的定义,来实现想要的功能。如下程序为串口事件回调设置:o_SerialPort.BytesAvailableFcnMode=byte; o_SerialPort.BytesAvailableFcnCount=10; o_SerialPort.BytesAvailableFcn=EveBytesAvailableFcn,handles;要用到matlab的画图功能来显示出心电图。首先要对接收数据部分施控件,即类似于按钮;接着把接收的数据存到缓存中,定义成一个变量,最后运用画图功能把数据画成图表形式。程序如下:if ms=1figure(1);set(0,ShowHiddenHandles,On); set(gcf,menubar,figure); plot(1:1:length(M1),M1,-.Rs,1:1:length(M2),M2,-.GP,1:1:length(M3),M3,-.bh) Xlabel(- 时间 -); Ylabel(- 电压 -); legend(信道一,信道二,信道三,-1); end这里介于篇幅就不再多加介绍了 。第五章 硬件测试和软件的调试5.1 硬件测试 图 15 示波器上显示采集的心电图为了硬件调试,在设计硬件实物时,把信号采集、信号滤波、信号放大等分别接一个测试输出端口。测试时,把电极片按前面介绍的位置贴好,在本设计中直接把滤波后的心电信号接到示波器上进行测试。测试结果如下图所示。可以看出示波器上的信号为心电信号。信号的频率和心电信号一样,放大的倍数和计算值差不多,且每个心电冲击信号相隔1s,其中冲击的幅值不一样是因为电极片不稳定等外界因素,依旧可以肯定是心电信号。故可以省去电极片采集信号部分的测试。 为了看清心电的基线的特性,本设计中再把心电信号放大些,以便基线的特性更加明显。同时由采集到的信号可知心电信号的基线的紊乱挺多的。故设计中还加有一个50HZ的陷波电路,滤除50HZ的工频干扰。这样基本就达到理想的心电信号。5.2软件调试软件部分主要包括信号的AD转换部分、信号的无线发送和接收部分、串口通信和软件显示程序。在程序调试中,首先是运用串口连接PC机部分程序,这里用开发板来调试程序,用UartAssist(串口助手)来显示通信的端口、波特率和数据等。接着进行的是NRF905通信调试,在905调试中重要的是其配置的数据要一样,接着是数据位、SPI和寄存器的一些程序。先用发送一个数据做检测,经过几次测试和修改后,905通信部分程序调试成功。最后是AD转换信号通过905发送和接收显示于串口助手界面,测试阶段,用电源信号作为输入,直接看串口助手上的数据是否为电源信号为准,如是则通信正常。正常后把输入信号改为地来检测。串口助手界面及用电源接入ADC后接收到的数据如下图所示。 图 16 串口接收无线信号测试 这些调试成功后就可以直接接入心电信号测试了。本设计中采用matlab软件显示波形,下图显示的为两个不同时段的心电图。可以看出是心电波形。其最大幅值为(300/1024)*51.4 ,其中5为基准电压。横坐标为采集的点数,采样频率为9600Hz。可知尖峰间隔约为1S左右。再者,每个尖峰出的波形和标准的心电波形类似,即包括R波、T波等。所以可以肯定采集到的信号为心电信号。 图 17 心电信号在matlab上的显示图形第六章 全文总结 论文在研究心电信号采集、传输及显示上,完成了信号的采集,信号高通低通滤波及50陷波处理;心电信号A/D转换;无线传输以及PC机上的心电图的显示。其中采用无线数据传输,解决了数据传输线的烦恼。在信号处理问题上,也根据美国心电学会的标准,采集范围具有权威性。在设计制作过程中,遇到一些问题,要得到比较标准的心电信号,对电阻和电容的精确值要求比较高,故作品采集的心电信号的准确性还是有提高的空间;一种功能的电路可以有几种不同的电路连接方式,在开始时,器电路的取舍花了很多时间;开始设计电路图时,查找的资料中,有一处错误,由于对该电路了解不够,导致走入了误区,浪费了很多材料与时间。经过这次设计的制作,学习到了很多的东西,比如设计前对相关的知识要很了解,设计中要认真研究与思考,事后要及时总结等。前文也提出了许多本设计可提高和发展的地方,信号采集的越多, 越全面反映患者的生理状况,诊断治疗就的越有效果。参考文献1 王正光.数据采集与处理.国防工业出版社,1985.2 任家富.数据采集与总线技术.北京航空大学出版社,2008.3 康华光.电子技术基础(模拟部分)高等教育出版社,2005.4 魏小龙.MSP430系列单片机接口技术及系统设计实例M.北京:北京航空航天大学出版社,2000.5 孙上鹏.心电信号采集及无线传输系统的设计x.北京:北京交通大学.2009.6 梁原.基于MATLAB的数字图像处理系统研究.长春理工大学,2008.7 刘冬,刘光斌,姚志成.单片机系统实用抗干扰技术M.北京:人民邮电出版社.2003.8 王林涨等.心电信号处理中滤波器设计的研究.北京生物医学工程,2002,21(:3).9 张石,张新宇.远程移动心电监测系统的研究与开发J.控制工程.2006、13(2):172-174.10 孙彤,李冬梅.逐次逼近A/D转换器综述.微电子学.2007.11 邓亲恺.现代医学仪器设计原理M.北京:科学出版社.2004.12 赵云鹏.MATLAB串口通信在数据采集中的应用.微计算机信息.2006.13 王萍,陈长春,龚睿等.基于nRF905的无线串口通信系统.微计算机信息.2007.14 刘刚、王立香.中文版编程及应用.电子工业出版社,2008.致谢 首先要感谢我的导师赖森财老师在整个设计的过程的悉心指导。感谢和我一起度过这段毕业设计期间的同学和好朋友,从论文的选题、方案设计、资料收集,直至论文的编写,给了我很多的帮助和支持,给了很多的宝贵的意见,让我少走了很多弯路,深刻认识做每样事情前要收集各方面的信息,加上自己的努力才能做好,这期间让我成长了不少,使我懂得,遇到问题如何去找根源、如何去解决,为以后的工作打下了一定的基础。特别感谢王剑雄、林永军、韦朝活在编程、调试期间的帮助和支持。感谢所有在学习期间关心和帮助我的老师、同学和朋友。摘要 Design of ECG monitor based on PC Wu Xihong 2009 Sanming University Electronic Science and technology of Fujian Sanming 365401 The design of ECG monitoring is a set of acquisition, signal processing, transmission and display in one. Data acquisition part,the 5 lead ECG to collect ECG signal. The signal processing part, according to the design requirement of most of the ECG, use the zoom, filter, anti-jamming and so on a series of signal processing circuit for signal processing. The transmission part uses 51 Series MCU as the main MCU to control A/D transformation and wireless transmission module, wireless transmission signal transmission to PC. Finally using the editor and window of matlab software interface display ECG graph. In this paper, the design of each circuit are have a detailed basis, can make people understand it more easily.Keywords : ECG amplifying filtering device of ADC wireless matlab承诺书和授权书三明学院毕业论文(设计)承诺书我仔细阅读了三明学院毕业论文(设计)的有关文件规定。我知道,抄袭别人的成果是剽窃行为,是可耻的,也是违反毕业论文(设计)规定的。如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。我郑重承诺,严格遵守学院毕业论文(设计)规定,以自己的真实水平认真做好毕业论文(设计)。如有违反规定的行为,我将接受严肃处理。我的毕业论文(设计)题目为:学生签名: 日期:毕业论文(设计)版权使用授权书本论文(设计)作者完全了解学校有关保留、使用论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文(设计)被查阅和借阅。本人授权三明学院可以将本论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本论文(设计)。 保密,在 年解密后适用本授权书。本论文(设计)属于 不保密。(请在以上相应方框内打“”)作者签名: 日期: 附录实物图Matlab部分程序:function varargout = SerialPortCommunication(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn,SerialPortCommunication_OpeningFcn, . gui_OutputFcn, SerialPortCommunication_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction figure1_CloseRequestFcn(hObject, eventdata, handles)global number;global o_SerialPort;%-关闭串口-if strcmp(o_SerialPort.Status,open) fclose(o_SerialPort);endnumber=;clear number;delete(hObject);function SerialPortCommunication_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);javaFrame=get(hObject,JavaFrame);javaFrame.setFigureIcon(javax.swing.ImageIcon(update.jpg);function varargout = SerialPortCommunication_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;function pb_OpenSerialPort_Callback(hObject, eventdata, handles)global o_SerialPort;flag=0;set(hObject,Visible,off);set(handles.pb_CloseSerialPort,Position,get(handles.pb_OpenSerialPort,Position);set(handles.pb_CloseSerialPort,Visible,on);%-串口初始化-int_Index_COM=get(handles.pop_SerialPort,Value);string_COM=get(handles.pop_SerialPort,String);string_Select_COM=string_COMint_Index_COM;o_SerialPort=serial(string_Select_COM);%Baud初始化int_Index_Baud=get(handles.pop_BaudRate,Value);string_Baud=get(handles.pop_BaudRate,String);string_Select_Baud=string_Baudint_Index_Baud;double_Baud=str2double(string_Select_Baud);set(o_SerialPort,BaudRate,double_Baud);%设置数据长度int_Index_DataBit=get(handles.pop_DataBit,Value);string_DataBit=get(handles.pop_DataBit,String);string_Select_DataBit=string_DataBit(int_Index_DataBit);double_DataBit=str2double(string_Select_DataBit);set(o_SerialPort,DataBits,double_DataBit);%设置停止位长度int_Index_StopBits=get(handles.pop_StopBits,Value);string_StopBits=get(handles.pop_StopBits,String);string_Select_StopBits=string_StopBits(int_Index_StopBits);double_StopBits=str2double(string_Select_StopBits);set(o_SerialPort,StopBits,double_StopBits);%设置输入缓冲区大小为1Mset(o_SerialPort,InputBufferSize,1024000);%串口事件回调设置 o_SerialPort.BytesAvailableFcnMode=byte; o_SerialPort.BytesAvailableFcnCount=10; o_SerialPort.BytesAvailableFcn=EveBytesAvailableFcn,handles;% -打开串口-fopen(o_SerialPort);-发送按钮打开-set(handles.pb_SendData,Enable,on);set(handles.pb_SendData,Visible,on);guidata(hObject, handles);%-BytesAvailableFcn事件回调函数function EveBytesAvailableFcn( t,event,handles )global o_SerialPort ck;% number=h_o_SerialPort.BytesAvailable;global number flag ;global ga number1;number=number fread(o_SerialPort,10);number1=number fread(o_SerialPort,10);set(handles.edit_ReceiveData,String,nm2str(number);set(handles.edit_ReceiveData,String,num2str(number1); ck=get(handles.pop_ck,Value); if ck=1 if flag=2 number=; flag=1; end if flag=3 number=; flag=1; end flag=1; dlmwrite(c1.txt,number,delimiter,n,precision,3) dlmwrite(c2.txt,number1,delimiter,n,precision,3) if ga=0 ga=1; end if ga=1 ga=0; end end if ck=2 if flag=1 number=; flag=2; end if flag=3 number=; flag=2; end flag=2; dlmwrite(c2.txt,number,delimiter,n,precision,3) plot(handles.axes2,1:length(number),number); end if ck=3 if flag=2 number=; flag=3; end if flag=1 number=; flag=3; end flag=3; dlmwrite(c3.txt,number,delimiter,n,precision,3) plot(handles.axes3,1:length(number),number); end%发送按钮回调function pb_SendData_Callback(hObject, eventdata, handles)global o_SerialPort;string_edit_ReceiveData=get(handles.edit_ReceiveData,String);if(get(handles.C1,Value)=get(handles.C1,Max) fprintf(o_SerialPort,string_edit_ReceiveData);else double_edit_ReceiveData=str2num(string_edit_ReceiveData); fwrite(o_SerialPort,double_edit_ReceiveData);end function pb_CloseSerialPort_Callback(hObject, eventdata, handles)%-按钮显示切换设置-global o_SerialPort;set(hObject,Visible,off);se
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!