光电系统课程设计报告-光电心率计.docx_第1页
光电系统课程设计报告-光电心率计.docx_第2页
光电系统课程设计报告-光电心率计.docx_第3页
光电系统课程设计报告-光电心率计.docx_第4页
光电系统课程设计报告-光电心率计.docx_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

光电系统课程设计报告设计题目:光电心率计指导老师: 吴xx班级: 10XX设计者: XXX 设计者学号: *同组者姓名: * * 设计者联系电话: * 目 录一 摘要4二 技术指标4三 设计原理53.1、光电探测电路 53.2、电源电路 63.3、滤波放大电路及虚拟地电路63.4、单片机电路 73.5、显示电路83.6、蜂鸣器电路9四设计方案论证9 4.1、心率计的软件实现方法 9 4.2、滤波放大电路的实现 9 4.3、光电探测电路的实现104.4、 心率值的显示方法 10五. 硬件电路设计115.1、电源电路设计 115.2、光电探测电路125.3、“虚拟地”电路 125.4、滤波放大电路125.5、单片机电路135.6、译码显示电路155.7、 蜂鸣器电路 16六 软件设计 166.1 总流程图176.2 主函数流程图186.3 采样比较程序196.4 心率计算与显示警报模块 20七 结论21八 课程设计的心得体会21参考文献22附录 23附录一、 程序代码 23附录二、 原理图28附录三、 PCB所有层图29附录四、 顶层PCB图 30附录五、 底层PCB图 30附录六、 元件清单31一 摘要随着现代社会,人们对自己的健康越来越关心,因此对各种医疗设备的需要也越来越大。其中心率测量仪是最常见的医疗设备之一,它能应用于医疗、健康、体育以及我们生活中的方方面面,因此一个简单便宜而又有较高精度的心率测量仪是很有市场的。我们无法通过直接测量来获取人的心率,但是由于人的脉搏是与心跳直接相关的。因此,我们可以通过测量脉搏来间接测量人的心率。我们小组的光电系统课程设计制作的光电心率测量仪是用光电传感器测量经手指尖反射的信号,然后经过滤波放大后送到51单片机进行信号处理并将计算所得到的心率值通过动态扫描的方式显示出来。关键词:51单片机;光电测量;A/D采样;动态扫描显示;响铃提醒。二 技术指标利用光电方法测量人体心率,并通过显示器显示出来,具体要求如下:1、采用 51 系列单片机2、制作光电测量头3、通过 A/D 采样方式测定人体心率(不能整形成方波计数)4、用 LED 数码管显示心率5、具有相关的控制键和声音提示功能6、外接直流供电,+5V 单电源工作三、设计原理我们采用反射式光电传感器在手指上采集心率,将信号滤波、放大后引导到单片机内部A/D转换电路的输入脚上,模拟信号经采样生成数字信号,经数据处理后得到心率值并通过数码管显示出来。图1.光电心率计模块图3.1、光电探测电路随着血液在人体的流动,人体组织对光信号的吸收作用会发生改变。当有血液流动到某一组织时,吸收作用增强;当血液经组织流回心脏时,吸收作用减弱。所以如果用一光信号打在某一部位,测量经过人体组织反射或透射的信号,进行一定的处理后,即可获得精确度较高的心率值。由于人的手指血管较多,而且测量方便,所以我们设计的心率计是通过采集手指尖的脉搏信号作为心率测量的依据。我们使用的光电测量探头是由反射式光电传感器ST168(如图2所示)以及外围的电阻和三极管以及稳压管构成。ST168是由一个红外发光二极管和一个红外光电晶体管组成,测量经过手指尖的反射信号。检测距离焦点为3.5mm。采用非接触检测方式。最大输出电压为0.4V。3.2、电源电路由于本实验只提供+5V 的直流供电,这只能给模拟电路供电。而我们所使用的单片机C8051F310使用的是+3.3V 的直流供电,因此我们需要通过一个变压电路将5.5V的直流供电转化成3.3V的直流供电。我们用LM1117-3.3(如图3)来完成这一转化。LM1117-3.3接入5V电压,固定输出3.3V的电压,最大输出电流可达800mA 。为了改善LM1117-3.3的瞬态响应和稳定性,输入端和输出端都需要外接若干个电容。 图2.ST168 图3、LM1117-3.3 图4、LM324 3.3、滤波放大电路及虚拟地电路通过光电探头所采集到的信号通常含有各种噪声信号,特别是直流信号和50Hz工频信号。而且这些噪声的幅度很大,甚至有可能完全淹没我们所需要的脉搏信号。我们采用一个高通和低通滤波电路来分别滤除高频的噪声信号和低频的噪声信号。另外,为了使微弱的脉搏信号最后能够被很好的发现,低通和高通滤波电路都兼具有放大功能。为了保证滤波放大电路能够很好地工作在线性区而不使信号因放大而产生变形或者失真,我们需要一个虚拟地电路。上述电路主要通过LM324 芯片(如图4所示)完成。LM324系列器件带有四个差动输入的运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。每一组运算放大器有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。3.4、单片机电路通过滤波放大电路后最终输出的是模拟信号,需要先通过单片机的A/D转换模块进行转换成数字信号才能进行下一步的数据处理。通过软件程序将这些数字信号进行处理并最终形成稳定的心率数输出。由于光电心率计的精度要求不是很高,单片机的时钟采用内部晶振。我们设计的光电心率计是通过测试5S内的脉搏次数进而计算出相应的心率值,然后通过译码显示电路将心率值显示在数码管上。本实验所使用的单片机是C8051F310单机片(如图5)。该单片机属于Silicon Labs的小外型微控制器系列,与8051单片机完全兼容。C8051F310在极小的封装中集成了高速8051 CPU、Flash存储器和高性能模拟电路,允许设计者在提高系统性能的同时,大大减少所需元件的数目。相比于8051单片机,C8051F310只有32个引脚,使用交叉配置开关,指令处理采用流水线结构,机器周期由标准的12个系统时钟周期降为1个系统时钟周期,指令处理能力比MCS51大大提高。此外,C8051F310增加了复位源,增加了中断源,还集成了一个A/D转换模块。 图5、C8051F310 图6、74HC5733.5、显示电路正常人的心跳数一般在50150之间,在不考虑小数的情况下用三个数码管就可以显示人的心率值。由于C8051F310的I/O口的输出电流只有几毫安,并不足以驱动八段数码管,因此需要用锁存器来为八段共阴极数码管提供大的驱动电流。同时用三极管来放大数码管的位电流,以实现3个数码管的动态扫描显示。为了防止通过数码管的电流过大,需要给数码管的每一个阳极引脚串联一个电阻。我们采用的锁存器是74HC573,它的输入电流很小,但输出电流可以达到35mA,远大于单片机的输出电流,可以实现对八段数码管的驱动。3.6、蜂鸣器电路 当测得的心率值小于30或者大于15时,蜂鸣器就会报警,提示心率不正常。若心率值在30150之间,则不会报警。四、设计方案论证4.1、心率计的软件实现方法我想过两种方法,一种是测量一定时间内的心率数进而得到一分钟的心率数,另外一种是通过测量若干次心跳,同时进行计时,然后得到一分钟的心率数。第一种方法需要通过定时器定时一个时间,同时在采样心率的同时对心跳次数进行计数。当定时时间到了之后,即可通过计算得到一分钟内的心跳次数。这种方法的优点是实行起来较为方便,但是由于心率数不容易得到,有比较大的误差(最大为6次每分钟)。第二种方法要先设定好一个计数值a,同时对中断次数进行计数。当所测得心率数为a时,停止测量。通过中断次数可以求得计数时间,然后就可以计算得到心率值。这种方法比第一种方法的测量要准确一些,实行起来比较方便;但是因为最初没有想到得到计数时间的比较好的方法,所以没有用这种方案。4.2滤波放大电路的实现滤波放大电路的有两种,即无源滤波电路和有源滤波电路,此外又有一阶二阶之分。考虑到探测到的信号后会比较大的噪声,而且即使很小的噪声对于心率的测量也会有很大的影响。所以我最后选用了曲线衰减更快且兼具有放大作用的二阶有源滤电路。这一电路的性能相对要优越的多,器件的数量也并没有增加太多。4.3、光电探测电路的实现光电探测可以采用透射式光电传感器,也可以用到反射式光电传感器。这两种芯片的原理基本相同,唯一的区别就是透射式芯片测量的是经过手指透射的红外光,而反射式芯片探测的是经过手指尖反射的红外光。 采用透射式芯片的优点是测量会比较稳定,但是器件的安装难度比较大,由于人的指尖还是有一定厚度,透射光的功率相对会比较小。 采用反射式芯片的优点是器件安装容易,反射光的功率也足够大,测量也比较容易,但它的测量不是太稳定。 考虑到本次设计的要求的精度并不是太高,我们最终采用了反射式芯片ST168。4.4、心率值的显示方法 心率的显示方法有静态显示和动态显示两种。 静态显示就是由单片机一次性输出数码值后就一直保持,直到单片机送信的显示值为止。这种显示方法的优点是占用的机器时间少,显示的数值不会出现错误,显示的亮度也很高,但是它的缺点也很明显,需要使用较多的元器件,线路的连接很复杂,成本高。而动态显示就是单片机定时地对显示器件扫描。在这种方法中,数码管并不同时工作,但是只要扫描的速度很快,就会给人产生器件在同时工作的感觉。这种方法的优点是使用的器件少,价格便宜,但是只要单片机停止扫描,数码管就会停止显示。此外,动态显示的亮度也不如静态显示。考虑到成本问题和器件的小巧型,我们采用了动态扫描的方法。五、硬件电路设计5.1、电源电路设计 电源部分电路图如下图7所示。J1为电源插座,直接接+5V直流电源。U1就是LM1117-3.3芯片,其特点在上面已经讲过,不再赘述。+5V直流电压经过LM1117-3.3转变为+3.3V 的直流电压。在图7中标识的VCC 5.0 端口可以稳定输出+5V,小于1A 的电流,为模拟电路提供+5V 的直流电压;而VCC 3.3V 端口可以稳定输出+3.3V,小于0.8A 的电流,为C8051F310单片机供电。输入端和输出端的C1、C2、C3、C4、C5等五个电容的存在为了改善LM1117-3.3的瞬态响应和稳定性, 图7.电源电路5.2、光电探测电路如图8所示是光电探测电路,用来探测人手指尖的脉搏信号。图中的U2是ST168反射式光电传感器,最大输出电压为0.4V。D1是稳压管。稳压管能使三极管的放大倍数保持在一定范围之内,这是使ST168工作在稳定状态的关键。R5的作用是使接收管电路工作在理想状态的关键。取值过小使接收管的输出电压会很小,而取值过大则会导致接收管电路的非线性工作。 图8、红外传感器发射与接收电路 图9、虚拟地电路5.3、“虚拟地”电路“虚拟地”电路图如图9所示。虚拟地电路的存在是为了使滤波放大电路能够较好地线性工作,不致于使信号变形或者失真。虚拟电路的电压为2.5V。具体值可以通过调整R14/R15的比值来改变。5.4、滤波放大电路滤波放大电路图如图10所示,它的功能是滤除高频和低频的噪声信号以及对所需要的脉搏信号进行放大。通过计算可以知道,高通电路的下限频率为0.53Hz,低通电路的上限频率为3.18Hz。也就是说对应的最小的一分钟心跳数为31.8次,对应的最大的一分钟心跳数为190次。正常人的心跳数都是在这个范围之类,因此这个带宽的设置是合理的。此电路同时兼顾信号放大的作用,由图中电阻阻值计算的理论的放大倍数为121倍。由于电路中电容和电阻的影响以及LM324本身的性能不足,实际放大倍数要小于这个值。 图10、滤波放大电路5.5、单片机电路如下图11所示为单片机电路,包括C8051F310单片机和上电复位电路以及调试电路。我们所设计的光电心率测量仪采用是C8051F310单片机。单片机的一些端口以及功能介绍如下:1、 P1为数码管段码输出端口;2、 P2.0、P2.1、P2.2分别接至三个数码管的共阴极,用以实现数码的动态扫描中断码的控制。 3、 P2.3 接蜂鸣器的输入端,上面的信号控制蜂鸣器;4、 P3.1 端口为经过滤波放大处理后的模拟信号的输入端,做A/D转换模块的输入端;5、 J10及其外围电路构成调试电路,调试通过P3.0端口来完成;6、 K1、R1、R2、C12、C13构成复位电路,当按下K1,单片机恢复到原始状态。 图11.单片机电路5.6、译码显示电路如图12为译码显示电路部分的电路图。由于我们采用的是动态扫描的显示方式。所以,三个八段数码管的同名端都连在一起,而每一个共阴极都由单独的I/O线控制。单片机P1口输出端吗,所以P1与锁存器74HC573 相连,单片机输出的电流信号经过74HC573的锁存放大之后,其电流值足够能够驱动数码管的显示。而P2.0、P2.1、P2.2输出的位码扫描信号,经过三极管的放大作用后与八段数码管的共阴极相连,控制数码管的亮灭。图12、译码显示电路部分5.7、蜂鸣器电路图13、蜂鸣器电路部分 蜂鸣器电路的作用提供报警功能。由P2.3口控制报警,三极管对控制信号进行放大。 当心率值在30150之间时,蜂鸣器不响,表示心率正常;当心率值小于30或者大于150时,蜂鸣器响,表示心率不正常。六、软件设计滤波放大电路的最终输出是一个较为稳定的心率信号。而单片机要完成的任务就是对这个信号进行处理得到相应的心率值并最终将心率值输出到数码管上进行显示。由于最终的信号是一个模拟信号,所以我们需要先将模拟信号转变成一系列的数字量。然后通过寻找某一个数字量出现的频率,从而得到相应的心率值。由于最后的信号并不是一个理想的类似正弦的信号,所以信号的波动可能会引进一定的误差。软件不仅要能够测量被测试者的心率数,有时还需要告诉被测试者他的心率是否处于正常范围内下,若不正常则要进行警告。我们用的是蜂鸣器警告。当心率超出了预定的范围时即判断为不正常的心率值(有可能是被测者或者是仪器自身造成的),此时蜂鸣器响,以达到警告的目的。当心率值在正常范围内时,蜂鸣器不响。心率的译码显示用的是动态扫描的显示方法。这种方法的优点是使用硬件少,但是占机时较多。只要单片机不执行显示程序,就立刻停止显示。动态显示的亮度与导通电流有关,也与点亮时间和间隔时间的比例有关。6.1 总流程图通过单片机的复位控制,当K1闭合时,单片机初始化,同时开始测量。考虑到滤波电路及探测电路的容抗和阻抗而产生的延迟,为了使测量准确,最好在接上电源后,等待510秒在开始进行测量。由于程序设定的特定值出现的初始位置和最后位置并不对应测量开始的时间和结束的时间,所以会引进较大的误差。在5S的测量时间内,最多会出现半个心跳周期的偏差。所以本实验的最大测量误差为一分钟6次。6.2 主函数流程图主函数主要负责单片机的初始化,具体的采样过程和最后的计算显示则通过定时器中断来完成。6.3 采样比较程序定时器T1每隔3.704ms中断一次,中断27次即0.1s定时到后,进行一次A/D采样,同时判断某一固定值(如1.65)是否在本次采样所得到的数值与上一次的数值之间,是则计数值a=a+1。若是第一次采样,直接加1(这样做是为了减小实验误差)。通过测量该固定数值出现的次数,即可通过计算得到最终的心率值。心率次数n=60*(a/2)/5=6a最大误差d=60*(0.5/5)=6显然,最大误差是一个固定值,与心率值无关。因此,这个心率计在心率越快的时候相对误差越小,结果越精确。6.4 心率计算与显示警报模块 定时器T0每5ms中断一次,当中断1000次即5S定时到后,先关闭中断,然后计算出心率值。当测得的心率值小于30或者大于15时,蜂鸣器就会报警,提示心率不正常。若心率值在30150之间,则不会报警。 然后通过动态扫描的方法显示心率值。由于所有数码管的8个比划字段ah同名端都连接在一起,而每一个数码管的共阴极都由单独的I/O线控制。单片机向P1输出字型码时,所有数码管接收到相同的字型码,但究竟使用哪个数码管显示则通过段码扫描来决定。七、结论本次的课程设计虽然没有能够做出成品,但是我们小组还是秉承的在过程中学习的信念完成原理图设计、PCB的绘制以及软件代码的编写。6次每分钟的理论误差不算小,如果改进一下测量方法或许能够得到更精确的结果。通过本次的设计确实学到了很多东西,所以这次设计基本是成功的。 八、课程设计的心得体会这个学期的光电系统课程设计是我目前遇到的最具有综合性的课程之一,它涵盖了光学、单片机、模数电和C语言以及PCB设计绘制等方面的知识,对我们平时所学的课本知识的一次综合的实践训练,对我们以后迈向社会,从事职业工作具有重要的作用。在课程设计刚开始做的时候,有一种茫然的感觉,不知道从何下手。由于以前所学习的各种知识都掌握的不是很牢固,大部分已经渐渐的忘了,很多需要从头学起。在设计的模块划分方面,我从同学、书本以及网络上获得了很多的参考意见,然后经过良久的思考之后,我选择了一个相对比较简单而又能符合要求的设计方案。相对于有比较好基础的模数电,最令我头疼的是单片机和软件程序的设计,这些东西学的实在是太差。为了弥补这些方面的短缺,我往图书馆跑了无数次,经常一天到晚泡在图书馆里看单片机、汇编语言还有C语言方面的书。最后经过各种比较之后,我决定用C51语言编写单片机程序而不是生涩难懂复杂的汇编语言。这次课程设计确实是我获益良多。首先,通过这次设计,我对单片机和数电模电的知识有了重新的进一步的学习,掌握了光信号的探测、整形放大以及处理的基本基本方法。其次,我初步学会了C51语言的使用,这对以后的工作学习将于不可替代的作用。最后,我懂得了如何去完成一个设计,去大脑中的思考到设计的最终完成;我学会了如何去分工合作才,用团队的力量去解决所遇到的问题。在此要特别感谢我们的指导老师吴裕斌,吴老师严谨细致、一丝不苟的作风将永远是是我工作、学习中的榜样。同时也感谢其他同学的帮助和指导!参考文献【1】单片微型计算机原理与应用 华中科技大学出版社 胡乾斌、李光斌、李玲、喻红【2】Altium Designer电子设计教程 清华大学出版社 高歌【3】电子技术基础(模拟部分) 高等教育出本社 康华光【4】C8051F单片机原理与应用 中国电力出版社 鲍可进【5】C8051F系列单片机与短距离无线数据通信 北京航空航天大学出版社 李文仲、段朝玉【6】标准C语言程序设计及应用 华中科技大学出版社 周纯杰、刘正林【7】51单片机开发应用范例大全 人民邮电出版社 宋戈、黄鹤松、员玉良、蒋海峰附 录附录一、实验代码/*/ *主函数程序*/*void main (void)PCAOMD&=0x40; /关闭看门狗Internal_crystal(); /内部晶振设定P1MDOUT=0xff ; /P1口全为输出P2mDOUT=0xff ; /P2口全为输出Init_ADC() ; /初始化ADC转换XBR1=0x40; /启用交叉Timer0_Init(); /定时器0初始化Timer1_Init(); /定时器1初始化TR0=1; /启动定时器0TR1=1; /启动定时器1EA=1; /开全局中断while (1);/*/*内部时钟设定程序*/*void Internal_crystal() /设定内部时钟OSCICN=0x83; /内部震荡允许,不分频CLKSEL=0x00; /使用内部振荡器/*/*定时器0初始化程序*/*void Timer0_Init (void) CKCON =0x00; /系统始终不分频TMOD&=0x00 ; TMOD|=0x11 ; /T0,T116位定时方式TL0=0x9C;TH0=0x15; /设定Timer0初值,5ms中断一次ET0=1; /使能Timer0中断TR0=0; /停止T0/*/*5s计时器中断程序*/*void Timer0_ISR(void) interrupt 1 static unsigned int count ;TF0=0;TL0=0x9C;TH0=0x15; /重新赋值if (+count=1000)EA=0; /关闭中断Acculate () ;/*/*定时器T1初始化中断程序*/*void Timer1_Init (void) CKCON =0x00; TL1=0xBC;TH1=0x54; /设定定时器T1初值,3.704ms重复一次ET1=1;TR1=0;/*/*定时器1中断程序*/*void Timer_ISR (void) interrupt 1 static unsigned int count1,count2,count3;unsigned int a;unsigned char b,c ;TF1=0;TL1=0x52;TH1=0x64; /重新给T1赋值if (+count1=27) /计时0.1s到count1=0;count2+;a=GetADC();b=a2;if (count2=1)count3+;elseif (c=0XF00xF0=b)count3+;c=b;/*/*ADC初始化程序*/*void Imit_ADC(void)AMX0P=0x11; /AD输入为P3.1AMX0N=0x1F; /单端输入ADC0CF=0x40; /右对齐ADC0CN=0x80; /ADC0允许,正常方式,向AD0BUSY写1时启动ADC0REF0CN=0x80; /VDD为参考电压,温度传感器关闭,偏压和电压基准关闭/*/* ADC转换程序*/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论