简易温度报警器论文.docx
《简易温度报警器论文.docx》由会员分享,可在线阅读,更多相关《简易温度报警器论文.docx(33页珍藏版)》请在冰豆网上搜索。
简易温度报警器论文
毕业论文
论文题目:
简易温度报警器
学生姓名:
***
专业名称:
*****
指导教师:
****
第1章摘要……………………………………………………………4
第2章设计要求及方案………………………………………………5
2.1设计要求……………………………………………………………5
2.2设计方案……………………………………………………………5
2.2.1温度报警器电路设计方案一工作原理…………………………5
2.2.2电路设计方案二的工作原理……………………………………5
第3章硬件设计………………………………………………………6
3.1系统框图……………………………………………………………6
3.2单元电路设计………………………………………………………7
3.2.1前级信号处理部分………………………………………………7
3.2.2A/D转换模块……………………………………………………7
3.2.3主控部分AT89C51…………………………………………………9
3.2.4段驱动及数码管显示部分(SR410561K共阳极)………………9
3.2.5位驱动和键盘输入部分…………………………………………10
3.2.6高温报警及电机控制部分………………………………………11
3.2.7关键元器件介绍……………………………………………12
3.3总原理图……………………………………………………………16
3.4仿真组装与调试……………………………………………………16
3.4.1短路检测………………………………………………………17
3.4.2原理正确性确认…………………………………………………17
3.5PCB图………………………………………………………………17
第4章软件设计………………………………………………………18
4.1流程图………………………………………………………………18
4.2源程序………………………………………………………………19
第5章总结与体会………………………………………………………25
第6章参考文献…………………………………………………………26
第1章摘要
温度是一个十分重要的物理量,对他的测量与控制有十分重要的意义,随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。
本文通过采用压电陶瓷蜂鸣片作为电声元件的温度报警器的设计与制作,阐明了该装置进行设计与制作的具体过程及方法。
这种温度报警器结构简单,可操作性强,应用广泛。
工作时,温度测量范围为10——30ºC。
当前环境温度若超过设定的高温临界温度,由单片机发出报警信号并驱动继电器使风扇电机转动,从而防止因温度升高而带来的不必要的损失。
现代社会是信息社会,随着安全化程度的日益提高,机房——作为现代化的枢纽,其安全工作已成为重中之重,机房内一旦发生故障,将导致整个系统瘫痪,造成巨大的损失很社会影响。
造成高温火灾有:
电气线路短路、过载、接触电阻过大等引发高温或火灾;静电产生高温或或火灾;雷电等强电侵入导致高温或火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温;因此机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能。
本文介绍的是采用温度传感器AD590的温度报警器,自动测量当前环境温度,由单片机8051控制,并通过四位7段数码管显示,若当前环境温度超过此温度,系统发出报警并控制风扇电机转动。
关键词:
温度测量,报警,电机转动,单片机。
第2章设计要求及方案
2.1设计要求
1.自动测量当前环境温度,并通过四位7段数码管显示(保留一位小数);
2.显示精度≤0.5℃;
3.用压电陶瓷蜂鸣片作为电声元件;
4.当温度在10-30℃范围内,报警器不发出声音。
当温度超出这个范围时,报警器发出声音,并可根据不同的音调区分温度的高低,系统发出报警并控制风扇电机转动。
2.2设计方案
2.2.1温度报警器电路设计方案一工作原理
该温度报警器的主要由温度传感器AD590,前级信号放大器和数模转换模块,主控电路,段驱动数码管位驱动等部分组成.工作原理如下:
1.传感器对当前环境温度进行采样得到与之对应的模拟信号。
2.信号处理电路对传感器采样所得的模拟信号进行处理(放大)。
3.A/D转换电路对处理之后的模拟信号数值化。
4.将该数字信号送入单片机,经单片机处理后由七段数码管显示。
5.键盘输入模块向单片机设定高温临界温度。
6.当前环境温度若超过设定的高温临界温度,由单片机发出报警信号,压电陶瓷蜂鸣器报警,并驱动继电器使风扇电机转动。
2.2.2电路设计方案二的工作原理
该温度报警器的电路如图1所示。
时基电路IC1、电位器Rp、电阻R1和热敏电阻RT组成温度检测触发电路。
RT是一种负温度系数热敏电阻,阻值随温度的升高而逐渐减小。
IC2是一种音响集成电路KD9561,能产生4种模拟声,即警车声、消防车声、救护车声和机枪声。
IC3为音频功率放大器,可将微弱的音频信号放大,推动扬声器B发声。
具体工作过程如下:
温度未达到预定值时,由于温度传感器RT的阻值大于1/2(Rp+R1),IC1的触发端②脚电位高于1/3G(2V),使得IC1的③脚为低电位,二极管VD截止,IC2因得不到供电电压而无音频信号输出,扬声器B无声。
当温度升高到预定值时,RT的阻值将小于1/2(Rp+R1),IC1的触发端②脚电位低于1/3G(2V),IC1的输出端③脚为低电位跳变到高电平,二极管VD导通,输出约5V(200mA)的直流电压。
该直流电压经电容C2滤波后供给IC2。
这时IC2产生的警笛信号由OUT端输出,经C3耦合至IC3的输入端③脚进行功率放大。
放大后的音频信号从IC3的⑤脚输出,最后经电容C6驱动扬声器B发出响亮的警笛报警声。
图1
通过对以上两种方案的各个方面的比较.如适用前景和市场经济效益分析来看,选择第一种方案比较合理。
第3章硬件设计
3.1系统框图
3.2单元电路设计
3.2.1前级信号处理部分
图2
上图是由集成运放LM741构成的减法电路。
其输出电压U0=2.732-UI
图3
上图为由集成运放LM741组成的反向比例运算电路,其输出电压UO=-2UI
经两级运放电路处理之后,最终其输出电压U0=(Ui-2.732)*2,因此就将热力学温度转换成摄氏温度。
若当前温度为0℃,则此时输出电压为(2.732-2.732)*2=0V;若当前温度为10℃,则此时输出电压为(2.832-2.732)*2=0.2V;若当前温度为20℃,则此时输出电压为(2.932-2.732)*2=0.4V。
3.2.2A/D转换模块
图4
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
3.2.3主控部分AT89C51
图5
电路介绍:
这时模拟信号被转化为数字信号送入到单片机8951中进行内部计算。
由P1口输出到74LS244,P1口作为输出口时,若CPU输出1,Q=1,Q*=0,场效应管截止,P1口引脚的输出为1;若CPU输出0,Q=0,Q*=1,场效应管导通,P1口引脚的输出为0。
P1口由于有内部上拉电阻,没有高阻抗输入状态,称为准双向口。
作为输出口时,不需要在片外接上拉电阻。
P1口“读引脚”输入时,必须先向锁存器写1。
3.2.4段驱动及数码管显示部分(SR410561K共阳极)
图6
电路介绍:
74LS244由2组、每组四路输入、输出构成。
每组有一个控制端G。
由控制端的高或底电平决定该组数据被接通还是断开。
它仅仅是一个缓冲驱动器而已,用于增强你的信号带负载能力。
从主控芯片输入的信号转化为二进制信号。
G端接低电平,两组数据接通,从输出端送到四位数码管内读取数据并显示。
3.2.5位驱动和键盘输入部分:
图7位驱动
图8键盘输入
电路介绍:
位驱动利用三级管的开关特性,被8051的片选端输入到三极管是否处于饱和区和截止区。
键盘输入是用于输入某固定温度值,通过KEY1,KEY2,KEY3,KEY3输入到主控芯片8951中的25,26,27,28脚,使在外界温度低于或高于这个温度由主控芯片产生信号由16,17脚牵引到陶瓷蜂鸣器和电机模块。
3.2.6高温报警及电机控制部分:
图9
电路介绍:
从主控芯片16,17脚接收到信号通过简单电路分别使陶瓷蜂鸣器发出响声和电机转动。
3.2.7关键元器件介绍
3.2.7.1有关传感器的知识
本设计采用温度传感器AD590。
AD590是美国模拟器件公司生产的单片集成两端感温电流源。
它的主要特性如下:
流过器件的电流(A)等于器件所处环境的热力学温度(开尔文)度数,即:
Ir/T=1(A/K),其中Ir—流过器件(AD590)的电流,单位为A;T—热力学温度,单位为K。
AD590的测温范围为-55℃~+150℃。
AD590的电源电压范围为4V~30V。
电源电压可在4V~6V范围变化,电流变化1A,相当于温度变化1K。
AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。
输出电阻为710M,精度高。
AD590共有I、J、K、L、M五档,其中M档精度最高,在-55℃~+150℃范围内,非线性误差为±0.3℃。
AD590的输出电流值说明如下:
其输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其输出电流Iout=(273+25)=298μA。
内部结构:
集成温度传感器实质上是一种半导体集成电路,它是利用晶体管的b-e结压降的不饱和值VBE与热力学温度T和通过发射极电流I的下述关系实现对温度的检测:
V=KIT/qlnI,式中:
K—波尔兹常数;q—电子电荷绝对值。
集成温度传感器具有线性好、精度适中、灵敏度高、体积小、使用方便等优点,得到广泛应用。
集成温度传感器的输出形式分为电压输出和电流输出两种。
电压输出型的灵敏度一般为10mV/K,温度0℃时输出为0,温度25℃时输出2.982V。
电流输出型的灵敏度一般为1A/K。
外部特征:
Vcc(0):
电源4—30vGND
(1):
接地。
典型应用电路:
AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V-30V检测的温度范围为-55℃-+150℃,它有非常好的线性输出性能,温度每增加1℃,其电流增加1uA。
图10
上图为温度的基本应用电路。
因为为流过AD590的电流与热力学温度成正比,当电阻10k时,输出电压VO随温度的变化为10mV/K。
3.2.7.2模数转换器AD0809介绍
主要特性:
8路8位A/D转换器,即分辨率8位。
具有转换起停控制端。
转换时间为100μs,单个+5V电源供电。
模拟输入电压范围0~+5V,不需零点和满刻度校准。
工作温度范围为-40~+85摄氏度,低功耗,约15mW。
内部结构:
ADC0809是CMOS单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近寄存器、三态输出锁存器等其它一些电路组成。
因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。
输入输出与TTL兼容。
外部特征:
ADC0809芯片有28条引脚,采用双列直插式封装
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ALE(22):
地址锁存允许信号,输入,高电平有效。
START(6):
A/D转换启动信号,输入,高电平有效。
EOC(7):
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE(9):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK(10):
时钟脉冲输入端。
典型值为640KHZ。
REF(+)、REF(-):
参考电压输入端。
Vcc(11):
电源,+5V。
GND(13):
地。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路。
图11
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
3..2.7.3LM741介绍
LM741(单运放)是高增益运算放大器:
图12
1和5为偏置(调零端),
2为正向输入端,
3为反向输入端,
4接地,
6为输出,
7接电源,
8空脚
从原理上讲,振荡周期应不受电源电压的影响,但实际上,由于A2差动输入电压的限制与晶体管驱动电路的常数等影响,故不允许电源电压大幅度的变动。
电源电压的范围为±13~±15V,正、负电源电压的绝对值需要相等。
3.2.7.4单片机AT89C51介绍
图13
89C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
数据存储器(RAM)片内为128个字节(52子系列的为256个字节),1个全双工的异步串行口,具有四种工作方式。
共有21个,是一个具有特殊功能的RAM区。
CPU对各种功能部件的控制是采用特殊功能寄存器(SFR,SpecialFunctionRegister)的集中控制方式。
89C51的存储器配置方式与其他常用的微机系统不同,属哈佛结构,它把程序存储器和数据存储器分开,各有自己的寻址系统、控制信号和功能。
程序存储器用于存放程序和表格常数;数据存储器用于存放程序运行数据和结果。
3.2.7.5有关压电陶瓷蜂鸣片的知识
蜂鸣片,实质上就是压电陶瓷片蜂鸣片。
它是一个容性元件。
压电陶瓷蜂鸣片是将高压极压化后的压电陶瓷片黏贴于振动金属片(一般有铜片,铁片,不锈钢,铝片等)上。
当加入交流电压后,会因为压电效应,而产生机械变形伸展及收缩,利用此特性使金属片振动而发出声响。
压电陶瓷蜂鸣片一般分为他激式(二极);自激式(三极)两种。
而普通的扬声器在电路中长感性,通过电流电可使它发声,且直流电也可以通过它。
在某些情况下就可能使得放大器直流电路中断而不能工作。
这时,我们可以在蜂鸣片两端并联一个合适的电感,使之对音频呈较大阻抗,但放大器又不能正常工作,蜂鸣器也可以正常发声。
也可以用一只普通袖珍式收音机的输入变压器,用它的初级作为放大器的负载,次数(如果次级为双绕组,可将他们串联)与蜂鸣器的两端连接,这样能使蜂鸣片的音量加大许多。
3.3总原理图(见附件)
3.4仿真组装与调试
当温度传感器AD590接受到外界环境温度的变化时,如:
将火苗靠近传感器或用电吹风对传感器加热等,这时传感器对这个信号进行采样处理,将这个模拟信号送入前级信号处理部分,经过减法电路和反向比例运算电路,对信号进行处理,证明了一个理论,当温度升高10摄氏度时,电压值增加0.1V。
紧接着将这个处理过的模拟信号送到A/D转换模块中,将信号进行数字化处理,再将这个数字信号输入到主模块单片机中进行处理,由单片机的IO口将各个信号送入相应的单元电路,P0口接收数模转换信号,P1口输出信号到段驱动,经过74LS244处理送入到数码管显示数据,P2口接位驱动和键盘,查看是否处于饱和区或截止区和输入一个高温临界点,最后在从单片机的16脚和17脚接入压电陶瓷蜂鸣器和电机控制部分,用于高温报警和风扇的控制。
最后再将程序烧入单片机中,这样整个电路就差不多了。
紧接着就是调试的部分了,检查焊接是否规范,线路是否接错,确保基本的错误没有后,接通电源,检查前级和后级,看看数码管是否正常显示,最后再加热传感器,使其达到设定的高温临界点,如果实现了报警和风扇转动,证明设计成功了,如果没有还需一级一级的仔细检查。
在焊接的过程中,为保证焊点牢固、接触良好与美观,不存在虚焊、假焊,在焊接前要用刀、断锯条或砂纸刮去或打光引脚引线上的油污、氧化膜或漆,直至露出光亮干净的表面,之后涂上松香溶液,其上搪一层锡。
焊接时应掌握好温度及时间,焊接时间一般在3~5秒。
若焊接时间过短,焊锡未与焊件充分浸熔易产生虚焊、假焊;时间过长,则将烫坏印制板的铜箔或元件。
电烙铁温度过低,焊点表面粗糙、无光泽、呈豆腐渣状。
焊接时,烙铁头应同时紧贴引脚或引线头及印制板上的焊盘铜箔,当焊点温度升至焊锡熔点时,焊锡熔化即自动流到引线与铜箔间,形成锥状光滑焊点,之后迅速移开烙铁。
焊锡未完全凝固前,不能移动或摇动被焊元器件。
焊锡可事前熔在烙铁头上,亦可在烙铁贴在焊点加热时将其送入。
各元件焊接完毕, 焊接结束后必须检查有无漏焊、虚焊以及由于焊锡流淌造成的元件短路。
虚焊较难发现,可用镊子夹住元件引脚轻轻拉动,如发现摇动应立即补焊。
这一阶段的调试是调试的第一部分即断电调试,步骤如下:
3.4.1短路检测
系统电路焊接完成后,必须进行短路检测。
检测方法简单,选用合适的万用表欧姆挡,用红黑表笔接电路板的+5V电源的正负极,如果存在充放电现象(即电阻指示从大到小再到大或从小到大),最后电阻稳定在一个适当的位置。
则基本可排除系统短路现象。
如果无充放电现象或电阻值稳定在很小的值,则说明系统可能存在短路故障,不能通电实验,必须对系统进行仔细的排查,直至解决。
3.4.2原理正确性确认
不同的电路有不同的工作原理。
因此必须针对具体电路进行具体分析。
本设计的硬件电路原理设计在前面电路设计中已得到验证,为正确。
3.5PCB图
第4章软件设计
4.1流程图
4.2源程序
4.2.1define.h
#ifndefdefine_header_file
#definedefine_header_file
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
externscan();
externwork_data();
externkeydone();
externuintgetdata;
externuinttemp;
externuinthigh,low;
externucharcodedis_7[];
externuchardatadisplay[];
externuchardone;
sbitCLK=P3^5;
sbitST=P3^0;
sbitOE=P3^1;
sbitEOC=P3^2;
sbitP20=P2^0;
sbitP21=P2^1;
sbitP22=P2^2;
sbitP23=P2^3;
sbitP24=P2^4;
sbitP25=P2^5;
sbitP17=P1^7;
#endif
4.2.2keydone.c
#include"define.h"
sbitset=P3^3;
sbitup=P3^4;
sbitdown=P3^6;
sbitout=P3^7;
bithighflag,lowflag;
ucharcount,m,n;
uinthigh=650,low=150;
uchardatadis[4]={0x00,0x00,0x00,0x00};
delay()
{uchari,j;
for(i=10;i>0;i--)
for(j=10;j>0;j--);}
outkey()
{out=1;
if(out==0)
{delay();
done=0;
count=0;
while(out==0);}}
setkey()
{set=1;
if(set==0)
{delay();
count=count+1;
done=1;
while(set==0);}}
upkey()
{up=1;
if(up==0)
{delay();
switch(count)
{case1:
++high;
if(high>=1000)
{high=1000;}
else
highflag=0;
break;
case2:
++low;
if(low>=high)
{low=high;}
break;
default:
break;}
while(up==0);}}
downkey()
{down=1;
if(down==0)
{delay();
switch(count)
{case1:
--high;
if(high<=low)
{high=low;}
elsehighflag=0;
break;
case2:
--low;
if(low<=0)
{low=0;}
elselowflag=0;
break;
default:
break;}
while(down==0);}}
showlow()
{dis[0]=low%10;
dis[1]=low/10%10;
dis[2]=low/100%10;
dis[3]=15;
P20=1;
P1=dis_7[dis[0]];
delay();
P20=0;
P21=1;
P1=dis_7[dis[1]];
P17=0;
delay();
P21=0;
P22=1;
P1=dis_7[dis[2]];
delay();
P22=0;}
showhigh()
{dis[0]=high%10;
dis[1]=high/10%10;
dis[2]=high/100%10;
dis[3]=12;
P20=1;
P1=dis_7[dis[0]];
delay();
P20=0;
P21=1;
P1=dis_7[dis[1]];
P17=0;
delay();
P21=0;
P22=1;
P1=dis_7[dis[2]];
delay();
P22=0;}
keydone()
{setkey();
if(count>2)
count=count%2;
switch(count)
{case1:
{outkey();
upkey();
downkey();
showhigh();}
break;
case2:
{outkey();
upkey();
downkey();
show