《基于红外传感器的非接触测温仪设计》13000字_第1页
《基于红外传感器的非接触测温仪设计》13000字_第2页
《基于红外传感器的非接触测温仪设计》13000字_第3页
《基于红外传感器的非接触测温仪设计》13000字_第4页
《基于红外传感器的非接触测温仪设计》13000字_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

基于红外传感器的非接触测温仪设计摘要突如其来的COVID-19疫情的传播速度快,范围广,做好疫情防控的重要环节是控制好传染源、切断传播的途径。公共场所人员的高密度,高流动性,使得选择一种快速、准确的测温方式对做好发热人员的筛查有重要意义。简单便携且精确度高的温度仪成为当下疫情影响下的人们的重要需求。当然测温仪的应用不是仅仅局限于医学,还可以应用于火灾报警等。在这样的一个新冠的大背景下研制一个既可应用于家庭、又体积小方便携带、测量速度快、实时性好的非接触测温仪十分需要,这样可以每天记录自己的体温状况。因为每个物体本身有着各自的特定温度,所以它们会向外部发出一种具有各自特征和频率的红外线辐射能量,这个数值是相对固定的。当被检测到的物体发射出红外辐射能时,可以将其能量转化成电信号,温度的多少和能量的强弱有对应性,就可以根据这个对应性计算出电信号对应的温度的多少。在这个系统方案中就参照了这个原理,利用红外传感器对体温进行测量,红外传感器将检测到的红外辐射能转换成电信号,信号再经过放大传入A/D转换器,转换成数字信号,并把转换得到的数字信号输入单片机STM32中,STM32把得到的信号传入显示电路OLED。关键词:红外测温;STM32F103C8T6;MLX90614;OLED显示;超声波测距目录TOC\o"1-3"\h\u16963摘要 概述红外测温系统概述基于红外传感器设计一个非接触测温仪。本系统主要有主控模块、显示模块、红外测温模块、超声波测距模块等。由STM32103C8T6为主控,MLX90614为红外测温模块,HC-SR04为超声波测距模块,并通过0.96OLED显示温度和距离输出。图2-SEQ图2-\*ARABIC1红外测温系统原理图系统方案实现选择单片机的选择与论证:方案一:选择80C51单片机为本次设计的核心处理器,51也是我接触过的单片机,它提供了8位CPU,4KB的ROM存储空间和128B的RAM存储空间,但是它仅支持5V供电;而且没有自编程能力,也就是说在系统程序调试时,修改程序错误的或增加一些程序功能时,都需要多次拔插芯片,容易对芯片造成一定程度的损坏。方案二:选择STM32F103作为本次设计的控制器,STM32系列的内核是ARMCortex-M3,它的设计满足了要求高性能,低功耗和低成本的嵌入式应用。而且包含了512KB的高速Flash存储器,还有三个12位的ADC,1个两通道12位DAC,定时器有11个,他还有两个16位带死区控制和紧急刹车,还集成了用于电机控制的PWM高滤波、温度补偿等数据处理任务。STM32F103单片机还具有数据处理功能,本身就自带有ADC模块,因此不需要外部再搭建A/D转换模块,在一定程度上大大简化了电路。所以选取STM32F103为此次设计所需的单片机。红外传感器的选择与论证:方案一:使用红外温度传感器IRTR,但是这个系列的红外传感器是多用于工业方面的传感器。方案二:使用热电堆红外传感器MLX90614,MLX90614是常用的非接触式的红外温度传感器,内部包含了红外探测热电堆芯片和信号处理专用集成芯片,封装在TO-39。该模块还运用了低噪声放大器、17位ADC和强大的DSP处理单元,轻松让传感器能够拥有高精度,高分辨率的测量结果。方案一中传感器多用于工业方面,因此不选用方案一,由于MLX90614具有较高的灵敏度,以及较小的热惯性,所以适用于医学测温,故选用方案二。显示模块的选择与论证:方案一:使用LED数码管显示。它的优势在于价格便宜,操作简单,电压低,寿命长可以用于所有数字参数的显示。方案二:采用OLED液晶显示屏显示。它的优势在于硬件电路制作简单,可直接连接到微控制器端口,程序控制简单,能耗低,显示内容多。但是方案一中数码管,电路复杂而且能够显示的信息也没有方案二多,方案二中液晶显示屏显示信息量大,而且更加美观,同时它的功耗和尺寸都很小。在本系统中需要的显示的信息量要稍大一些,而且要更加直接,所以在本次设计中我选选择了方案二的OLED液晶显示屏显示。本设计方案思路本次方案首先用到了红外线测温的原理:由于物体的本身所具有的温度就是不一样的,也就是说它会发射出具有不同波长的稳定的红外线辐射能力。当被测物体发射出红外线辐射能时,可以将这个能量转变为电信号。红外线辐射能量的强弱与物体自身的温度是有一定的对应联系的,物体的温度大小可以按照和辐射能量的强弱关系换算得出。本方案应用了这个原理,利用红外传感器进行温度检测,红外传感器会先采集被测物体的红外信号,然后将这个信号转换成电信号,放大这个电信号,再经过A/D转换为数字信号,并将这个信号传输到STM32中,STM32将接受到的数字信号发送到OLED液晶屏显示其数值。超声波测距主要采用渡越时间法,其原理为:主控单元发射一定频率的脉冲,激励超声波发射电路产生超声波,当超声波传播到两种介质的分界面时产生反射波,反射波经介质传播返回到超声波接收电路,主控单元测出超声波从发射到接收所用的时间,即可计算出超声波传感器与被测物体之间的距离。REF_Ref23984\r\h[2]主要技术指标设计一个基于红外传感器的非接触式红外测温仪,能显示被测温度和距离。(1)工作电压:3.6V(2)测量温度:0-100度(3)测量距离:0-2米硬件设计本课题拟以STM32F103单片机为核心,由红外传感器、超声波模块和OLED显示模块等组成,数字红外传感器将物体红外辐射能转换成数字信号,输入到STM32控制器中,经控制器的运算后,传感器信号在液晶屏上显示出被测物体温度读数。图3-SEQ图3-\*ARABIC1系统总体结构框图STM32F103C8T6概述STM32控制器有许多系列,它是一个32位的处理器,是以ARMCortex-M3为开发核心,可以分为以下这些类型:超低功耗型STM321、基本型STM32F101和STM32F102USB、互连型STM32F105和STM32F107、增强型STM32F103和超值型STM32F100。在本次的设计方案中选择的是STM32F103。更高性能的32位ARMCortex-M3RISC就是该系列处理器的内核。该处理器不仅内核体积小、而且硬件配置巧妙便捷、高度集成的系统组件、良好的中断延迟、系统响应速度块、软件编程基础易懂等有点,为嵌入式系统提供了理想的解决方案。增强型STM32F103C8T6拥有高性能的内核,正常工作时的频率是72MHz,其内部包含了能够达到128K字节的闪存和20K字节的SRAM的高速内存,丰富的I/O端口和外设可连接的两条APB总线。所有类型的设备都包括两个12位ADC、三个通用16位定时器和一个PWM定时器,以及标准和高级通信接口:最多两个I2C接口和SPI接口、三个USART接口、一个USB接口和一个can接口。Stm32f103xx中容量增强型系列产品的电源电压范围为2.0V至3.6V,它的温度测量范围可以在-40℃到+85℃之间,扩展温度范围可在-40℃到+105℃之间。图3-SEQ图3-\*ARABIC2STM32F103引脚图(封装图)下图是STM32F103的主控电路,可以从中看出该芯片的配置资源十分丰富,拥有充足的I/O端口,并且有内置的定时器。所以只需要简单的电路就可以实现许多复杂的你想要的功能。图3-SEQ图3-\*ARABIC3STM32F103主控电路MLX90614红外测温模块设计关于红外测温模块,总所皆知,MLX90614系列是应用最为广泛的,也是最受欢迎的。若想投入使用,大概率会对红外测温该模块进行校准跟线性化处理。发展到现在,并且大受欢迎,红外测温模块必有它自己的优点所在,首先它不需要接触就能测温,再者测量精度也高。由于体积小,取用也方便,还不影响携带。最最重要的一点是所需成本低,非常经济。MLX90614可以仅仅使用单通道输出就能得到用户所需要的温度以及环境温度,并且内部还设有两个输出接口,因此常常用与北方室内温度加热,使得空调内部可以根据用户所需进行调节,当然也可以应用于医疗方面。、测量温度的方式一共有两种,可以根据实际需要来选择用接触式的测量方式还是非接触式的测量方式。如果要使用接触式,那么只能处于热平衡之后的状态才可以进测量所需物体的温度。这种方式也存在着一定的缺点,等待时间过长,并且容易随着外界温度的变化而变化。但是,红外温度测量就不一样了,它主要是依据需要测量的物体发出的红外辐射来确定温度的,并不需要与被测物体进行接触,除此之外,还能测量出温度分布的范围,不仅温度的分辨率高,响应时间短,测量的范围宽,并且测量没有上限,也不容易受到外界的影响,综上所述,本课题选择使用MLX90614模块来测量温度。单片机与MLX90614红外测温模块之间的通信方式为“类IIC”通信。从字面上讲,通信方式类似于IIC,但并不完全相同。这种通信方式也称为SMBus。SMBus(systemmanagementbus)是Intel公司在1995年提出的一种高效的同步串行总线。SMBus有且只有两条信号线,即双向数据线SDA和时钟信号线SCL。它允许处理器运用串行方式与其他的外设接口设备来进行通信或交换信息,这种通信方式大大提高了信息的传输速度,而且降低了设备使用时的资源占用,同时还可以在没有SMBus接口的情况下使用软件进行仿真。图3-SEQ图3-\*ARABIC4MLX90614通信交互MLX90416工作原理MLX90614由MLX81101红外热电堆传感器和包括含有稳压电路、低噪声放大器、A/D转换器、DSP单元、脉宽调制电路及逻辑控制电路的MLX90302信号处理芯片构建的。  他的工作原理大致可阐述为:红外热电堆传感器的输出温度信号经内部低噪声、低失调运算放大器(OPA)放大,再经A/D转换器(ADC)转换为17位数字信号,最后经可编程FIR和IIR低通数字滤波器(DSP)处理,将得到的结果储存在其内部RAM存储器中。LX90614中有两个存储器,分别为EEPROM和RAM。MLX90614中共有32个字长为16位的EEPROM存储单元,它的地址是000H—01FH。EEPROM中的一切寄存器都是可以由SMBus进行读取操作的,但只有一些寄存器是能够改写操作的(地址为0x00,0x01,0x02,0x03,0x04,0x05*,0x0E,0x0F,0x09)。可改写部分如下表所示。名称功能地址Tomax测量物体温度上限设定000HTomin测量物体温度下线设定001HPWMCTRLPWM控制002HTa范围环境温度范围003H发射率校准系数0.1-1004HConfigRegister1配置寄存器005HSMBus地址器件寄存地址设置00EH表3-SEQ表3-\*ARABIC1MLX90614EEPROM地址被测物体的上下限温度可设为Tomax和Tomin,环境温度测量的范围设为Ta。它的温度上限测量公式为:(3.1),并将计算出的值写入000H;温度下限的计算方法和上限相同,计算出的值被写入001H。MLX90614中一共包含了32个17位的RAM存储单元,注意的是不要用RAM来输入值,只能读取16位存储数据通过读取RAM中的存储单元。得到的环境温度结果便会存储在006H的存储单元中,而得到的待测量物体的温度数据会保存在地址007H存储单元中。所以通过保存在RAM地址中的结果,在运用公式计算,就可知道Ta及带测量物体的To。(3.2)(3.3)名称地址是否可读Melexis预留000HYES………………Melexis预留003HYES原始数据IR通道1004HYES原始数据IR通道2005HYESTa006HYESTobj1007HYESTobj2008HYESMelexis预留009HYES表3-SEQ表3-\*ARABIC2MLX90614RAM地址在本设计中,我采取了如下图MLX90614引脚与STM32的对应接线。图3-SEQ图3-\*ARABIC5MLX90614引脚图MLX90614一共四个外部引脚,分别是串行时钟SCL、信号输入SDA、电源VCC和接地GND。VCC在本电路中接到STM32F103C8T6的3.3V输出上(5V也可行,但为了接线方便采用3.3V),GND接最小系统开发板上的地。温度传感器的SCL和SDA引脚分别与最小系统的PA0和PA2相连接。超声波测距模块设计本方案选用了HC-SR04超声波测距模块,它可以测量2cm-400cm的距离,并且无需接触,测量精度能达到3mm。HC-SR04中还集成了超声波发射器、接收器和控制电路。工作原理是:HC-SR04中的超声波发射探头发射出超声波脉冲,经媒质(空气)传到物体表面,反射后通过媒质(空气)传到接收探头,测出超声脉冲从发射到接收一共所需的时间,根据媒质中的声速,就可以求得从探头到物体表面之间的距离。

工作电压DC5V工作电流15mA工作频率40Hz最远射程4m最近射程2cm测量角度15度输入触发信号10uS的TTL脉冲输出回响信号输出TTL电平信号,与射程成比例表3-SEQ表3-\*ARABIC3HC-SR04电气参数HC-SR04共有四个引脚,分别是电源VCC、接地GND、输入触发信号Trig(可以触发测距)和传出信号回响Echo(可以传回时间差)。在这个设计中,引脚配置如下图,VCC和GND分别接最小系统板上的3V3和地,Trig和Echo分别接到单片机上I/O端口PB11和PB10。图3-SEQ图3-\*ARABIC6HC-SR04引脚图OLED显示模块设计本设计采用了0.96寸黄蓝双色的OLED显示屏,即屏上1/4为黄色,下3/4为蓝色,而且该颜色的区域划分是固定的。分辨率是128*64,显示效果清晰,对比度高。超大可视角度、宽电压供电,兼容3.3V和5V逻辑电平,且无需电平转换芯片。采用了IIC接口方式通讯,默认地址为0X78。电气参数如下表所示。

名称参数显示颜色蓝黄双色尺寸0.96(inch)类型OLED驱动芯片SSD1306分辨率128*64模块接口3-line、4-line、IICinterface有效显示区域21.744*10.864(mm)触摸屏类型无触摸屏触摸IC无触摸IC模块PCB底板尺寸27.3*27.8(mm)视角>160°工作电压3.3V-5V工作温度-20℃-60℃工作湿度-30℃-70℃功耗待定产品重量8(g)表3-SEQ表3-\*ARABIC4OLED电气参数0.96寸OLED显示屏的驱动芯片是SSD1306,它包含了稳压芯片,而且支持软件的模拟IIC通讯和硬件IIC通讯,一旦通电就可实现自动复位,而且功耗低,有自发光自由视角。SSD106中有三种寻址模式:页寻址模式、水平寻址模式和垂直寻址模式。寻址方式决定了数据写入方式。该模块也共有四个引脚分别为电源VCC、接地GND、时钟管脚SCL和数据管脚SDA。在本设计中,将VCC和GND分别接最小系统板的5V和地,SCL和SDA分别接PB6和PB7,如下图。图3-SEQ图3-\*ARABIC7OLED引脚图本章小结本章详细介绍了主控制模块、红外测温模块、超声波测距模块和OLED显示模块这几个部分。整章围绕该设计使用的芯片、模块,以及根据对应的参数、原理画出相关电路原理图,来实现对应的功能。还分析了各个芯片与总控制芯片STM32F103C8T6之间管脚的连接关系。

软件设计总体方案该设计在软件上使用Keiluvision5C语言实现,主要是要实现各个模块之间的数据输入输出。该软件是单片机的常用编程工具,可以使用C语言并且调试方便。软件的设计和硬件的设计一样都是分模块进行的,先分成各个模块编写程序以便于程序的调试。先完成各个子模块的程序编写,然后在主程序中调用子程序来实现各个部分所需的功能。主程序流程本设计的软件实现流程为:程序一旦开始运行,整个系统都要先进行初始化,包括了延时函数的初始化、红外测温模块的初始化、超声波测距模块的初始化和OLED液晶屏的初始化,然后继续运行开始测温、测距,并通过OLED显示出所得数据。图4-SEQ图4-\*ARABIC1主程序流程图intmain(void){ floatlength; doubletemp;//温度变量浮点数 inti,a,b,c;//定义整数 SystemInit();//系统初始化 delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); TIM2_Int_Init(2500,7200); SMBus_Init();//初始化红外测温模块 Hcsr04Init();Hcsr04Init(); OLED_Init(); //OLED初始化printf("超声波初始化成功!\n"); show();while(1) { length=Hcsr04GetLength();//printf("距离为:%.3fcm\n",length); OLED_Fill_l(0); OLED_ShowCN(0,2,2);OLED_ShowCN(16,2,3); OLED_ShowStr(32,2,":",2); temp=SMBus_ReadTemp();//读取温度 //printf("temp:%lf\r\n",temp); a=(int)(temp*10)%10;//小数点后一位 b=(int)(temp*100)%10;//小数点后二位 //i=ceil(temp);//向上取整,只显示整数值 c=(int)temp;//取整 i=(int)length; if(i<200) {sprintf((char*)buf4,"%dcm",i); OLED_ShowStr(40,2,buf4,2); } //printf("abic%d%d%d%d\r\n",a,b,i,c); sprintf((char*)buf1,"%d",c); sprintf((char*)buf2,"%d",a); sprintf((char*)buf3,"%d",b); if(c<41) {OLED_ShowStr(72,0,buf1,2); OLED_ShowStr(88,0,".",2); OLED_ShowStr(96,0,buf2,2); OLED_ShowStr(104,0,buf3,2); } } }模块说明MLX90614测温模块MLX90614红外测温模块支持IIC协议和SMBus协议,在本设计中决定通过SMBus总线协议实现STM32微处理器与MLX90614通信。SMBus是二线串行协议,管脚SDA是数据的输入输出,SCL是数据输入时作为通信时钟信号。主要流程如下,先发送一个字节,一个字节是8位,具体操作是每次发送最高位,然后循环发送8次。这就是成功发送了一个字节,即从机发送了一个字节,主机就要返回一个应答信号来告诉从机是否继续发送下一个字节。同理,从SMBus上接受一个字节也是通过循环8位依次接受过来的。对于采集的数据要进行数据校验,即我们的程序会将PEC的数据通过SA_W、Command、SA_R和LSByte、MSByte读出来。然后通过校验函数来判断读到的PEC数据是否正确。再然后是要读取温度函数,这个函数的输入参数就IIC设备的从机地址和command寄存器地址。首先从机地址左移一位,把读写位空出来,因为不知道最开始是啥状态,我们就需要发送一个停止信号,因为ErrorCounter=0x00;那么进行"--"操作之后就不等于0,就进行下面的操作。接下来就发送起始信号,发送从机设备地址,如果发送的从机地址正确,就接着发送操作从机地址的command这个地址,因为这里保存着温度数据。然后重新发起一个起始信号,开始读数据,把温度数据的低位DataL高位DataH和PEC数据读出来,再进行PEC数据校验,判断读到的PEC数据和校验得到的PEC数据是否相等,相等的话就跳出循环,通过将高位数据左移8位再与低8位进行按位或就得到了最终的数据data。最后通过公式(3.3)得到我们所需的最终温度实际值,并通过OLED显示出来。注意SMBus读时序和写时序都有其特定的标准。写时序:首先主机会发送一个起始位,然后再发送从机的地址0X00和写标志位0。一共是8位。发送这8位数据之后,主机会等待从机的响应,如果从机发送的是应答信号,那么主机就继续向从机发送一个字节的数据,并且再一次等待从机的响应信号,如果主机收到的还是应答信号就继续发送数据,一直重复直到发送完成。读时序:首先主机也会发送一个起始位,然后再发送从机的地址0X00和读标志位1,一共是8位。发送这8位数据之后,从机就会等待主机的响应信号,如果主机发送的是应答信号,从机就向主机发送一个字节的数据。读时序就是主机从从机读数据的过程。同理,从机每发完一个字节的数据之后都要向主机寻问是否继续发送数据,如果是,从机就继续发送数据直到收到非应答信号停止发送数据,最后主机会再发送一个停止信号。各种信号解释如下:起始信号:当处于CPU使时钟线SCL保持在高电平的状态下时,假若数据信号SDA突然变为了低电平就说明信号开始。而当这个信号被IIC总线上的设备接收到时,就会自动开始向处理器发送数据。应答信号:当接收器接收到发送过来的8位数据后,就会在第9个时钟周期,使数据信号自动变为低电平状态。就是当接收数据的IC在接收到发送数据的IC发送过来的8位数据后,会自动向其发送特定的低电平脉冲,用来告知对方已收到数据作为应答。这样子,CPU就可以通过应答信号来判定下一步应该做什么,若收到了应答信号则根据实际情况决定是不是要继续传递信号,若并没有受到应答信号就可以知道受控单元有故障之处。非应答信号:当时钟线SCL一直维持在高电平状态时,数据线SDA也与之同步一直显示为高电平,这就是非应答信号。结束信号:停止信号是指当处理器强制让时钟信号SCL维持在高电平状态时,数据信号SDA突然就变为高电平的状态。而当这个状态被IIC总线上的设备发现时,处理器就会立刻停下数据传输。数据信号:处在数据传输的状态下,时钟线SCL会一直维持高电平,当数据线SDA处于高电平时则代表1,反之则表示为0。图4-SEQ图4-\*ARABIC2MLX90614模块流程图SMBus起始信号代码:voidSMBus_StartBit(void){SMBUS_SDA_H(); //首先拉高数据线SMBus_Delay(5); //延时几微秒SMBUS_SCK_H(); //拉高时钟线SMBus_Delay(5); //延时几微秒SMBUS_SDA_L(); //拉低数据线SMBus_Delay(5); //延时几微秒//在SCK=1时,检测到SDA由1到0表示通信开始(下降沿)SMBUS_SCK_L(); //拉低时钟线SMBus_Delay(5); //延迟几微秒}SMBus停止信号:voidSMBus_StopBit(void){SMBUS_SCK_L(); //拉低时钟线SMBus_Delay(5); //延迟几微秒SMBUS_SDA_L(); //拉低数据线SMBus_Delay(5); //延迟几微秒SMBUS_SCK_H(); //S拉高数据线SMBus_Delay(5); //延迟几微秒SMBUS_SDA_H(); //在SCK=1时,检测到SDA由0到1表示通信结束(上升沿)}超声波测距模块用Trig和Echo引脚实现测距的流程:先通过触发信号Trig输出一段至少为10us的高电平脉冲,引起第一次测距,超声波在这个传输的过程中信号回响Echo管脚一直输出高电平(此时应启动计时器)。在触发信号Trig的脉冲完全输出后,检测到Echo管脚变为低电平(此时应停止计时器计数),便可测量出信号回响Echo保持高电平的时间t,t就是超声波对于所测距离发射和接收的一个来回所花费的总时间。我们知道大气中声音传播速度为340m/s,根据(4.1)。由原理可得超声波发送出去再回来是测量距离的两倍,所以假设距离是L,所以(4.2)。t我们通过定时器算出来,单位为us,经过计算化简可得(4.3)。一开始先将I/O初始化,并将定时器初始化,触发信号Trig输入高电平,检测到Echo由低电平转换为高电平时,定时器将启动并开始计时,当信号回响Echo从高电平转化为低电平时定时器结束计时,通过换算可得到时间差t,在经过公式(4.3)计算出距离,为了优化本次设计,还加入了取五次的数据进行加权滤波来消除“余震”对测量结果的影响。代码流程图大致如下:图4-SEQ图4-\*ARABIC3超声波测距流程图OLED显示模块OLED提供了4种接口方式:6800、8080两种并行接口方式、4线的穿行SPI接口方式、IIC接口方式。本次设计方案采用了IIC接口方式,IIC(Inter-IntegratedCircuit)总线是PHILIPS公司研发的一种两线式总线,可以实现外围设备与微控制器间的连接。它是由数据线SDA和时钟线SCL组成的串行总线,既能够发送数据,也能够接收数据。在CPU和被控IC间、或是IC与IC之间进行的双向传送,高速IIC总线一般可达到400kbps以上。在数据传输期间,IIC总线上存在三种信号类型:起始信号,终止信号和响应信号。CPU向控制单元发送信号后,等待来自控制单元的响应信号,并在收到响应信号后,根据实际情况决定是否继续发送信号。如果没有接受响应信号,则判断控制单元有故障。首先我们要先配置好STM32F103C8T6的IIC外设和GPIO的模式,即将数据线SDA和时钟线SCL分别设置为管脚PB7和PB6,GPIO口设置为开漏输出模式。再配置好IIC的工作模式、时钟占空比、寻址模式和传输速率,然后使用IIC来驱动OLED显示。发送一个最小单元,可以接收两个参数,一个是地址,一个是数据。利用while循环判断I2C总线是否处于繁忙状态。产生一个开始信号,等待并发送目标设备的地址,也就是OLED屏幕的地址。等待并发送寄存器地址,等待并发送数据,完成后产生一个停止信号。完成上述步骤后初始化OLED屏幕,并为其设置坐标和字符。代码实现主要流程图如下:图4-SEQ图4-\*ARABIC4OLED显示流程图本章小结本章节基于Keiluvision5的研发环境,以C语言为工具进行代码编写。首先分析主控制程序需要初始化的函数然后画出实现代码的流程图。然后具体分析红外测温子程序、超声波测距子程序、OLED显示子程序这三个部分的设计过程和流程图。

制作与调试硬件电路连接本设计采用画图软件AltiumDesigner来完成整个原理图的绘制。主控芯片STM32F103C8T6作为微控制器,MLX90614作为测温电路,0.96OLED作为显示模块,输出测量得到的数据,并且根据不同的器件所需的工作电压设计了5V/3V3输入。下图是整体硬件原理图。图5-SEQ图5-\*ARABIC1整体硬件原理图本设计使用ST-LINKV2来给STM32F103C8T6下载程序,引脚连接如下:ST-LINKSTM32F103C8T63.3V3.3VSWCLKSWCLKSWDIOSWOGNDG表5-SEQ表5-\*ARABIC1ST-LINK引脚连接图5-SEQ图5-\*ARABIC2实物连接图首先下载安装STLINK驱动,安装成功后,ST-LINK的蓝灯常量,且在设备管理中显示ST-LINK设备。图5-SEQ图5-\*ARABIC3接下来按如下步骤操作图5-SEQ图5-\*ARABIC4图5-SEQ图5-\*ARABIC5点击Settings进入以下页面图5-SEQ图5-\*ARABIC6图5-SEQ图5-\*ARABIC7程序烧录完成图5-SEQ图5-\*ARABIC8烧录完成图5-SEQ图5-\*ARABIC9烧录程序实物图图5-SEQ图5-\*ARABIC10烧录完成后,完成实物连接,注意引脚对应。STM32F103C8T6MLX90614HC-SR04OLED3V3VCCGGNDPA0SCLPA2SDA3V3VCCGGNDPB11TrigPB10Echo5VVCCGGNDPB6SCLPB7SDA表5-SEQ表5-\*ARABIC2完整电路图连接调试与误差分析软件调试:这个设计要外部连接电路才能完成仿真,所以我没有进行最后的仿真,仅仅用AltiumDesigner进行了编译,程序部分用Keiluvision5进行了编译。在这个部分主要想实现下面两点内容:目标程序错误,整体程序调试。目标程序错误纠正:通常这是在创建目标程序时执行的操作。软件有一定的自动纠错能力,可以自动改正我们输入的程序命令中的错误。例如写入格式中存在的一些错误,如标签未定义或重复定义,发送地址溢出等,此部分主要是小细节错误,因此需要小心谨慎,慢慢调试。整体程序调试:就是把各子程序整体综合成一个整体电路来进行调试,观察目前的程序编写能否实现设想的功能。若这个环节出现错误,优先判断是不是各子程序在运行时有冲突,比如数据缓冲单元冲突,标志位的建立和清除编写上是不合理的,堆栈溢出,输入输出状态有问题等再进-步对细节进行修改。硬件调试:本次设计的红外测温系统的硬件调试是必须依赖于软件才能进行调试的,不少的硬件故障被发现在软件调试时,当然要先排除系统中明显的硬件故障,比如管脚连接错误。调试工作大致可分为4个步骤:线路检查:首先对照硬件原理图,认真核对各个引脚的连接是否正确,并确认所使用的元器件的型号、规格和安装都是按之前的要求进行,如果有需要的话还可以通过万用表来查看电路中每个环节是否有短路断路。电源调试:硬件首次通电前的调试需要先进行调试,因为一旦出现了电源故障,上电后就容易对器件造成不可逆的损坏。调试的方法一般有两种:一是使稳压电源的输出端开路,查看这时候的电源的工作状态;还可以线取下实物硬件中上的重要集成芯片,查验电源的负载能力(用假负载)。在排除电源没有故障后才能进行下一步。通电检查:在完成上一步骤的前提下,才可以接通电源。最好能在电源与其它电路间都串连上电流表。一旦上电后发现电流过大的情况时,马上将电源断开。若电压大于正常工作电压,这可能是由于电路中的短路或故障引起的。这一环节主要就是为了看设计中是否出现了短路,或者因为元器件的损坏、装配的错误而造成了电流异常。检查芯片的逻辑关系是否出错:上电后观察每个插座上的管脚的电平,对管脚的输入输出电流进行测量看是否符合预期。单片机系统一般属于数字逻辑电路,通过电平校验的方法可以先检查出逻辑设计上是否正确,器件的选择和连接是否符合要求。图5-SEQ图5-\*ARABIC11手指测温测距图5-SEQ图5-\*ARABIC12电脑屏幕测温测距图5-SEQ图5-\*ARABIC13饮料表面测温测距通过三次测量比较发现,该测温测距系统比较准确,但是还是存在一定误差。经过分析测温系统可能存在以下造成误差的原因并提出解决方案设想:环境温度对测量温度造成的影响,传感器只有在热平衡和等温条件下才能保证和达到所标定的测量精度。传感器背部的热电子、传感器背部或旁边的加热器/冷却器、或当热/冷物体靠近传感器,不仅会加热传感器元件,而且会加热温度计封装。所有可以通过增加一个监测环境温度的测温模块,通过第三方标定来实现温度补偿以提高精度或是将传感器和环境隔离。测量角度和测量距离都会影响非接触测温传感器的测量数值。红外线强度会随着距离的增加而衰弱,因此在远距离测温过程中进行距离补偿。不同物体发射率不同,会影响测温结果。可以通过修改发射率来提高测温精度。如测量不锈钢时发射率设置在0.3左右,测量碳设置在0.95左右,人体在0.95左右,而MLX90614出厂默认值为1。修改发射率要把发射率写到MLX90614的EEPROM里面。测距系统造成误差的可能原因即解决方案设想:一次的数据往往容易造成误差,想要提高测距精确度可以多次测量,去掉最大最小值后取平均值的方法。本次设计已使用该方法减少误差。根据该传感器测距原理可知精准计算高电平时间t是提高测距精度的关键点。不同的单片机时钟频率不同会引起计算结果的差异。所以我们可以先测出定时器的值,然后通过示波器查看高电平持续的时间,比较计算出他们之间存在的关系,这样就能准确计算高电平的持续时间t,从而提高精度。在我的设计中,程序上用的是电平触发的方式,但是有人说使用串口的方式会使精确度更高。结论为了能够顺利完成本次毕业设计,我搜集参考了大量的文献和资料,通过这些文献资料了解到了非接触红外测温的优点,并且通过对各个模块的优缺点分析确定了在本设计中需要的型号器材。首先选择了STM32单片机,为此去查阅了它的相关资料手册。此外在本设计中选取了MLX90614红外测温模块,因为通过查阅它的数据手册时发现它精度较高而且自带温度补偿,十分满足本次设计需求。在超声波和OLED的选取上也是因为其不仅常用于STM32而且便宜可实现。至此,硬件部分和软件部分的设计已经基本实现完成。本次设计主要实现的功能就是对一个物体同时进行测温测距并显示数据,基本实现了任务书的要求。该设计有硬件和软件两部分组成,硬件部分和软件部分都包括了单片机控制模块、红外测温模块、超声波测距模块和OLED显示模块。从开始搜集资料到选取所需元件再到绘制原理图实现硬件设计部分,巩固了甚至学到了许多本科生涯没有接触过的知识,这可以算是我真正意义上的第一次独立自主完成一个设计,每一个环节都很重要都受益匪浅。在绘制原理图时要了解每个引脚的作用,要合理分配引脚,使单片机与各个模块正常准确连接。比如STM32F103C8T6虽然由37个通用I/O口,看似都一样,但是仔细研究后发现PA13、PA14、PA15、PB3、PB4、PC14、PC15、PD0、PD1的默认功能并不是GPIO,使用时需要先开启AFIO时钟,就是当STM32上电复位后默认启动JTAG模式,会占用PA13、PA14、PA15、PB3、PB4

温馨提示

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

评论

0/150

提交评论