温度报警课程设计报告.docx
《温度报警课程设计报告.docx》由会员分享,可在线阅读,更多相关《温度报警课程设计报告.docx(37页珍藏版)》请在冰豆网上搜索。
温度报警课程设计报告
单片机原理及应用
课程设计报告书
题目:
基于DS18B20的温度测量及报警系统设计
姓名:
崔银海
学号:
1210702103
专业:
电子信息工程
指导老师:
沈兆军曹瑞
设计时间:
2015年6月
/信息工程学院
基于DS18B20的温度测量及报警系统设计
1引言
1.1设计意义
温度是一个很重要的物理量,它直接影响化学反应、发酵、煅烧、浓度、蒸馏、结晶以及空气流动等物理及化学过程。
温度控制失误就可能引起生产安全、质量和产量等一系列问题。
温度测量无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用。
传统的温度采集方法不仅费时费力,而且精度差,而单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。
特别是在环境恶劣或温度较高等场合下,为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对加热炉内温度进行测量、显示、报警及控制,使之达到工艺标准,以单片机为核心设计的温度测量系统,可以对温度进行实时测量,并将温度数据进行显示和报警以及进行相应控制。
1.2系统功能要求
本设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:
当温度低于设定下限温度时,蜂鸣器报警,同时红灯亮,模拟加热过程,使温度上升;当温度高于设定上限温度时,蜂鸣器报警,同时绿灯亮,模拟制冷过程,使温度下降;温度在上下限温度之间时,蜂鸣器和红绿灯不动作;LCD1602实时时显示温度,精确到小数点一位;通过独立按键可以设置温度的控制范围。
2方案设计
2.1系统方案选择
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机控制及处理,省去传统测温方法的很多外围电路。
且该芯片的性能比较稳定,线形较好,在0—100°C时,最大线性偏差小于1°C。
DS18B20采用了单总线的数据传输,由DS18B20和微控制器STC89C52构成的温度测量装置,它直接输出温度的数字信号,可直接与单片机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用51单片机控制,软件编程的自由度很大,可通过C语言编程实现各种各样的算术算法和逻辑控制,而且硬件实现简单,安装方便。
另外51单片机在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
该系统利用STC89C52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度并可以根据需要设定上下限报警温度进行报警和相应的控制处理。
该系统扩展性很强,它可以利用键盘来进行温度范围调整,利用AT24C02芯片作为存储器件,获得的数据可以通过I2C总线协议与AT24C02通信而把温度范围数据储存起来,方便应用中的实时调整以及关机重启后加载数据。
2.2系统的电路设计方框图
在本系统的电路设计方框图如图2.1所示,它由五部分组成:
图2-1温度计电路总体设计方案
1.控制部分
单片机AT89S52具有低电压供电和体积小等特点,它所具有的资源能足够满足此次电路系统的设计需要,并且很适合便携手持式产品的设计使用。
2.显示部分
显示电路采用LCD1602,第一行显示当前温度,第二行显示控制温度范围。
3.用户按键
用户按键采用4位独立按键,能够对温度上下限进行设置。
4.蜂鸣器报警电路
当前温度超出设定的温度上下限时,蜂鸣器报警。
5.温度测量电路
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温。
这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。
数字温度传感器DS18B20把采集到的温度通过数据引脚传到单片机的P1.4口。
此部分只用到DS18B20和单片机,硬件很简单。
(1)DS18B20的性能特点如下:
1)独特的单线接口仅需要一个端口引脚进行通信;
2)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
3)无须外部器件;
4)可通过数据线供电,电压范围为3.0~5.5V;
5)零待机功耗;
6)温度以3位数字显示;
7)用户可定义报警设置;
8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(2)DS18B20的内部结构
DS18B20采用3脚PR-35封装,如图1.2所示;DS18B20的内部结构,如图3所示。
图2-2DS18B20封装
(3)DS18B20内部结构主要由四部分组成:
1)64位光刻ROM。
开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。
64位闪速ROM的结构如下.
表2-1ROM结构
8b检验CRC
48b序列号
8b工厂代码(10H)
MSBLSBMSBLSBMSBLSB
图2-3DS18B20内部结构
2)非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值。
3)高速暂存存储,可以设置DS18B20温度转换的精度。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的E2PRAM。
高速暂存RAM的结构为8字节的存储器,结构如图1.3所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
它的内部存储器结构和字节定义如图1.3所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式。
表2-2DS18B20内部存储器结构
Byte0
温度测量值LSB(50H)
Byte1
温度测量值MSB(50H)
E2PROM
Byte2
TH高温寄存器
----
TH高温寄存器
Byte3
TL低温寄存器
----
TL低温寄存器
Byte4
配位寄存器
----
配位寄存器
Byte5
预留(FFH)
Byte6
预留(0CH)
Byte7
预留(IOH)
Byte8
循环冗余码校验(CRC)
2)非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值。
3)高速暂存存储,可以设置DS18B20温度转换的精度。
DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,如图1.4。
图2-3DS18B20字节定义
TM
R1
R0
1
1
1
1
1
由表1.1可见,分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表1.2是一部分温度值对应的二进制温度数据[6]。
表2-4DS18B20温度转换时间表
R1
R0
分辨率/位
温度最大转向时间/ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
表2-5 一部分温度对应值表
温度/℃
二进制表示
十六进制表示
+125
0000011111010000
07D0H
+85
0000010101010000
0550H
+25.0625
0000000110010000
0191H
+10.125
0000000010100001
00A2H
+0.5
0000000000000010
0008H
0
0000000000001000
0000H
-0.5
1111111111110000
FFF8H
续表2-5
-10.125
1111111101011110
FF5EH
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
4)CRC的产生
在64bROM的最高有效字节中存储有循环冗余校验码(CRC)。
主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数
3硬件设计
3.1单片机最小系统
单片机最小应用系统,是指用最少的原件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统应包括单片机、晶振电路、复位电路。
下面介绍51单片机的最小系统电路图。
图2.2单片机最小系统
单片机的最小系统是由电源、复位、时钟,下面介绍一下每一个组成部分。
(1).时钟电路
图2.3时钟电路
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取30PF左右。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
AT89单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。
因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。
在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。
(2).复位电路
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。
复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。
当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。
复位是由外部的复位电路来实现的。
片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。
复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。
当时钟频率选用6MHz时,C取22μF,Rs约为200Ω,Rk约为1K。
复位操作不会对内部RAM有所影响。
常用的复位电路如下图所示:
图2.4复位电路图
3.2温度检测电路及DS18B20测温原理
(1).DS18B20介绍
DS18B20引脚如图3-4所示。
图3-4DS18B20的管脚排列
DALLAS半导体公司的单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积小、适用于多种场合。
DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
温度测量范围为-55~+125°C,可编程为9位~12位转换精度,测温分辨率可达0.0625°C。
被测温度用符号扩展的16位数字量方式串行输出。
多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口很少,可节省大量的引线和逻辑电路。
(2).DS18B20特性
(1)适应电压范围宽:
3.0V~5.5V,在寄生电源方式下可由数据线供电。
(2)独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(3)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
(4)测温范围-55℃~+125℃,在-10℃~+85℃时精度为±0.5℃。
(5)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
(6)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字。
(7)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有很强的抗干扰纠错能力。
(8)负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作[2]。
(3).DS18B20硬件电路
在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时VDD、GND接地,I/O接单片机I/O。
无论是内部寄生电源还是外部供电,I/O口线要接10KΩ左右的上拉电阻。
我们采用的是第一种连接方法,如图3-5所示,把DS18B20的数据线与单片机的P2.5管脚连接,再加上上拉电阻。
图3-5DS18B20连接图
3.3报警温度调节电路
本系统一共设置了3个按键,系统运作时按key1键切换到下限温度设置模式,同时数码管显示下限温度,按key2,key3可以对相应的下限温度进行加减设置。
再按key1键切换到上限温度设置模式,同时显示上限温度,同样按key2,key3可以进行设置。
再按key1切换到正常显示温度模式,同时将上下限温度值储存到AT24C02中。
按键电路如图3-6所示,直接将I/O口通过按键接地即可,程序运行时检测到低电平即为按键按下。
图3-6温度调整按键电路
3.4报警及控制电路
由于只对温度太高和太低报警,报警功能并不复杂,这里没有采用语音报警功能,而用蜂鸣器代替,这样系统更简洁,软件方面也比较好控制,成本也更低。
蜂鸣器电路如图3-9,采用PNP三极管驱动蜂鸣器[4]
图3-9蜂鸣器电路
在温度控制方面,降温利用小风扇实现,而考虑到成本和简便,加热器用红色LED灯模拟。
电路如图3-10
图3-10温度控制电路
4软件设计
4.1主程序模块
主程序需要调用3个子程序,分别为:
●DS18B20测温子程序:
●实时温度显示子程序:
驱动LCD1602把实时温度值显示出来
●温度设定、报警子程序:
设定报警温度值,当温度超过该值时产生报警,即驱动蜂鸣器鸣叫、2个发光二极管发光
主程序流程图:
4.2主程序设计
系统软件主要在温度显示和键盘扫描之间循环,隔一段时间才对DS18B20进行温度获取,所以显示和扫描循环50次后再和温度测量部分构成系统大循环,即大约每一秒获取一次温度数据。
如下为系统主程序:
voidmain()
{
uintj;//计数器
xia=read_add
(2);
delayms(10);
shang=read_add(4);//读出保存的上限数据
TMOD=0x01;//定时器工作在方式1
ET0=1;
EA=1;
TH0=(65536-250)/256;
TL0=(65536-250)%256;
TR0=0;//先关闭定时器
while
(1)
{
tempchange();//温度转换
dis_temp(temp);//显示温度
dis_temp(temp);
get_temp();//获取温度
dis_temp(temp);
dis_temp(temp);
deal();//温度处理
j=50;
while(j--)
{
dis_temp(temp);
if(KEY1==0)set();//键盘扫描
}
}
}
4.3测温程序设计
DS18B20与单片机通信采用的是单总线技术,它采用单条信号线,既可传输时钟,又可传输数据,而且数据传输是双向的,因而这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。
DS18B20测温过程主要分三个步骤:
DS18B20温度转换,DS18B20度暂存数据,数据求出十进制,如图4-2:
图4-2测温流程
4.3.1温度转换工作流程
1.DS18B20复位
2.写入跳过ROM的字节命令0xcc
3.写入开始转换的功能命令0x44
4.延迟月750~900ms
4.3.2读暂存器数据流程
1.DS18B20复位
2.写入跳过ROM的字节命令0xcc
3.写入读暂存器功能命令0xee
4.读入第0个字节LS,转换结果低八位
5.读入第1个字节MS,转换结果高八位
6.复位,表示读取暂存结果
4.3.3数据求出十进制
1.整合LS和MS数据
2.判断是否为正(由于本系统测量范围在0到99.9之间,故不要)
5系统调试
5.1硬件调试
(1)在本温度控制电路的设计调试中遇到了很多的问题。
回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:
1)了解到作为上拉电阻的排阻具有公共脚,不可接错。
2)单片机
(31脚)应接高电平,
是内外存储器选择引脚。
当
信号为低电平时,无论单片机是否有内部程序存储器在,只访问外部程序存储器;当
信号为高电平时,先访问内部程序存储器,当程序计数器PC超过片内程序存储器容量时,将自动转向外部程序存储器。
本设计使用单片机的内部程序存储器,故
应接高电平。
(2)程序编写完以后,我们先对其进行仿真,初步验证电路图和程序的可行性和正确性。
1)proteus简介
Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
1实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
2支持主流单片机系统的仿真。
目前支持的单片机类型有:
ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。
3提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2、MPLAB等软件。
具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
proteus6.5是目前最好的模拟单片机外围器件的工具,真的很不错。
可以仿真51系列、AVR,PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件,...)其实proteus与multisim比较类似,只不过它可以仿真MCU。
proteus仿真图
高温报警:
低温报警:
6设计总结
本设计使用的温度控制器结构简单、测温准确,具有一定的实际应用价值。
该智能温度控制器只是DS18B20在温度控制领域的一个简单实例,还有许多需要完善的地方,例如可以将测得的温度通过单片机与通讯模块相连接,以手机短消息的方式发送给用户,使用户能够随时对温度进行监控。
此外,还能广泛地应用于其他一些工业生产领域,如建筑,仓储等行业。
本温度控制系统可以应用于多种场合,像的温度、育婴房的温度、水温的控制。
用户可灵活选择本设计的用途,有很强的实用价值。
7参考文献
[1]张毅刚、彭喜元.《单片机原理与应用设计》M.北京:
电子工业出版社,2008.4:
10-13
[2]郭天祥.《新概念51单片机C语言教程》M.北京:
电子工业出版社,2009.1:
343
[3]邹振春.王宗和.单片机实训[M].高等教育出版社.2002
[4]周志德.单片机原理及应用[M].高等教育出版社.2007
[5].苏麟祥.DS1820数字温度传感器的功能特性及其应用.世界采矿快报,
2000(9)
[6].沙占友等.智能化集成温度传感器原理与应用.北京:
机械工业出版社,2002
8附录A;源程序
/*-----------------------------------------------
名称:
18B20温度测量报警
内容:
在LCD1602第一行可以显示当前温度,
第二行显示设定的温度区间,超过此温度区间,蜂鸣器报警。
温度区间可以通过用户按键设置
------------------------------------------------*/
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
/******************************************************************/
/*定义端口*/
/******************************************************************/
sbitled1=P1^0;//温度超出范围指示灯
sbitled2=P1^1;
sbitbuzzer=P1^3;//蜂鸣器引脚
sbitDQ=P1^4;//ds18b20端口
sbitRS=P2^4;//1602数据/命令选择端(H:
数据寄存器L:
指令寄存器)
sbitRW=P2^5;//1602读/写选择端
sbitE=P2^6;//1602使能信号端
sbitkey1=P3^4;//用户按键
sbitkey2=P3^5;
sbitkey3=P3^6;
sbitkey4=P3^7;
/****************************************