非接触式测温系统.docx
《非接触式测温系统.docx》由会员分享,可在线阅读,更多相关《非接触式测温系统.docx(30页珍藏版)》请在冰豆网上搜索。
非接触式测温系统
附件3:
毕业设计规格式
学号
年级
远程和继续教育学院
毕业设计
基于单片机的非接触式测温系统
专业
姓名
指导教师
评阅人
ⅩⅩⅩⅩ年Ⅹ月
中国
学术声明:
重声明
本人呈交的毕业设计,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。
尽我所知,除文中已经注明引用的容外,本设计(论文)的研究成果不包含他人享有著作权的容。
对本设计(论文)所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。
本设计(论文)的知识产权归属于培养单位。
本人签名:
日期:
摘要
本设计根据设计任务和实际考察进行了方案设计和方案论证,并且设计了相应的硬件电路和软件系统,研制了非接触式测温系统。
该系统采用MLX90614红外温度传感器和80C51单片机为核心技术设计的非接触式测温系统,利用传感器自带的低噪放大器、A/D转换将传感器采集的温度电压信号经过处理输出给单片机,从而单片机控制显示温度和高温声音报警。
对非接触式测温的实现技术进行了有意义的探索与研究,在快速、安全测温方面有一定参考价值。
关键词:
80C51;MLX90614;非接触式测温;
ABSTRACT
Accordingtothedesigntaskandtheactualinvestigation,thedesignandtheschemedemonstrationarecarriedout,andthecorrespondinghardwareandsoftwaresystemsaredesigned,andthenon-contacttemperaturemeasurementsystemisdeveloped.ThesystemusestheMLX90614infraredtemperaturesensorandthe80C51MCUasthenoncontacttemperaturemeasuringsystem.UsingthelownoiseamplifierwiththesensorandtheA/Dconversion,thetemperatureandvoltagesignalscollectedbythesensorareprocessedandoutputtothesinglechipmicrocomputer,andthemicrocontrolleriscontrolledtodisplaythetemperatureandthehightemperaturesoundalarm.IthasmadeameaningfulexplorationandResearchontherealizationtechnologyofnon-contacttemperaturemeasurement,andhasacertainreferencevalueinfastandsafetemperaturemeasurement.
Keywords:
80C51;MLX90614;Non-contacttemperaturemeasurement;
摘要I
ABSTRACTII
目录III
引言1
第一章1
绪论1
1.1课题背景1
1.2非接触测温系统概述1
1.3课题研究的目的及意义2
第2章系统总体概述与构架2
2.1系统总功能概述2
2.2系统硬件总体构架3
2.3系统软件总体构架3
第3章系统硬件选择与电路设计4
3.1芯片介绍及相关模块及相关电路模块设计4
3.1.180C51系列单片机简介4
3.1.2MLX90614红外温度传感器测温模块介绍5
3.1.3LCD1602液晶模块介绍7
3.1.4蜂鸣器概述7
3.2单片机系统及外围电路的设计8
3.1.1单片机最小系统原理图8
3.2.1传感器电路9
3.2.3温度显示电路9
第4章软件部分10
4.1系统程序流程图11
4.2温度显示与报警程序11
附录12
引言
一般来说,测温方式可以分为接触式和非接触式,接触式测温只能测量被测物体与测温传感器达到热平衡后的温度,所以响应时间长,且极易受环境温度的影响;而红外测温是根据被测物体的红外辐射能量来确定物体的温度,具有影响动被测物体温度分布场,温度分辨率高、响应速度快、测温围广、不受温度上限的限制、稳定性好等特点,近年来在家庭自动化、汽车电子、航空和军事上得到越来越广泛的应用。
本文的非接触式测温系统是单片机系统的一种典型应用,要求在不接触物体的情况下对物体的温度进行直接的测量和报警,从而快速直观的了解到物体的温度。
本次设计采用80C51单片机为控制核心,并结合传感器模块、显示模块,最后单片机通过判断数字化的传感器温度信号直接控制蜂鸣器声音报警系统。
整个系统结构紧密,传输性能高。
第1章绪论
1.1课题背景
随着现代科学技术的发展,传统的接触式测温方式以不能满足现代一些领域的测温需求,对非接触、远距离测温技术的需求越来越大。
本红外测温系统设计的出发点也正是基于此。
1.2非接触式测温系统概述
非接触式红外测温也叫辐射测温,一般使用热电型或光电型探测器作为检测元件。
此温度测量系统比较简单,可以实现大面积的测温,也可以是被测物体上某一点的温度测量;可以是便携式,也可以是固定式,并且使用方便;它的制造工艺简单,成本较低,测温是不接触被测物体。
具有响应时间短、不干扰被测温场、使用寿命长、操作方便等一系列优点,但利用红外辐射测量温度,也必然受到物体发射率、测温距离、烟尘和水蒸气等外界因素的影响,其测量误差较大。
在这种温度测量技术中红外传感器的选择是非常重要的,而且不仅在点温度测量中要使用红外温度传感器,大面积温度测量也可以使用红外温度传感器。
本设计正是采用红外温度传感器这种温度测量技术,它具有温度分别率高、响应速度快、不扰动被测目标温度分布场、测量精度高和稳定性好等优点;另外红外温度传感器的种类比较多。
发展非常快,技术比较成熟,这也是本设计采用红外温度传感器设计非接触温度测量系统的主要原因之一。
1.3课题研究的目的及意义
设计出更加快速、安全且成本低的非接触式测温系统。
第2章系统总体概述与构架
2.1系统总功能概述
非接触式测温系统大体上是由温度传感器、液晶显示和报警器组成,温度传感器的工作原理是传感器输出的电压模拟信号随着被测物体温度与传感器自身温度变化而变化,再传输到单片机显示温度并判断是否报警,后传输到报警器做出响应。
系统整体功能如图2-1所示:
图3-2测温系统功能
2.2系统硬件总体构架
测温系统的主要模块:
传感器测温模块、单片机控制模块、声音报警模块、温度显示模块、电源模块(图中未显示),如图2-2
图2-2硬件构架图
2.3系统软件总体构架
程序初始化结束后,整个非接触式测温系统进入监控状态,温度传感器检测温度并输出电压信号,80C51单片机将经过传感器放大和A/D转换的温度信号成的十进度气体温度与限定值相比较,显示并判断是否报警。
如有异常报警则需要手动复位初始化整个系统。
系统程序流程图如图2-3
图2-3软件构架图
第3章系统硬件选择与电路设计
硬件电路是电路系统的重要组成部分,硬件电路设计是否合理直接影响电路系统的性能。
3.1芯片介绍及相关模块及相关电路模块设计
3.1.180C51系列单片机简介
虽然目前单片机的品种很多,但其中最具代表性的当属Intel公司的MCS-51单片机系列。
MCS-51以其典型的结构、完善的总线、SFR的集中管理模式、位操作系统和面向控制功能的丰富的指令系统,为单片机的发展奠定了良好的基础。
MCS-51系列的典型芯片是80C51(CHMOS型的8051)。
1)80C51单片机特点:
a)体积小、重量轻、价格低、耗电少、电源单一。
b)抗干扰能力强,可靠性高。
c)面向控制,控制功能强,运行速度快。
2)80C51单片机引脚及其功能介绍:
单片机的40个引脚大致可分为4类:
电源、时钟、控制和I/O引脚。
a)电源:
VCC-芯片电源,接+5V;VSS-接地端;
b)时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
c)控制线:
控制线共有4根:
d)ALE/PROG:
地址锁存允许/片EPROM编程脉冲
e)ALE功能:
用来锁存P0口送出的低8位地址
f)PROG功能:
片有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
g)PSEN:
外ROM读选通信号。
h)RST/VPD:
复位/备用电源。
i)RST(Reset)功能:
复位信号输入端。
j)VPD功能:
在Vcc掉电情况下,接备用电源。
k)EA/Vpp:
外ROM选择/片EPROM编程电源。
l)EA功能:
外ROM选择端。
m)Vpp功能:
片有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
n)I/O线:
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
3)8051引脚图
图3-180C51单片机引脚图
3.1.2MLX90614测温传感器介绍
MLX90614系列测温芯片通过通远程物体的红外线放射加热,热量由芯片热电偶测得。
由红外温度传感器、低噪放大器、A/D转换器、DSP单元、脉冲调制电路及逻辑控制电路构成,热电堆输出的温度信号经过部高性能、低噪声的运算放大器放大后,送给模数转换器(ADC),ADC输出的17位数字经过可编程FIR和IIR低通滤波器(即图中的DSP)处理后输出,该输出作为测量结果保存在MXL90614部RAM存储单元中,可以通过SMBus读取;同时测量结果送到后级数子式脉冲宽度调制电路,将测量结果以PWM的方式输出。
部结构图如下。
图3-1.1MLX90614D传感器部结构
MXL90614采用4脚罐形封装(TO239),顶端引脚分布视图如图所示,具体引脚功能如下:
图3-1.2MLX90614传感器引脚图
VDD:
外部电源输入;
VSS:
地,和外壳相恋;
SCL/Vz:
当MXL90614为SMBUS模式时SCL为串行输入,为PWM模式时Vz为由外部电路置高电平;
SDA/PWM:
当MXL90614为SMBUS模式时串行数据输出接口,为PWM模式时做为PWM波输出接口。
测温原理:
输出时被测物体温度(TO)与传感器自身温度(Ta)共同作用的结果,理想情况下热电元件的输出电压为:
其中温度单位均为Kelvin,A为元件的灵敏度常数。
3.1.3LCD1602液晶模块介绍
LCD1602是一种工业字符型液晶,能够同时显示16X02即32个字符。
LCD1602引脚说明:
1)第1脚:
VSS为地电源。
2)第2脚:
VDD接5V正电源。
3)第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
4)第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
5)第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
6)第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
7)第7~14脚:
D0~D7为8位双向数据线。
8)第15脚:
背光源正极。
9)第16脚:
背光源负极.如图
图3-1.3LCD1602引脚图
3.1.4蜂鸣器概述
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、机、定时器等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。
蜂鸣器原理图如图
图3-1.4蜂鸣器原理图
蜂鸣器驱动电路一般都包含以下几个部分:
一个三极管、一个蜂鸣器、一个续流二极管和一个电源滤波电容。
1)蜂鸣器
发声元件,在其两端施加直流电压(有源蜂鸣器)或者方波(无源蜂鸣器)就可以发声,其主要参数是外形尺寸、发声方向、工作电压、工作频率、工作电流、驱动方式(直流/方波)等。
这些都可以根据需要来选择。
2)续流二极管
蜂鸣器本质上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管提供续流。
否则,在蜂鸣器两端会产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。
3)滤波电容
滤波电容C1的作用是滤波,滤除蜂鸣器电流对其它部分的影响,也可改善电源的交流阻抗,如果可能,最好是再并联一个220uF的电解电容。
4)三极管
三极管Q1起开关作用,其基极的高电平使三极管饱和导通,使蜂鸣器发声;而基极低电平则使三极管关闭,蜂鸣器停止发声。
3.2单片机系统及外围电路的设计
3.2.1单片机最小系统原理图
本文所使用的80C51单片机最小系统由晶振电路、复位电路、电源以及串口通信组成。
原理图如图
图3-251单片机最小系统原理图
3.2.2数据采集与处理电路
本电路包括红外测温传感器MLX90614模块可以将传感器实时监测的温度模拟信号经过放大以及模数转换转换成80C51单片机可识别的数字化的十六进制温度信号。
原理图如图。
图3-2.2传感器模块原理图
3.2.3声音报警电路
本电路采用蜂鸣器来报警,当温度达到设定的警戒值或限定值蜂鸣器会发声来报警,以期达到跟好的提示效果。
图3-2.3报警模块原理图
3.2.4温度显示电路
本电路采用LCD1602液晶显示被测物体的温度。
如图为液晶显示模块原理图。
原理图如图。
图3-2.4温度显示模块原理图
第4章软件部分
3.1系统程序流程图
非接触式测温系统控制器采用主控芯片为80C51,是测温系统智能化的统一体现。
测温系统的软件采用了模块化程序设计方法,系统通过子程序调用,实现各个模块的具体功能。
不仅使程序结构清晰,又易于以后进一步扩展它功能。
本系统主要包括主程序、温度采集子程序、温度判断、温度显示与报警子程序等。
系统流程图如图。
图3-1系统流程图
3.2温度显示与报警程序
见附录二
附录一电路原理图
附录二系统程序
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineNack_number10
//*********端口定义************************************************//
ucharflag;//LCD控制线接口
sbitRS=P0^1;//RS端
sbitRW=P0^2;//读写端
sbitLCDE=P3^5;//使能端
//mlx90614端口定义
sbitBUZZ=P0^0;//定义蜂鸣器端口
sbitRS=P0^1;//定义LCD控制端口
sbitRW=P0^2;
sbitEN=P0^3;
//**********数据定义***********************************************//
voidCALTEMP(uintTEMP);
voidReadKey(void);
voidinitInt();
voiddelay1(uintz);
voidshow();
ucharkey_num;
ucharmah[5];
/****全局变量定义***********************************************//
bitb20ms,b100ms;//定时标志位
ucharc20ms,c100ms;//定时毫秒数
//*********************LCD1602*********************************//
//向LCD写入命令或数据*********************************************//
#defineLCD_COMMAND0//命令
#defineLCD_DATA1//数据
#defineLCD_CLEAR_SCREEN0x01//清屏
#defineLCD_HOMING0x02//光标返回原点
#defineLCD_SHOW0x04//显示开
#defineLCD_HIDE0x00//显示关
#defineLCD_CURSOR0x02//显示光标
#defineLCD_NO_CURSOR0x00//无光标
#defineLCD_FLASH0x01//光标闪动
#defineLCD_NO_FLASH0x00//光标不闪动
//***********设置输入模式***********************************//
#defineLCD_AC_UP0x02//光标右移AC+
#defineLCD_AC_DOWN0x00//默认光标左移AC-
#defineLCD_MOVE0x01//画面可平移
#defineLCD_NO_MOVE0x00//默认画面不移动
//**************************mlx90614****************************//
//commandmode命令模式
#defineRamAccess0x00//对RAM操作
#defineEepomAccess0x20//对EEPRAM操作
#defineMode0x60//进入命令模式
#defineExitMode0x61//退出命令模式
#defineReadFlag0xf0//读标志
#defineEnterSleep0xff//进入睡眠模式
//ramaddressreadonlyRAM地址(只读)
#defineAbmientTempAddr0x03//周围温度
#defineIR1Addr0x04
#defineIR2Addr0x05
#defineLineAbmientTempAddr0x06//环境温度
/*0x00000x4074165000.01/单元
-40125*/
#defineLineObj1TempAddr0x07//目标温度,红外温度
/*0x27ad-0x7fff0x3559226100.02/单元
-70.01-382.190.01452.2*/
#defineLineObj2TempAddr0x08
//eepomaddressEEPROM地址
#defineTObjMaxAddr0x00//测量围上限设定
#defineTObjMinAddr0x01//测量围下限设定
#definePWMCtrlAddr0x02//PWM设定
#defineTaRangeAddr0x03//环境温度设定
#defineKeAddr0x04//频率修正系数
#defineConfigAddr0x05//配置寄存器
#defineSMbusAddr0x0e//器件地址设定
#defineReserverd1Addr0x0f//保留
#defineReserverd2Addr0x19//保留
#defineID1Addr0x1c//ID地址1
#defineID2Addr0x1d//ID地址2
#defineID3Addr0x1e//ID地址3
#defineID4Addr0x1f//ID地址4
//************函数声明*****************************************//
voidstart();//MLX90614发起始位子程序
voidstop();//MLX90614发结束位子程序
ucharReadByte(void);//MLX90614接收字节子程序
voidsend_bit(void);//MLX90614发送位子程序
voidSendByte(ucharnumber);//MLX90614接收字节子程序
voidread_bit(void);//MLX90614接收位子程序
voiddelay(uintN);//延时程序
uintreadtemp(void);//读温度数据
voidinit1602(void);//LCD初始化子程序
voidbusy(void);//LCD判断忙子程序
voidcmd_wrt(ucharcmd);//LCD写命令子程序
voiddat_wrt(uchardat);//LCD写数据子程序
voiddisplay(uintTem);//显示子程序
voidPrint(uchar*str);//字符串显示程序
//*************主函数*******************************************//
voidmain()
{
uintTem;//温度变量
initInt();
SCK=1;
SDA=1;
delay(4);
SCK=0;
delay(1000);
SCK=1;
init1602();//初始化LCD
while
(1)
{
while(b100ms)//每100ms扫描一次键盘
{
b100ms=0;
ReadKey();
}
if(key_num==1)//按下1键时,进行数码管显示
{
Tem=readtemp();
CALTEMP(Tem);
show();
}
if(key_num!
=1)//液晶屏显示
{
Tem=readtemp();//读取温度
cmd_wrt(0x01);//清屏
Print("Temperature:
");//显示字符串Temperature: