基于STM32的红外测温系统设计_第1页
基于STM32的红外测温系统设计_第2页
基于STM32的红外测温系统设计_第3页
基于STM32的红外测温系统设计_第4页
基于STM32的红外测温系统设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

基于STM32的红外测温系统设计基于STM32的红外测温系统设计87-目录中文摘要 -2-英文摘要 -3-1引言 -4-1.1课题研究的背景及意义 -4-1.2数字式测温和红外测温技术的发展现状 -5-1.3红外测温的特点 -6-2系统的方案设计与论证 -6-2.1单片机选择与论证 -6-2.2红外传感器选择与论证 -7-2.3显示模块选择与论证 -7-3系统硬件的设计 -7-3.1STM32F103系列微控制器概述 -8-3.2MLX90614红外测温模块设计 -10-3.3DS18B20温度检测模块设计 -11-3.4LCD1602显示模块设计 -12-3.5按键控制模块设计 -13-3.6复位电路设计 -14-3.7电源电路设计 -14-3.8报警电路设计 -15-3.9本章总结 -16-4系统的软件设计 -16-4.1主程序流程图的设计 -17-4.2部分程序流程图的设计 -18-4.3程序实现 -21-5系统调试 -28-5.1系统软件调试 -28-5.2系统硬件调试 -31-6总结 -33-谢辞 -34-参考文献 -351-图表清单TOC\h\z\c"图表"图3-1系统硬件电路整体框图 -8-图3-2STM32F103封装图 -9-图3-3STM32F103引脚图 -9-图3-4STM32F103主控电路 -10-图3-5MLX90614红外测温电路 -11-表3-1MLX90614引脚功能介绍 -11-表3-2DS18B20引脚及功能 -11-图3-6DS18B20温度检测模块硬件电路连接图 -12-图3-7LCD1602液晶显示屏显示模块硬件电路连接图 -13-图3-8按键控制模块硬件电路连接图 -13-图3-9复位电路 -14-图3-10电源管理电路 -15-图3-113.3V转换电路 -15-图3-12报警电路 -15-图3-13整体硬件原理图 -16-图4-1主程序流程图 -17-图4-2LCD液晶显示模块 -18-图4-3SMBus数据包组成 -19-图4-4数据读取的格式 -19-图4-5MLX90614程序流程图 -20-图4-6DS18B20程序流程图 -21-图4-5程序编写页面 -22-图5-1Proteus8.8进入页面 -28-图5-2Proteus仿真软件操作页面 -29-图5-3基于STM32红外测温系统仿真图 -29-图5-4环境温度显示页面 -30-图5-5目标温度显示图 -30-图5-6报警温度 -30-图5-7蜂鸣器报警 -30-图5-8AltiumDesigner16操作页面 -31-图5-9系统整体原理图 -32-基于STM32的红外测温系统设计摘要:随着我国经济的发展,社会的进步。温度是确定物质状态的重要参数之一,体温是人体生命活动的基本特征,也是观察人体机能是否正常的重要标志之一。红外测量为测量人体温度提供了快速,非接触测量手段,可广泛的应用于密集型人体体温测量。红外测温技术是一门很实用和前言的技术。作此课题,有利于理论联系实际,更好的掌握这一方面的知识体系,是对学习内容的升华,特别是对单片机控制技术的深入理解。对于自身综合素质和工程能力的培养有重要的意义。红外测温仪在工业领域广泛应用,但由于医用红外测温仪的特殊要求。1989年以来,热释电耳道式测温仪才成功的用于体温测量,1991年以后该产品已经遍及欧美市场,我国在这方面起步较晚。随着医疗技术的快速发展,人们对非接触、快速有效测温技术的需求越来越大,传统的接触式人体测温仪已经不能满足现代医用领域的测温需求。红外测温仪具有安全、可靠、非接触、快速、准确、方便、寿命长等方面不可替代的优势,己被越来越多的医疗行业认识和接受。本文通过基于STM32的红外测温系统设计,提供更好的建议,促进其发展。关键词:STM32;红外测温;设计

Designofinfraredtemperaturemeasurementsystembasedonstm32

Abstract:WiththedevelopmentofChina'seconomyandsociety.Temperatureisoneoftheimportantparameterstodeterminethestateofmatter.Bodytemperatureisthebasiccharacteristicsofhumanlifeactivities,andalsooneoftheimportantsignstoobservewhetherhumanfunctionisnormal.Infraredmeasurementprovidesafast,non-contactmethodformeasuringhumanbodytemperature,whichcanbewidelyusedinintensivehumanbodytemperaturemeasurement.Infraredthermometryisaverypracticalandforewordtechnology.Itishelpfultocombinetheorywithpracticeandmastertheknowledgesystemofthisaspectbetter.Itisthedistillationoflearningcontent,especiallythein-depthunderstandingofMCUcontroltechnology.Itisofgreatsignificanceforthecultivationofselfcomprehensivequalityandengineeringability.Infraredthermometersarewidelyusedintheindustrialfield,butduetothespecialrequirementsofmedicalinfraredthermometers.Since1989,pyroelectricearchannelthermometershavebeensuccessfullyusedintemperaturemeasurement.Since1991,theproductshavebeenwidelyusedinEuropeanandAmericanmarkets,andChinastartedlateinthisrespect.Withtherapiddevelopmentofmedicaltechnology,peopleneedmoreandmorenon-contact,fastandeffectivetemperaturemeasurementtechnology.Thetraditionalcontacthumanbodythermometercannotmeettheneedsofmodernmedicalfield.Infraredthermometerhastheirreplaceableadvantagesofsafety,reliability,non-contact,fast,accurate,convenient,longlifeandsoon.Ithasbeenrecognizedandacceptedbymoreandmoremedicalindustry.BasedonthedesignofinfraredtemperaturemeasurementsystembasedonSTM32,thispaperprovidesbettersuggestionsandpromotesitsdevelopment.Keywords:STM32;infraredtemperaturemeasurementsystem;design基于STM32的红外测温系统设计1引言1.1课题研究的背景及意义由于需要寻求医学发展,在许多情况下,普通水银温度计不能满足快速和准确的温度测量的要求,如车站和机场等人口稠密的地方进行人体温度测量。虽然国外温度测量技术比较成熟,但国内在这方面的技术还处于发展阶段。因此,为了满足医学发展的需要,红外非接触式测温就显得至关重要。随着人们生活水平的不断提高和生活需求水平的提高,人们越来越关注自己的健康,而体温、血压、脉搏和呼吸是一种重要参数确定人体健康,监测和测量这些生理指标可以更好地反映人体的健康状况,使其在医疗领域占有非常重要的地位。人体的温度对我们是很重要的,如果没有体温计或者测得的温度精度不高,那么我们对于人体健康的判断就是模糊的、不准确的,就比如在现今的疫情防控中,如果我们不清楚人员的体温就无法判断这个人是否需要隔离,或者我们如果无法得到准确的体温就可能造成错误隔离。所以说温度对于我们人类来说是一个很重要的计量单位,那么如何更加高效卫生的测量温度就出现在了我们面前。传统的水银体温计在测量体温时不仅耗时长还不卫生,要知道在使用水银体温计就需要与人体有一定的接触,所以在现今的新冠病毒防疫中完全起不到任何作用。那么这时候红外测温的优点就体现出来了,要知道红外测温是一种非接触式的测温,所以在疫情防控中可以起到很大的作用。本设计主要围绕体温的生理指标,以STM32为控制核进行实时温度采集,开发整个设计过程。红外温度计根据红外温度计的原理,通过选择关键器件并自动调节温度补偿,提高了红外温度计的精度。本文主要概述了非接触式人体体温测试仪的硬件设计和软件设计。硬件首先讨论了系统的整体设计,然后讨论了红外传感器、运算放大器、按键电路、数据处理、显示部分等功能模块的讨论,并详细介绍了每个芯片的结构和功能,使系统具有良好的稳定性。软件使用C语言来编写,可以使编译速度快,运行速度高。非接触式温度计的设计以功能为基础,以创新为导向,以实践为基础,具有广阔的发展前景和广泛的应用前景。通过这种设计,希望今后扩大温度监测应用的应用范围,提供新的思路和方法,在医学、体育、消防、军事训练等领域多用广泛。1.2数字式测温和红外测温技术的发展现状温度传感器从最初的分立式发展到现在的数字式,一共经历了三代,最新式的数字温度传感器相对于之前的两代温度传感器有了以下技术的革新:(1)数字温度传感器的信号是经过滤波和增益放大的,所以它克服了普通信号中易产生杂波和波形失真和衰减的弊病,可以实现更好的稳定性和可靠性。(2)数字温度传感器的信号是经过加工的,方便计算机的处理和存储,同时具有更高的安全性。(3)数字温度传感器采用的是数字信号处理集成电路,体积很小,对温度的响应迅速,电路运行相对稳定可靠。同时数字式温度传感器也面临需要进一步解决的一些问题,例如经过A/D转换电路,对转换芯片的抗干扰性、转换精度和校零技术都有很高的要求。随着技术的进步,数字式温度传感器的性能将进一步大大提高,广泛应用于更多的领域。红外形式辐射的能量的大小和这个物体的表层温度的高低有重要的关系,因此通过测量物体红外辐射出来的能量就可以根据换算公式精准的计算出物体的表面温度,这就是红外测温的工作原理。进入20世纪以来的几十年间,在前人的理论基础之上,红外辐射和红外测量技术日臻完善。红外探头、红外测温传感器、红外气体传感器等大量红外检测器件设备不断出现,红外传感器日益小型化、智能化和数字化,拥有了很多无可比拟的优点:a.非接触式红外测温传感器可以在不直接接触到待测物体的情况下实现对这一物体温度的测量,这样可以避免影响到待测物体的温场热平衡,防止污染和干扰。b.快速精确,红外测温传感器一般精度都可以控制在1°C之内,反应时间很短,可以实现在未完全达到热平衡的条件下快速精准测温。c.安全方便红外传感器体积较小,易于操作,同时可以在不安全区域或者无法接触的地方测量温度数据,大大保障了人员的安全。虽然红外测温技术已经越来越成熟,但是目前仍然存在一些技术上的难点,这也是今后红外测温的重要发展方向,例如红外测温数据易受距离、角度、环境、物体反射率、厚度等相关因素的影响,只能测量物体的外部温度,如何更好的实现温度的补偿都是亟待解决的关键问题。1.3红外测温的特点红外测量体温是通过接收人体红外线能量的大小来判定温度的大小,通过红外传感器测采集的信息,传输到微处理器,进行处理,最终转换成温度在显示模块上显示。因此红外测温具有下列优点非接触测量:红外测温是不需要接触到人体的,在距离目标几厘米的位置就可以采集数据,因为红外探测器之是感应人体所辐射的红外线,所以不会对人体造成伤害。测量范围广:因为该测温方式是非接触式的,所以并没有处在过高或过低的温度场中,它是在正常温度下工作或在条件允许的情况下工作,因此测量的范围会比较广。测量速度快:即响应时间短。这是因为红外探测器中的灵敏元很灵敏,在接收到红外辐射开始,能很快完成测温。准确度高:红外测温不会破坏物体本身的温度分布,所以测量精度高。体积小,便于携带。2系统的方案设计与论证2.1单片机选择与论证方案一:使用80C51单片机为本系统的核心控制器,它有8位CPU,4KBROM存储空间,128BRAM存储空间,单一+5V供电;不具备自编程能力,即在系统程序调试时,程序错误的修改或程序新增功能的增加时,需要多次拔插芯片,因此会对芯片造成一定程度的损坏。方案二:使用STM32F103作为本系统的控制核心,STM32系列基于为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。并带有512KB的高速Flash存储器,其内部集成了3个12bit的ADC,1个2通道12bitDAC,有多达11个定时器,其中有两个16bit带死区控制和紧急刹车,用于电机控制的PWM高级控制定时器。利用此控制器可快速进行数字滤波、温度补偿等数据处理任务[3]。单片机STM32F103单片机具有数据处理功能,内部具有ADC模块不需要外接A/D转换模块,因此简化了电路图,故使用方案二STM32F103单片机作为本次设计的核心部件。2.2红外传感器选择与论证方案一:使用红外温度传感器IRTR,但是这个系列的红外传感器是一种集成的多用于工业方面的传感器。方案二:使用热电堆红外传感器MLX90614,MLX90614是一款用于非接触式的红外温度传感器,集成了红外探测热电堆芯片与信号处理专用集成芯片,全部封装在TO-39。低噪声放大器、17位ADC和强大的DSP处理单元的全集成,使传感器实现了高精度,高分辨率的测量。方案一中传感器多用于工业方面,因此不选用方案一,由于MLX90614具有较高的灵敏度,以及较小的热惯性,所以适用于医学测温,故选方案二。2.3显示模块选择与论证方案一:使用LED数码管显示。LED数码管价格便宜,使用简单,电压低,寿命长可以用于所有数字参数的显示。方案二:采用LCD1602液晶显示屏显示。硬件电路制作简单,可直接连接到微控制器端口,程序控制简单,能耗低,显示内容多,可显示32个字符。方案一中数码管,电路复杂显示的信息也没有方案二多,但是方案二中液晶显示屏显示信息量大,而且更加美观,同时它的功耗和尺寸都很小。在本系统中需要的显示的信息量要稍大一些,而且要更加直接,故而选择方案二LCD1602液晶显示屏显示。3系统硬件的设计本课题拟以STM32单片机为控制核心,由红外线传感器、电源、温度传感器、单片机、LCD显示模块等组成,数字红外传感器将物体红外辐射转换成数字信号,输入到STM32控制器;环境温度传感器测量环境温度,并在STM32控制器里对红外测温进行温度补偿,提高测温精度。经STM32控制器运算后,传感器信号在液晶屏上显示出物体温度读数,并伴随有蜂鸣提示,实现对温度较精确测量。如图3-1所示。图表SEQ图表\*ARABIC1图3-1系统硬件电路整体框图3.1STM32F103系列微控制器概述STM32系列微控制器,是以ARMCortex-M3为核心而开发的32位处理器,分成几个不同的系列:STM32L超低耗型,STM32F105和STM32F107互联型,STM32F103增强型,STM32F102USB基本型,STM32F101基本型,STM32F100超值型[4]。在本次设计中,采用的是STM32F103。STM32F103系列增强型微控制器采用的是高性能的32位ARMCortex-M3RISC内核,凭借缩小的内核尺寸、出色的中断延迟、集成的系统部件、灵活的硬件配置、快速的系统调试和简易的软件编程,Cortex-M3处理器是嵌入式系统的理想解决方案[5]。STM32F103XX系列微控制器配置非常强大,拥有112个通用I/O端口,有3个12位的ADC、3个通用16位的定时器,有TIC、SPI同步串行的接口、USART异步串行的接口、USB全速的接口等各种标准通信接口[6]。I/O翻转速度可达18MHZ。图3-2是基于ARMCortex-M3内核的STM32F103系列微控制器的外观(LQFPIOO封装)。图3-3是STM32F103的引脚图。图表SEQ图表\*ARABIC2图3-2STM32F103封装图图表SEQ图表\*ARABIC3图3-3STM32F103引脚图下图,图3-4为STM32F103主控电路。该芯片配置资源十分丰富,有足够的I/O端口,还有内置的定时器。因此可以用简单的电路来实现复杂的功能。图表SEQ图表\*ARABIC4图3-4STM32F103主控电路3.2MLX90614红外测温模块设计对人体的非接触式测温是设计的重点,对传感器的性能要求比较高,设计中采用的MLX90614红外温度传感器不仅性能出众,而且设计简单。它支持两线串行通信协议,并且采用了符合工业标准的TO-39封装形式,一共有四个外部引脚,分别为SCL(串行时钟)、SDA(信号输入)、VDD(电源)和VSS(接地)管脚,四个管脚的功能描述如表3-1所示。MLX90614有箝位二极管,连接在SDA/SCL和VCC之间,以提供给MLX90614器件电源,而使SMBus线不会成为负载。如图3-5所示,传感器的SCL和SDA管脚分别与微控制器的PB1和PB0相连接,为了进一步提高管脚的驱动能力和保证信号的稳定,对传感器以上两个管脚都选择了上拉处理。图表SEQ图表\*ARABIC5图3-5MLX90614红外测温电路引脚名称作用VSS接地端,接传感器的金属壳VDD电源接入端PWM/SDA数字输入与输出。正常情况下,可在此读出PWM制式的目标温度,在SMBus模式下,默认为集电极开路状态。SCL/VZ双线通信协议中的串行时钟输入。图表SEQ图表\*ARABIC6表3-1MLX90614引脚功能介绍3.3DS18B20温度检测模块设计与传统热敏电阻等部件相比,DS18B20温度传感器可以直接读取测量的温度。DS18B20温度传感器采用了3线制与单片机相连,所测量温度的范围在-55℃~125℃。本系统中DS18B20温度传感器的DQ端口与单片机的PB11端口相连,表3-2为DS18B20各个管脚及功能。DS18B20温度检测模块硬件电路连接图如图3-6所示。引脚名称引脚功能GND接地DQ单线操作的数据输入/输出VCC接电源,此引脚必须接地图表SEQ图表\*ARABIC7表3-2DS18B20引脚及功能图表SEQ图表\*ARABIC8图3-6DS18B20温度检测模块硬件电路连接图3.4LCD1602显示模块设计LCD1602是一种液晶显示器,它主要由点阵字符组成,显示的内容最多为两行,每行最多可以显示16个字符,如字母、数字和符号等。在显示少量字符时,LCD1602更受各种仪器和低功耗系统的欢迎和广泛应用,因为它具有更低的能耗、更小的尺寸、更多的显示内容。它的三个控制引脚分别是RS,RW,EN。RS控制其内部数据寄存器和指令寄存器的选择,RW控制读操作或写操作,EN是LCD1602使能端,下降沿有效,低电平触发片选信号。本系统LCD1602的D0~D7分别与单片机的I/O口相连,由于I/O口内部没有上拉电阻,所以外部需要另加10KΩ的上拉电阻。单片机的PD1~PD3端口分别控制LCD1602的RS、RW、EN三个控制管脚;可通过LCD1602的RV1引脚来调节显示灰度;要想点亮背光灯,就要给背光的阴极BLK和阳极BLA接上相应电平。LCD1602液晶显示屏显示模块硬件电路连接图如图3-7所示。图表SEQ图表\*ARABIC9图3-7LCD1602液晶显示屏显示模块硬件电路连接图3.5按键控制模块设计本系统用到了4个按键控制,其中一个为复位按键,用作系统手动复位使用,另外3个分别与STM32F103微控制器的PC13、PC1、PA0端口相连,按键控制模块硬件电路连接图如图3-8所示。图表SEQ图表\*ARABIC10图3-8按键控制模块硬件电路连接图对以上3个按键作简要说明:KEY1——减键/日期查看键;KEY2——加键/测温停止键;KEY3——选择键/测温启动键;KEY3(选择键/测温启动键):在时间信息设置模式下,按下KEY3,光标移动,可根据具体要使光标移动到哪个地方来决定按下独立按键的次数;在测温模式下,按下KEY3(此时为测温启动键),表示测温开始。KEY2(加键/测温停止键):在时间信息设置模式下,按下KEY2来进行时间信息设置的加操作;当处于测温模式时,按下KEY2停止测温。KEY1(减键/日期查看键):当直接按下KEY1时,显示当前日期;在设置时间信息时,按下KEY1进行时间信息设置的减操作;3.6复位电路设计只有在低电平的条件下,STM32微控制器才会复位。所以使用低电平复位的复位电路,按下复位键使复位引脚RESET持续一段设计的低电平,实现复位操作,如图3-9。图表SEQ图表\*ARABIC11图3-9复位电路3.7电源电路设计整个系统的能量都是由电源提供的,可以说电源模块就是整个系统的心脏。在本次设计中,因为STM32F103所需的工作电压为3.3V,所以需要5V和3.3V分别提供能量。图3-10就是提供5V电压的模块,主要是给LCD1602提供5V电压。如图3-11为3.3V转换电路,此电路主要给ST32F103微控制器提供能量,该图中的AMS1117-3为3.3V转换芯片。图表SEQ图表\*ARABIC12图3-10电源管理电路图表SEQ图表\*ARABIC13图3-113.3V转换电路3.8报警电路设计此次设计中采用报警电路如图3-12,是为了更加快捷的确认目标温度,设置一个正常体温数值,当超过正常数值时,蜂鸣器就会报警,这样就可以更加快速的判断目标有无发热。我认为采用报警的方式可以不用去看示数就能知道目标发热,这在防疫工作中会使工作更加便捷。图表SEQ图表\*ARABIC14图3-12报警电路3.9本章总结本章主要描述了硬件方面的设计,采用主控芯片STM32F103作为微控制器;MLX90614和DS18B20来做为测温电路,其中前者通过红外测量目标温度,后者测量环境温度,由于MLX90614是高度集成的,所以本系统中不需要信号调理电路;LCD1602作为显示模块,显示所需要的数据;并且根据不同器件不同的工作电压设计了5V和3.3V的观点电路。下图图3-13为整体硬件原理图。图表SEQ图表\*ARABIC15图3-13整体硬件原理图4系统的软件设计要想实现红外测温系统的设计光有硬件是不够的,还必须有软件的辅助。软件的设计跟硬件一样也是分模块进行,分成各个模块便于程序的调试。写成各个子程序,然后在主程序中调用各个子程序,来实现各部分的功能。4.1主程序流程图的设计本系统的软件实现流程为:程序运行开始,整个系统都进行初始化,其中包括STM32单片机I/O端口的初始化、MLX90614红外传感器初始化、DS18B20温度传感器的初始化、LCD1602液晶显示屏的初始化,运行按键扫描程序,检测是否有按键按下,如果没有按下则回到上一步继续判断,如果有按键按下,则开始测温,如果接收到测温指令,则开始红外测温,反之回到第一步继续判断,然后如果得到所需数据,则计算出温度并显示,反之继续红外测温。最终数据将在LCD1602上显示出来,以此循环。主程序流程图如图4-1所示。图表SEQ图表\*ARABIC16图4-1主程序流程图4.2部分程序流程图的设计此次设计使用用模块化设计,主要有LCD1602显示模块、MLX90614红外测温模块、DS18B20温度检测模块。首先介绍的是LCD1602的流程图设计,其流程图如下图图4-2所示。图表SEQ图表\*ARABIC17图4-2LCD液晶显示模块然后介绍MLX90614红外传感器,与标准的SMBus接口支持11条指令不同,MLX90614只支持其中的两条。MLX90614的总线协议为:SD在每接收到8位数据之后,都会反馈发送一个ACK或NACK信号。MD在初始化一次通信时,首先会发送一个SA,只有能识别这个地址的SD会反馈一个ACK信号,期间,其他的SD无任何动作。若SD有反馈NACK信号,MD需停止此次通信并且重新发送信号。在PEC码之后,可能会接收到NACK信号,这意味着接收到的数据有误,此时,MD需试着再发送数据。PEC码的计算包含START,REPEATEDSTART,STOP,ACK和NACK。PEC是CRC-8的校验码,多项式为X8+X2+X1+1。数据传输中,总是先传输字节的最高位。图4-3为SMBus数据包组成,图4-4为数据读取的格式。图表SEQ图表\*ARABIC18图4-3SMBus数据包组成图表SEQ图表\*ARABIC19图4-4数据读取的格式MLX90614的程序流程图如图4-5,先对MLX90614进行初始化,然后微控制器STM32按照SMBus协议对储存在RAM里的数据进行读取,最后通过相关公式转换成摄氏温度的数据,公式如下:T(℃)=RAM(DataH:DataL)×0.02—273.15图表SEQ图表\*ARABIC20图4-5MLX90614程序流程图最后介绍的是DS18B20的系统流程图设计,DS18B20通讯协议包括初始化、读取、写入时序。当工作开始时首先要对其初始化,然后MCU执行写跳过ROM指令、写温度转换命令,再次对DS18B20进行初始化,MCU重复上述过程,发送读取温度的命令,最后STM32微控制器对得到的数据进行处理,得到所需数据。具体流程如图4-6所示。图表SEQ图表\*ARABIC21图4-6DS18B20程序流程图4.3程序实现KeiluVision5编程软件,是一种基于C语言的开发软件,它的兼容性强,可以进行程序编写、编译、调试。除此之外,它生成的.hex文件可以直接导入到Proteus仿真中的单片机芯片中,以完成系统的仿真。使用uVision5编程软件时,可以不分模块把所有函数写在一起,当然也可以分模块进行编写,只要在主函数里调用各个子程序的头文件,这样就能实现整体的程序编写。不过在本次设计中,采用的是分模块进行,采用这种方法是为了简化编程过程,同时也方便了程序的修改与编译过程。其程序编写页面如图4-5所示。图表SEQ图表\*ARABIC22图4-5程序编写页面本系统的主函数程序如下所示。#include"stm32f10x.h"#include"delay.h"#include"usart.h"#include"LCD1602.h"#include"led.h"#include"adc.h"#include"timer.h"#include<stdio.h>#include<math.h>doubleTemperature,OldTemperature;//测量温度#defineAlarmTemperature38//报警温度char*buff;unsignedcharcnt;voidCleanBuffer(void){ unsignedchari; for(i=0;i<sizeof(buff);i++) { buff[i]=0; }}intmain(void){ delay_init(); NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级Init_LEDpin(); LCD_init(); Adc_Init(); TIM3_Int_Init(799,99);sprintf(buff,"%4d-%2d-%2d",Year,Month,Day); LCD_write_string(1,2,buff); CleanBuffer(); while(1) { Temperature=(float)Get_Adc_Average(1,5)/163.84+20; if(OldTemperature!=Temperature) { OldTemperature=Temperature; flash=1; if(OldTemperature>=AlarmTemperature) LED1=0; else LED1=1; } if(flash==1) { flash=0; sprintf(buff,"%2d:%2d:%2d%2.1fC",Hour,Minute,Seconde,OldTemperature); LCD_write_string(1,1,buff); CleanBuffer(); } if(flash==2) { flash=0; sprintf(buff,"%4d-%2d-%2d",Year,Month,Day); LCD_write_string(1,2,buff); CleanBuffer(); } }}//定时器3中断服务程序voidTIM3_IRQHandler(void)//TIM3中断{if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)//检查TIM3中断发生与否 { TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除TIMx更新中断标志 cnt++; if(cnt>=100) { cnt=0; Seconde++;sprintf(buff,"%2d:%2d:%2d%2.1fC",Hour,Minute,Seconde,OldTemperature); LCD_write_string(1,1,buff); CleanBuffer(); if(Seconde>=60) { Seconde=0; Minute++; flash=1; if(Minute>=60) { Minute=0; Hour++; flash=1; if(Hour>=24) { Hour=0; Day++; sprintf(buff,"%4d-%2d-%2d",Year,Month,Day); LCD_write_string(1,2,buff); CleanBuffer(); flash=2; switch(Month) { case1: case3: case5: case7:case8: case10: case12: {if(Day>31) {Day=0; Month++; flash=2; if(Month>12) { Month=1; Year++; flash=2; } } }break; case4: case6: case9: case11: { if(Day>30) { Day=0; Month++; flash=2; if(Month>12) { Month=1; Year++; flash=2; } } }break; case2: { if(((Year%4==0)&&(Year%100!=0))||Year%400==0) { if(Day>29) { Day=1; Month++; flash=2; if(Month>12) { Month=1; Year++; flash=2; } } }else { if(Day>28) { Day=1; Month++; flash=2; if(Month>12) { Month=1; Year++; flash=2; }} } }break; } } } } } }}

5系统调试5.1系统软件调试本次设计选用的是Proteus仿真软件来完成红外测温系统的整体电路的仿真。Proteus是一款很出色的电路仿真软件,在单片机设计中有着举足轻重的作用。Proteus功能比较全面,它的仿真器件的驱动来自于C语言代码,因此它有非常多的专用功能来处理字符串方面的问题,大大简化了操作流程,方便进行仿真。正是因为它的简单方便,功能强大,使得广泛流传,普遍被使用。当然,它不仅具备比较完善的模拟仿真功能,更重要的是能仿真单片机和大量与之相关的器件。Proteus的设计理念和设计方式都非常的合理先进,受到了许多单片机学习者、爱好者的青睐,收获了众多好评,它的设计成功打破了仿真软件的局限性。该软件能兼容其他许多文件,并且集融合电路仿真、PCB设计、虚拟模型仿真于一体而成为了全球炙手可热的仿真设计平台。由于本次设计使用的是STM32作为微控制器,因此低版本的proteus仿真软件已经不能满足此次仿真的需求,通过查询资料发现,proteus8.8具有仿真STM32的能力,特此安装了Proteus8.8。由于Proteus8.8没有红外测温元器件,所以在此次仿真中采用电位器代替仿真。Proteus8.8进入页面图如图5-1所示。图表SEQ图表\*ARABIC23图5-1Proteus8.8进入页面在进行仿真之前需要新建工程,之后在元器件库里面查找自己所需要的元器件,再使用导线将电路连接起来。在元器件连接完成后,导入通过uVision5编译生成的.hex文件到STM32F103单片机中,实现所需功能。Proteus8.8仿真软件的操作页面如图5-2所示。图表SEQ图表\*ARABIC24图5-2Proteus仿真软件操作页面下面将对每个功能模块的软件调试情况做一个简要介绍。系统在正常工作时,LCD1602第一行显示时间和温度,第二行显示日期年、月、日如图5-3所示。图表SEQ图表\*ARABIC25图5-3基于STM32红外测温系统仿真图(1)环境温度仿真在按下红外测温开始按键前,LCD1602显示的是环境温度和时间日期,此时就是DS18B20将所测得的环境温度显示到液晶显示屏上,图5-4即为所测得的环境温度。图表SEQ图表\*ARABIC26图5-4环境温度显示页面(2)目标温度仿真当按下测温开始按键时,单片机接收到红外测温开始命令即开始红外测温,此时就是MLX90614在进行工作,将得到的目标温度显示到LCD1602上如图5-5所示。图表SEQ图表\*ARABIC27图5-5目标温度显示图(3)报警温度实现在本次仿真中设置了报警电路,目的是更快的区分发热人群,因此本次内置报警温度拟定为38度,当测量温度超过38度时,蜂鸣器就会报警,该功能已验证,在超过设定温度时电脑音响确实发出报警。下图5-6为报警时的温度图5-7即为蜂鸣器。图表SEQ图表\*ARABIC28图5-6报警温度图表SEQ图表\*ARABIC29图5-7蜂鸣器报警在进行软件调试时,就是将程序和仿真相结合,通过仿真来验证程序的可行性。在软件调试过程中,遇到的问题和对策有:a.LCD1602在显示时,偶尔会出现一串字符0。因为是可以正常显示的,所以说明端口没有定义错误。之后重新检查程序,发现程序并没有出现问题。在仿真时,缓慢的点击电位器按钮,发现显示正常,在连续快速点击下才会出现问题,通过查询发现STM32在仿真时不能快速的输入指令,其仿真速度较缓慢。在慢慢仿真后,问题消失。b.按键方面,在硬件设计时没有上拉电阻,正常情况下不需要上拉电阻,但是在仿真时在没有上拉电阻的情况下按键是工作不正常的,检查程序时并未发现明显错误,在加上上拉电阻后,按键正常工作,可能在仿真中按键需要一个固定电平来实现对单片机的控制。c.在第一次仿真时,温度超过38度后,发现蜂鸣器没有报警,经检查电路连接没有问题,再次检查程序时发现,端口设定错误,在改正后,再次仿真测试,蜂鸣器可以正常报警,问题解决。5.2系统硬件调试所需硬件部分已经基本确定,并且已经经过了Proteus的仿真,同时软件也已经基本确定,因此使用AltiumDesigner16画图软件来完成硬件部分的设计。AltiumDesigner16是一种常用的电子设计软件,它可以完成原理图的和PCB板的绘制,在本次设计中的硬件部分设计就是使用这个绘图软件,主要用它来完成原理图的绘制。其操作界面如图5-8所示。图表SEQ图表\*ARABIC30图5-8AltiumDesigner16操作页面在本次设计中,有些元件在AD16自带的元件库里并没有相应的元件,所以此时就需要通过AD制图软件绘制出相应的元件,方法很简单只要建立一个元件库把所需的元件绘制出来,然后在原理图绘制页面调用相应的元件,这样就可以完成绘制了。最后只需要按照设计好的电路,完成原理图的绘制。系统的整体原理图如图5-9所示。图表SEQ图表\*ARABIC31图5-9系统整体原理图绘制好前面设计好的STM32F103主控制模块、MLX90614红外测温电路、DS18B20温度检测模块电路、LCD1602显示模块、报警电路、按键控制模块、复位电路后,发现在拥有电源管理,整个系统无法正常工作形成回路。通过对资料的查询,发现在本次设计中需要不同的工作电压,比如STM32是在3.3V电压下工作的,而LCD1602则是5V的工作电压。因此又引入了3.3V转换电路,以达到为不同模块提供不同工作电压的目的。本次设计中按键电路是不需要上拉电阻的,但是LCD1602则需要一个10千欧的上拉电阻。MLX90614本身自带温度补偿,且测量精度高,所以是本次设计红外测温传感器的首要选择,本次设计使用DS18B20是为了防止环境温度过高对红外测温产生影响,因为STM32系列单片机具有良好的数据处理功能,所以可以通过环境温度与目标温度的对比实现更精确的测温。6总结为了实现本次的毕业设计,我搜集了大量的文献与资料,通过这些资料了解到红外测温的优点,与实现所需的基本器件,并设计了几个方案,最终选择了STM32做为主控芯片,为此还查阅了关于STM32的资料,在此次设计中采用的是MLX90614医用红外测温模块,通过查阅其数据手册了解其测量精度高且自带温度补偿,所以选择了该传感器做为红外测温模块,本次设计到此已经基本完成,硬件部分和软件部分的设计已基本完成。本次设计主要实现的功能就是在按下红外测温开始按键前整个系统测量的是环境温度,当红外测温开始指令时此时才开始红外测温,主要实现了非接触式的红外测温,同时整个系统也能显示出时间和日期,以及当前环境温度。在疾病预防检测中,测量人数众多,时间紧迫。传统体温计由于测量时间长、读数麻

温馨提示

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

最新文档

评论

0/150

提交评论