综合电子设计报告模板.docx
《综合电子设计报告模板.docx》由会员分享,可在线阅读,更多相关《综合电子设计报告模板.docx(23页珍藏版)》请在冰点文库上搜索。
综合电子设计报告模板
本科生课程考试成绩单
院系
仪器科学与工程学院
专业
测控技术与仪器
学生姓名
刘英杰
邵闯
王磊
学号
22012327
22012325
22012324
课程名称
综合电子设计实践
授课时间
2014年8月—2014年9月
周学时
6
学分
1
简
要
评
语
考核论题
基于FPGA的日常生活小助手—————健康时钟
成绩
备注
任课教师签名:
日期:
注:
1.以论文或大作业为考核方式的课程必须填此表,综合考试可不填。
“简要评语”栏缺填无效。
2.任课教师填写后与试卷一起送院系。
3.总评成绩以百分制计分。
基于FPGA的日常生活小助手
-------健康时钟
组长:
刘英杰22012327
组员:
邵闯22012325
王磊22012324
目录
摘要-----------------------------------------------------------------------------------------------------
(2)
1.引言--------------------------------------------------------------------------------------------------(3)
2.系统架构--------------------------------------------------------------------------------------------(3)
3.软硬件设计----------------------------------------------------------------------------------------(5)
3.1硬件设计------------------------------------------------------------------------------------(5)
3.1.1DS18B20硬件电路------------------------------------------------------------------(5)
3.1.2心率血氧模块硬件电路------------------------------------------------------------(6)
3.2软件设计------------------------------------------------------------------------------------(6)
3.2.1时钟和显示模块设计---------------------------------------------------------------(6)
3.2.2温度传感器DS18B20软件算法及数码管显示--------------------------------(7)
3.2.3血氧饱和浓度算法实现------------------------------------------------------------(8)
4实验或仿真实验-------------------------------------------------------------------------------(11)
4.1555定时器的Multisim仿真------------------------------------------------------------(11)
4.2心率血氧模块输入与滤波放大电路仿真---------------------------------------------(12)
5.总结-------------------------------------------------------------------------------------------------(14)
参考文献---------------------------------------------------------------------------------------------(16)
摘要:
健康时钟,顾名思义,就是能帮助使用者走向健康的时钟。
本健康时钟拟实现如下功能:
1、时钟显示及调时;2、闹铃设置;3、室温测量;4、使用者血氧饱和度监测;5、使用者心率监测。
本时钟的整体设计包括基本数字逻辑部分和模数混合部分。
基本数字逻辑部分主要包括基本时钟功能,调时校时功能和闹铃设置功能。
模数混合部分主要包括温度测量,血氧饱和浓度及心率测量部分。
整个设计用到了FPGA开发板上的蜂鸣器、红外遥控及红外接收管、数码管这几个现成模块;同时也设计了心率血氧监测电路,并进行了Multisim仿真与PCB的绘制工作。
在整个工作学习过程中,小组成员综合使用了QuartusII、AltiumDesigner、MicrosoftVisio和Multisim等软件来完成此设计。
关键字:
血氧饱和度监测;Beer-Lambert定律;FPGA;时钟闹铃;温度测试
1引言
当今社会是一个竞争压力十分巨大的社会,很多人,特别是年轻人面临着高考升学、商务应酬、人际交往、职位竞争等压力。
因此,很多年轻人不再注意自己生活节奏的规律和身体的健康,亚健康的状态随之而来[1]。
亚健康虽然不是明确的疾病,但却会出现精神活力、适应能力和反应能力的下降,如果这种状态不能得到及时的纠正,非常容易引起身心疾病。
一个人的身体和精神状态与他的心率以及血氧浓度有着密切关系,血氧浓度的高低还反映着一个人新陈代谢的快慢,血氧不足会导致注意力不集中、记忆力减退、头晕目眩、焦虑等症状。
动脉血氧饱和度作为表征人体呼吸循环系统是否存在障碍的重要生化参数,在疾病的日常预防保健之中有重要作用。
[2]综上可见,血氧饱和浓度和人体健康有着密切关系。
在日常生活中,时不时监测一下自己的血氧浓度也有利于自己的身体健康。
鉴于当今市场上的血氧仪价格较高,而且单独购买一个血氧仪,用户可能使用几天就失去兴趣不再使用。
把它结合到使用者每天都会使用的时钟上面,可以增强用户的自我健康监测意识。
因此本课题拟设计一个“健康时钟”,它既有时钟的基本功能,如调时和闹铃,又能进行无穿透的简单心率血氧测量,方便快捷,便于使用者随时监测自己的身体状况。
时钟闹铃部分拟采用现有FPGA开发板[3]进行软件编写;温度测量部分拟采用ds18b20温度传感器和FPGA开发板的通信来完成;血氧饱和浓度监测部分则根据比尔朗伯定律,采用双波长分光光度法,进行外部硬件电路设计[4]。
2系统架构
如图2-1所示本系统拟采用FPGA开发板辅以适当外围电路进行架构。
整体系统控制采用红外遥控器,原因在于:
1、开发板自带的红外遥控已经有了现成的调制解调模块,使用起来十分方便。
2、本课题出发点在于日常生活小助手,使用远程控制模块便于将来添加更多功能。
时钟部分完全应用FPGA内部逻辑资源进行开发,用两个寄存器分别存储当前时刻和闹铃时刻的数据,当两个数据一致时,使能蜂鸣器模仿闹钟功能。
当前可以多建立几个寄存器作为闹铃,实现多闹铃的功能。
温度传感器采用DS18B20,它体积小,硬件开销低,抗干扰能力强,而且精度高。
它具有独特的单线接口方式,在与FPGA连接时仅需要一条口线即可实现双向通讯,但是为了提高精度,我们一般会单独给它供电。
图2-1系统架构框图
血氧饱和浓度模块则主要由驱动电路、解调器和光传感器、滤波放大电路和AD模块组成。
运用双波长法进行测量。
解调器、光传感器和AD模块会应用现有模块,我们需要搭建的主要是驱动电路,即555定时器产生方波驱动红灯以及红外的部分和滤波放大电路。
下图2-2所示是小组设计的红外遥控各按键功能:
数字键可以用来调整时间或者设置闹铃。
如果以后增加更多模块,数字键也可用于功能模式选择。
下图2-3所示是小组完成的FPGA实物部分,包括了温度传感器部分。
因为板子上的灯都是复用的,而由于数码管较小,在显示时分的时候不能显示秒,所以在显示时分时,自己搭的LED灯跳动表示秒的跳动。
数码管可以用红外遥控自由进行各种数据的切换显示。
详见附件视频。
图2-2红外遥控功能示意图
图2-3FPGA实物部分
3软硬件设计
3.1硬件设计
3.1.1DS18B20硬件电路
DS18B20硬件电路比较简单,因为它只有一个引脚与控制器进行通讯,所以用到的接口也很少。
VCC也可以不接,它可以利用输入信号的能量进行供电。
但是为了精确测温,我们为VCC单独接5V供电。
硬件电路见图3-1,其中定义pin119为Bidir双向口。
图3-1温度模块DS18B20电路
3.1.2心率血氧模块硬件电路
在完成整体构思设计之后,我们进行了血氧模块硬件电路的设计[5]。
参照pcb原理图(为了节省篇幅,我们已在附件内把pcb的工程文件附上,此处不再贴出原理图),生成了pcb,在我们完成布线、打孔和覆铜以后,得到了如下图3-2的pcb设计图。
此图已通过电器检查(除了丝印有点问题,但这不影响制版)。
此图左侧的单排7孔焊盘与FPGA或者外部电源连接,分别为+5V,-5V,GND。
还有滤波放大得到后的的红光和红外光数据,直流和交流量各只需一个引脚,因为两种波长的光分时接收。
还有两种波长光接收控制时序的控制引脚。
此电路图的仿真见仿真部分。
图3-2血氧模块PCB
3.2软件设计
3.2.1时钟和显示模块设计
图3-3为时钟模块,因为FPGA强大的数字逻辑功能,所以数字钟部分的设计较为容易,主要注意59分59秒跳0的情况,和23:
59跳00:
00的情况。
图3-4为显示模块设置,主要利用红外遥控器进行控制并显示相应内容。
具体软件源代码请参考附件中的FPGA工程文件。
图3-3时钟模块设计图3-4显示模块设计
3.2.2温度传感器DS18B20软件算法[6]及数码管显示
DS18B20数字温度计提供9位温度读数,指示器件的温度。
信息经过单线接口送入DS18B20或从DS18B20送出,因此只需连接一条线(和地)即可通信。
主机必须首先提供五种ROM操作命令之一:
1)ReadROM,2)MatchROM,3)SearchROM,4)SkipROM,5)AlarmSearch.一个控制操作命令指示DS1820完成温度测量,并将结放放入高速暂存存储器,通过发出读暂存存储器内容的存储器操作命令可以读出此结果。
在利用quartusII的verilog语言编写相关程序时,我们按照下图3-5所示的状态机思路来进行编写:
图3-5DS18B20状态机
在转换得到温度的数字量之后,我们把这个量存放在一个16位的寄存器中,当红外遥控按下相应键时,调用数码管显示模块显示当前温度。
因为只有一个四位数码管,而有时需要显示小数点,有时不需要。
所以我们修改了数码管的显示代码[7],在红外键值对应为温度显示时,数码管的第1位的第7个段码(DP段,对应为小数点)应该置1,即对应的段码要加8'b10000000。
以数字1为例(具体见附件中的代码部分),原来1的段码为NUM_1=8'b01011011;现在应为NUM_1=NUM_1+8'b10000000。
3.2.3血氧饱和浓度及心率测量算法实现
根据医学定义,由于含氧血红蛋白和还原血红蛋白处于同一血液溶液中,他们的含量之比即为浓度之比,这样血氧饱和度为:
(3-1)
式(3-1)中HbO2表示含氧血红蛋白,Hb表示还氧血红蛋白[8]。
鉴于血液中还氧血红蛋白和含氧血红蛋白在红光和红外光区(600~1000nm)有独特的吸收光谱,从而使红外光谱法成为研究组织中血液成分的简单可靠的办法。
利用光谱学的方法,对生物组织进行无损检测,这种方法安全可靠、连续实时且无损伤。
由于人体动脉的搏动能够引起测试部位血液流量的变化,从而引起光吸收量的变化,而非血液组织(皮肤、肌肉、骨骼等)的光吸收量通常认为是恒定不变的。
因此,我们可以通过检测血液容量波动引起的光吸收量的变化,并且消除非血液组织的影响来求得血氧饱和度,简单易行。
利用指夹式探头,在探头的一侧安装了两个发光管,一个发出红光,一个发出红外光,另一侧安装有一个光电检测器,将检测到的透过手指动脉血管的红光和红外光转换成电信号。
这种方法称为透射式血氧饱和度检测方法。
(图3-6)
图3-6透射式血氧饱和度测量方法
无创血氧饱和度检测是基于动脉血液对光的吸收量随动脉波动而变化的原理。
在透射式血氧饱和度检测中,当透光区域动脉血管搏动时,动脉血液对光的吸收量将随之变化,称为脉动分量或交流量(AC);而皮肤、肌肉、骨骼和静脉血等其他组织对光的吸收是恒定不变的,称为直流量(DC)。
如果忽略由于散射、反射等因素造成的衰减,按照Beer-Lambert定律,当动脉不搏动时,假设波长为
光强为
的单色光垂直照射人体,通过人体的透射光强度为:
(3-2)
其中组织内的非动脉成分及静脉血的总吸光系数、光吸收物质浓度、光路径长度分别表示为
、
和L,动脉血液的主要成分是含氧血红蛋白和还氧血红蛋白。
其中
、
分别是动脉血液中
的吸光系数和浓度,
、
分别是动脉血液中Hb的吸光系数和浓度。
当动脉搏动、血管舒张时,假设动脉血液光路长度由L增加了△L,相应的透射光强由
变化到了
-
。
则式(3-2)可写作:
(3-3)
对上式进行变形并求e的对数,即:
(3-4)
考虑到透射光中交流成分占直流量的百分比为远小于1的数值,则:
(3-5)
由式(3-5),对式(3-4)进行变换得:
(3-6)
因为光路径长度变化属于未知量,所以采取两束不同波长的光作为入射光分时入射,即双光束法。
设两束光的波长分别为
和
,令:
则:
(3-7)
把式(3-7)代入血氧饱和度公式:
,并变形得:
(3-8)
图3-7含氧血红蛋白和还氧血红蛋白吸光系数
由图3-7可见,当
波长选在含氧血红蛋白和还氧血红蛋白吸光系数曲线交点(800nm左右)时,即
时,上式变形为:
(3-9)
令
,则上式变为:
(3-10)
在实际应用时[9],考虑到作为光源的发光二极管的个体差别以及人体生理组织的较大差异等因素,在计算中应采用经验化计算公式,即
,其中,A、B可以通过实验定标确定。
在透射型的血氧传感器中,光源一般选择为660~940nm,选择660nm可保证血氧饱和度公式中的常数项B尽可能小,以提高检测的灵敏度;另一光波长940nm尽管偏离了等吸收点805nm,但两物质在这一范围内的吸收光系数变化不大,且经有关实验证明,波长选择在940nm可以更好的满足透射式血氧计算公式中的线性关系。
图3-8血氧监测模块设计流程图
上图3-8是血氧监测模块设计流程图,在模数转换得到数据之后,相邻两个峰值之间的周期T就是两次脉搏波动的周期,即心率为1/T。
·4实验或仿真实验
实验部分我们会在附件里面附上视频,由于实验只是展示,所以在本文中不再花费篇幅。
我们在此小节主要讨论硬件电路的仿真部分。
4.1555定时器的Multisim仿真
参考刘京南老师的矩形波振荡电路[10]以及图4-1。
可知,高电平持续时间为
,低电平持续时间为
频率为
占空比为
。
修改相应的电阻值和电容值,并对照改为标称值。
Multisim仿真见图4-2。
图4-1555定时器产生方波电路图
图4-2555定时器的Multisim仿真波形
4.2心率血氧模块输入与滤波放大电路仿真
由3.2.3节原理分析我们可以知道,测量血氧的任务就是通过让光敏元件接收透过人体的两种波长的光,然后经过一系列滤波放大电路之后,获得其中的交流分量和直流分量。
下图4-3为Multisim仿真原理图。
该原理图取设计的PCB双路滤波放大电路中的一路,输入信号是:
1、频率0.8Hz、幅度为30mv的正弦波;2、200mv直流量以及频率为1kHz(实际上直流量更大,超过交流量的100倍,但是为了观测方便,我们适当减小了直流分量);3、幅度为10mv的正弦波,这三种信号的叠加。
也就是,
(mv)。
用该输入来仿真实际测量中带干扰的输入信号。
图4-3血氧模块Multisim仿真原理图
下图4-4是仿真的两种光源得到数据的直流分量,其中channelB是仿真输入,即上面那条带有大量干扰信号的粗红线波形。
如果将扫描速度提高,我们可以看到粗红线的信号干扰是极其大的。
实际上,粗红线的波形是由一个高频正弦波和其他分量组成的信号。
channelA是输出,是下面那条细红的波形,从图中可以近似认为输出的就是直流分量。
完成直流分量的采集之后,我们会把直流分量滤除,继续放大交流分量,进行交流分量的采集。
图4-4光源直流分量与原始输入
下图4-5是最终波形输出,其中channelA是输出,是下面那条细红的波形,channelB是仿真输入。
图4-5血氧滤波仿真结果
由上图4-5可见,仿真的结果很理想,虽然还是有一部分的直流分量,但这也跟零漂有关,不影响最后数据的获得,如果需要解决,只需在运放的调零端接上电位器进行调试即可,由于仿真速度太慢,此处不再进行调零。
除此之外,最后的波与输入有一定的相位差,但是由于我们的计算公式中没有涉及相位差,所以这也不影响我们的数据获得。
综上,血氧模块的滤波电路通过了仿真。
5总结
本文主要创新点:
现代多数人的身体处于亚健康状态,常常对自己一些生理指标进行监测对日常保健很有意义,但是很少有人会把这种监测当做一种习惯。
一个血氧仪买来三五天或许就会被扔到角落堆灰。
我们的主要创新点在于医、电跨学科结合,将用于日常监测健康的血氧仪和人们天天需要用到的闹钟结合在一起。
目的在于时时提醒人们注意自己的身体,远离亚健康或者其他的一些身体问题,以期对用户保持自己的身体健康能有所帮助。
新发现:
其实健康时钟还能跟很多模块结合实现更强大的功能,比如可以利用zigbee和串口通讯去控制或者定时控制一些家电,初步模拟智能家居。
此外,FPGA强大的多线程并行运行能力也可以和单片机结合,完成更多的应用设计。
新问题:
血氧模块我们只是进行了仿真和PCB的设计以及布线布局,但是实际测量时可能会有更多的干扰信号和噪声污染,可能需要更优秀的数据处理方式以及滤波电路才能真正实现血氧的高精度测量。
收获:
在整个小课题设计过程中,我们所得到的收获是丰富的。
我们不仅仅收获到了控制器运行出预期结果的各种喜悦,也尝到了每次“语句全对,逻辑感觉全对”但结果死活不对的痛苦,FPGA是完全不同与单片机的东西,以写单片机的思路去写,问题确实很多。
这也让我们了解到了,现代各类神奇器件的繁多,让我们着实开了眼见。
在做血氧模块的过程中,我们跌跌撞撞地开始使用AD画图,出现了不少问题,有些至今也不理解原因,但是勉强也算了解了一项技术。
在设计滤波电路的过程中,我们参考了很多资料,顺便把模电也狠狠地重新学习了一遍,感觉真是值了!
下面是组员的部分心得:
本次的课程设计,我负责的是利用Altium designer画出我们所需的电路板的原理图和用1820温度传感器测量当前温度。
对于这两部分,我都是个初学者。
首先上手Altium designer便让我感到棘手。
元件库中的无法找到所需元件,我就学习如何自己创建和添加元件库,如LM324等。
同时,在生成PCB时的检测,发现如“footprint no found”的封装问题和“unknown pin”的引脚不对应问题,我通过查阅书籍,网络搜索和自我探索的方法,最终解决了这些问题。
当然,在使用Altium designer的软件过程中遇到兵解决更多的一些细小的问题,都让我熟练的使用这款软件。
其次是在FPGA板上使用1820温度传感器来测量当前温度。
这个部分对于我而言更是一个巨大挑战。
我首先从最基础的输入输出学起,从而对于Verilog HDL有了一定的认识。
然后学习了1820使用手册,了解了1-wire总线的初始化,读,写等操作。
虽然1—wire总线操作形式上相对简单,操作本身却又相对复杂。
以上便是我在此次的课程设计中的个人收获。
由于视频文件较大(57MB),我们给出了观看和下载链接
观看地址:
下载地址:
参考文献
[1]张献珍.当代人出现亚健康的主要原因[C].理论研究.
[2]严新忠,杨静,郭略.人体血氧饱和度检测方法的研究[A].(2005)12-0001-04
[3]美RonSass,李杨(译).FPGA嵌入式系统设计原理与实践[M].清华大学出版社,北京.2012年4月.
[4]王秀章,陈声权.脉搏式血氧饱和度检测方法的研究[J].中国医学物理学杂志,1995,
(1)
[5]胡文华,胡仁喜等编著.[M]AltiumDesigner13电路设计入门与提高.北京.化学工业出版社.2013年10月.
[6]美信公司.DS18B20数据手册.
[7][美]SamirPalnitkar.夏宇闻(译)VerilogHDL数字设计与综合[M](第二版)电子工业出版社.2009年7月.
[8]于巍,古庆恩,黄世安.脉搏血氧饱和度监测技术的研究进展[J].中国医学装备,2008,(4).
[9]张志鹏.一种人体动脉血氧饱和度无创检测方法研究[D].2011年5月
[10]刘京南.电子电路基础[M]北京:
电子工业出版社,2003:
203-205.