基于单片机的DS18B20温度控制系统课程毕业设计报告.docx
《基于单片机的DS18B20温度控制系统课程毕业设计报告.docx》由会员分享,可在线阅读,更多相关《基于单片机的DS18B20温度控制系统课程毕业设计报告.docx(36页珍藏版)》请在冰豆网上搜索。
![基于单片机的DS18B20温度控制系统课程毕业设计报告.docx](https://file1.bdocx.com/fileroot1/2023-4/20/6c145ab0-60fe-47f6-9880-cca238850fcd/6c145ab0-60fe-47f6-9880-cca238850fcd1.gif)
基于单片机的DS18B20温度控制系统课程毕业设计报告
毕业设计报告
设计题目:
基于DS18B20的温度控制
设计作者:
专业班级/学号:
合作者1:
专业班级/学号:
合作者2:
专业班级/学号:
指导教师:
设计时间:
2011
摘要
本设计是基于DS18B20的温度控制系统,以STC89C51为控制系统核心,通过单片机系统设计实现对温度的显示和控制功能。
本温度控制系统是一个闭环反馈调节系统,由温度传感器对外界温度进行检测,经过调理电路得到合适的电压信号。
经A/D转换芯片得到相应的温度值,将所得的温度值与设定温度值相比较得到偏差。
通过对偏差信号的处理获得控制信号,去调节,从而实现对温度的显示和控制。
本文主要介绍了温度控制系统的工作原理和设计方法,主要由三部分构成:
系统整体方案设计。
硬件设计,主要包括温度检测电路、显示电路、键盘设计和控制电路、报警电路。
系统软件设计,软件的设计采用模块化设计,主要包括显示模块、键盘模块和控制模块等。
关键词:
单片机;温度传感器;温度检测,DS18B20
一、引言
温度控制系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等,常用的控制电路根据应用场合和所要求的性能指标有所不同,在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。
这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。
传统的继电器调温电路简单实用,但由于继电器动作频繁,可能会因触点不良而影响正常工作。
控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。
而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。
数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。
由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。
更能串接多个数字温度传感器DS18B20进行范围的温度检测。
二、系统设计任务及要求
1.1系统设计任务
设计一个基于DS18B20的温度控制系统,配合硬件实现温度实时采集和自动调控温度,显示当前温度等功能,实现单片机的闭环控制系统。
该系统能在温度高于或低于设置的温度值时自动开启风扇或加热器驱动DS18B20使其温度在规定的值内。
1.2系统设计的基本要求
1.实现单片机闭环控制系统:
系统内部能够自动的调节。
2.自动启动空调或加热器功能:
当DS18B20的温度高于设定的的最高温度时,系统能够自动的驱动风扇散热;当DS18B20的温度低于设定的最低温度时,系统能够自动的驱动加热管加热。
3.设置温度范围控制功能:
系统在设计过程能实现上下限温度的按键设置。
4.温度显示:
在整个系统中可以直观的显示当前的温度和用户设定的上下限温度。
三、系统总体设计
2.1系统设计方案论证
2.1.1电源选择
由于电源的设计比较复杂,且时间有限,所以在电源选择上我们就直接选择现成的电源,这样能节省下来很多的时间。
2.1.2环境参数采集
DS18B20作为温度传感检测元件,它不仅测温范围宽(-55~125℃),而且最大分辨达0.0625℃,同时与单片机相连采用3线制,可直接读出被测温度值。
减少了外部的硬件电路,具有低成本和易使用的特点。
2.1.3控制模块选择
STC89C51系列单片机是从引脚到内核都是完全兼容标准8051单片机,其中51/52/53/型号后缀为RC,表明片内集成了512字节的RAM。
本设计对数据的处理速度以及存储空间的要求不高,一般的内置的闪存都能满足,而STC89C51芯片存储空间更大能够在线擦写程序的优点,在运用和软件调试时更方便,且自带的下载版上的数码管和按键也能对当前的温度分别进行显示和控制,因此选用此作为控制模块。
2.1.4执行动作模块
方案一:
选用光电耦合器,双向可控硅和功率电阻组成可以与单片机端口和市电连接大功率工作的设备,以供风扇与加热器的正常工作。
此电路可控制大功率设备,但是在制作和调试的过程中要注意安全。
方案二:
选用小功率演示器件,用不同颜色的发光二极管或小功率风扇来代替风扇和加热器,能直观的反应单片机控制哪路电路的工作,这样不仅表达出来的效果比较好,而且在调试和使用的时候比较的安全,并且在单片机下载版数码管上显示当前的温度范围。
该设计方案虽然安全,但该设计不能在现实生活中实现自动控制。
从上面两个方案比较,要想实现该系统的自动控制选择方案一比较好。
2.2整体设计方案的确定
综合考虑,本设计采用基于STC89C51单片机与DS18B20温度传感器、加热制冷部分构成机箱监控系统硬件设计,其整体框架图如下图1-1。
图1-1系统整体框图
四、硬件电路设计及工作原理
3.1参数采集模块设计
4.1.1温度传感器DS18B20芯片介绍与运用
DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、体积小、功耗小、抗干扰能力强、使用方便等优点。
可以在三根线上同时并联多个温度传感器,每台分机上可以连接多根电缆,每根电缆上可以并联几十个点,构成串行总线工作方式。
由于18B20芯片送出的温度信号是数字信号,因此简化了A/D转换的设计,提高了测量效率和精度;并且芯片的ROM中存有其唯一标识码,即不存在相同标识码的DS18B20,特别适合与微处理芯片构成多点温度测控系统。
1.DS18B20的性能特点:
(1)适用电压范围:
3.0—5.5V;
(2)2.测温范围:
-55—+125℃,精度为±0.5℃;
(3)3.无须外部器件,独特的单线接口仅需要一个端口引脚进行通信;
(4)4.多个DS18B20可以并联在唯一的三线上,实现多点组网功能;
(5)5.零待机功耗;
(6)6.用户可定义的EEPROM,设定的报警温度存在非易失存储器中;
(7)7.报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
(8)8.可编程的分辨率为9—12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃;
(9)9.负压特性:
电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
图2-1 DS18B20引脚分布图
引脚定义:
1.DQ为数字信号输入/输出端;
2.GND为电源地;
3.VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
2.DS18B20的测温原理
DS18B20的测温原理如图2-5所示。
用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。
计数器被预置到对应于﹣55℃的一个值。
如果计数器在门周期结束前到达0,则温度寄存器的值增加,表明温度大于﹣55℃。
同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。
然后计数器又开始计数直到0,如果门周期未结束,将重复这一过程。
斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器达到被测温度值。
图2-2DS18B20测温原理图
应该注意的是:
由于DS18B20单线通信功能是时分完成的,它严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)发ROM功能命令
发存储器操作命令
处理数据。
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500us,然后释放,DS18B20收到信号后等待16~60us左右,后发出60~240us的低脉冲,主CPU收到此信号表示复位成功。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。
对应的温度计算:
当符号位S=0时,表示测得的温度值为正值,可直接将二进制位转换为十进制;当S=1时,表示测得的温度值为负值,要先将补码变为原码,再计算十进制值。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
DS18B20温度值格式表
温度/℃
二进制表示
十六进制表示
+125℃
0000011111010000
07D0H
+85℃
0000010101010000
0550H
+25.0625℃
0000000110010001
0191H
+10.125℃
0000000010100010
00A2H
+0.5℃
0000000000001000
0008H
0℃
0000000000000000
0000H
-0.5℃
1111111111111000
FFF8H
-10.125℃
1111111101011110
FF5EH
-25.0625℃
1111111001101111
FE6FH
-55℃
1111110010010000
FC90H
3.DS18B20与单片机的接口电路
DS18B20可以采用电源供电方式(如图2-4),此时DS18B20的1脚接地,2脚作为信号线,3脚接+5V电源。
图2-4DS18B20采用电源供电方式
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
3.2执行动作模块设计与MOC3081的简介
当传感器把数据传送给单片机后,单片机把信号发送给执行动作模块,让其做出相应的开启关闭空调或加热器的动作,这个模块部分接的是220V的电压,所以还必须用到光电双向可控硅(moc3081)对电路进行保护隔离。
其电路图如下:
图2-5执行动作模块结构框图
(一)MOC3081的外形和内部结构(图2-6,图2-7)
图2-6MOC3081外形图
图2-7MOC3081内部结构图
(二)MOC3081的性能特点:
1.适用最大电压范围:
800V,耐压高,安全可靠;
2.工作温度范围:
-40—+100℃;
3.6引脚交叉光隔离器TRIAC驱动输出电压峰;
4.输入端正向电流最大值为50mA;反向电压为6V
5.输出端正向电流最大值为1.2A,耐压800V;
6.过零点触发
光耦以光信号为媒介来实现电信号的耦合与传递,输入与输出在电气上完全隔离,具有抗干扰性能强的特点。
对于既包括弱电控制部分,又包括强电控制部分的工业应用测控系统,采用光耦隔离可以很好地实现弱电和强电的隔离,达到抗干扰目的。
3.3用户自行控制温度和显示温度模块介绍
3.3.1当前温度显示部分介绍
下图是基于DS18B20温度控制系统显示部分的的设计框图,该图能清楚明了了让我们知道该系统硬件的基本连接方法。
图2-8数码管显示温度示意框图
3.3.2按键控制调节上下限报警限温度说明
图2-8中的P3.0到P3.3时对上下限报警温度调节端口,其中P3.0是设置是否进入上下限温度调节端口;P3.1端口是控制调节上限报警温度还是调节下限报警温度;P3.2和P3.3分别是加减控制端口。
3.4具体硬件电路原理分析
3.4.1单片机模块
图2-9
说明:
该该部分硬件是单片机模块,用来处理C语言程序,并控制后级的驱动电路和数码的显示部分
3.4.2按键模块
图2-10
说明:
该硬件电路是按键的部分,主要是用来调整系统内部已经定好的上下限温度报警的值。
3.4.3后级驱动模块
说明:
该电路是后级驱动电路,该电路通过单片机的控制来达到DS18B20在设定的温度范围内工作。
当温度高于上限报警温度,单片机给P1.2低电平,驱动风扇工作;当温度低于下限报警温度,单片机给P1.3低电平,驱动加热棒工作。
五、软件设计
4.1主程序流程图
DS18B20是可编程器件,在是使用时必须经过以下三个步骤:
初始化、写操作、读操作。
每一次读写操作之前都要先将DS18B20初始化复位,复位成功后才能对DS18B20进行预定的操作,三个步骤缺一不可。
在编写相应的应用程序时,必须先掌握DS18B20的通信协议和时序控制要求。
由于DS18B20是利用一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议由几种单线上信号类别型组成:
复位脉冲,存在脉冲,写0,写1,读0和读1。
主程序流程图如图2-11所示:
图2-11主程序流程图
4.2DS18B20温度传感器初始化
主机总线to时刻应先向DS18B20送出(TX)发送一复位脉冲(最短为480us的低电平信号即由主机将数据线拉低并保持480us~960us),接着在tl时刻释放总线并进入接收状态(RX),DSl820在检测到总线的上升沿之后等待15~60us,接着DS1820在t2时刻发出存在脉冲(低电平,持续60~240us)如图2-12中虚线所示。
图2-12DS18B20初始化DQ状态时序图
图2-13
如图2-13为DS18B20的初始化子程序流所示为其初始化流程图
4.2.1读出温度子程序
读出温度子程序的主要功能读出RAM中的9个字节移入温度暂存器,启动温度转换。
由于温度测量只有一只DS18B20,因此我们在读出温度时并不进行CRC校验。
其程序流程图如图2-14所示。
图2-14读温度子程序
4.2.2DS18B20的写读时序
图2-15读写时隙时序图
写时序:
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
当主机总线to时刻从高拉至低电平时,就产生写时间隙,从to时刻开始15us之内应将所需写的位送到总线上。
DSl820在to后15~60us间对总线采样。
若低电平写入的位是0;若高电平写入的位是1。
连续写2位间的间隙应大于1us。
DS18B20写出子程序流程图如图4-10所示。
读时序:
主机总线t0时刻从高拉至低电平时,总线只需保持低电平1us,之后在t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后t2时刻前有效。
t2距t0为15us,也就是说,t2时刻前主机必须完成读位,并在DS18B20读出子程序流程图如图2-17所示。
图2-16DS18B20写入子程序流程图图2-17DS18B20读出子程序流程图
六、电路调试及各主要技术指标的测量
5.1测试仪器
万用表;电源(+220V);电脑;红色,绿色彩灯;冷水,热水(30—40℃)各一杯;秒表;
5.2测试检验
5.2.1测量方法
首先我们在基本大气下,测得系统所在的环境的温度,并计入下来。
接着我们把DS18B20放入热水里面,看看后级驱动电路会不会驱动风扇使温度传感器散热。
当温度传感器恢复到室温时,我们在吧温度传感器放入冷水中,看看温度传感器会不会驱动加热管使温度传感器加热。
5.2.2单片机对采集数据的转换运算
温度数据转换
DS18B20温度传感器采集到的温度是以16位二进制数字的形式送到单片机上的。
在处理中我们先通过运算将二进制转化成十进制数。
然后通过除法和求余将每一位的数字求出存在数组中按分位显示出来。
5.2.3时间误差分析
由于在单片机传输电流信号到MOC3081属于传输数字量,要考虑光耦的响应速度问题。
光电耦合器的传输特性,即传输速度,往往成为系统最大数据传输速率的决定因素。
对于光电耦合器的延迟时间通常都在10us,这里的传输的特性优良,以便系统及时感应并且做出反应。
5.3硬件整体测试
5.3.1电路问题分析
1.调试硬件电路时。
用万用表测试所有芯片的电源和地是否确实接电源和接地了,测试各个芯片是否处于正常的工作电压,并测试电路是否有短路、断路、虚焊,有无接错线,同时要特别注意过孔是否连接正确。
2.硬件电路通电时,注意用手背触摸下芯片是否发烫,防止芯片被烧坏掉。
3.调试硬件电路,烧写程序看各项功能是否正常实现,分析未实现未实现原因。
4.调试之行动作电路。
给参数采集电路一个高温或低温值看是否开启关闭空调或加热器。
5.在调试硬件电路时,注意各部分电路之间的时序配合关系。
6.在调式过程中,应分功能模块调试好了以后再整合成整体调试。
7.在调试整机电路时,在排除故障中,检测不出故障,可就对各个芯片进行独立检测。
5.3.2DS18B20的防水处理
由于传感器最后要测量的是海水温度。
因此我们用单股电线外接并用热熔胶密封DS18B20温度传感器各管脚,这样处理在一定程度上降低了传感器的灵敏度但能够保证传感器长时间置放在水当中并能够正常工作。
5.3.3参数校准
在温度采集的校准上,我们只需要一个准确的电子温度计通过该温度计和我们的模块在测量室温情况下的比较来调整软件实现准确测温。
5.3.4功能实现分析
该硬件电路在最后测试中实现了准确的温度采集、能够传给单片机发送采集到得参数,同时实现加热或制冷功能。
基本实现了设计任务,并可根据外界运用需要更换和外扩其他功能传感器。
七、结论
本着方便、实用性、易于扩展的指导思想,此次的设计采用STC89C51为中央处理器加上各种外围电路构成了整个单片机控制系统。
在设计中运用温度传感器采集温度,通过转换、处理与设定值进行比较,得到控制信号用以控制温度,实现了温度显示和控制功能。
本次设计的具体步骤如下:
1、系统整体设计,根据设计要求,选择合理可行的设计总体方案,实现系统功能。
2、元件选择,根据需求分析选择电子元器件,以达到设计的目的。
3、硬件设计,用Protel软件画好电路原理图,生成PCB板图,制作成电路板。
4、软件设计,画好程序流程图,设计主程序和子程序。
5、焊接电路板,把电子元件焊接到做好的电路板上,对电路进行检查。
6、在仿真器上对系统进行软、硬件调试,修改错误或改进缺陷,找出硬件错误。
7、对整个系统进行联合调试,使系统达到本次设计的设计要求。
整个设计从系统测试的结果来看,本设计基本上达到了系统设计的主要目标。
从功能测试来看,该系统实现了系统设计的基本要求。
使用仪器设备及元件清单
主要元器件清单见附表1所示。
元器件名称
类型
数量
温度传感器
DS18B20
1
单片机
STC89C51
1
晶闸管
97A6
2
功率电阻
33R
2
光耦
MOC3081
2
共阳数码管
2
发光二极管
普通
若干
风扇
普通
1
加热管
普通
1
电阻
普通
若干
三极管
9012
若干
电源插座
1
八、结束语
在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不高。
在论文中简单分析了单片机温度控制系统设计过程及实现方法。
本系统的测温范围为25℃~80℃,温度检测系统根据用户设定的温度范围完成一定范围的温度控制。
由于时间的原因在设计过程中不能很好的做出我们毕业设计所要达到的要求,对于以上的不足,我们只有通过以后的努力不断的提升。
在设计中我们基本实现了温度的读取和最高低报警温度的调节,在后级电路中由于个人能力有限,而不能实现后级驱动电路,在这方面我相信在以后的学习生涯中能得到解决,
最后我要感谢我的导师杨俊鸣老师,在他的帮助下我们做好了基于DS18B20温度控制系统的毕业设计,同时我也要感谢那些在我遇到难题时候给予我帮助的同学和好友,祝你们身体健康。
九、参考文献
[1]电源网.MOC3081芯片运用介绍,
[2]伟纳电子.DS18B20单线数字温度传感器,
[3]电源技术
[4]李华.MCS-51系列单片机实用接口技术[M].北京:
北京航空航天大学出版社,1993,8,203-228.
[5]新概念51单片机C语言教程:
入门、提高、开发、拓展全攻略:
北京:
电子工业出版社,2009.1
附录
附录A电路仿真图
说明:
数码管左边一二是最高报警温度,三四位是最低报警温度,五六七八位是当前温度值。
附录B:
的电路板
说明:
上图中的80是最高报警温度,25是最低报警温度,12.9是现在的标准室温。
附录C:
硬件总共原理图
附录D:
程序清单
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitds=P1^7;//温度传感器信号线
sbithi_led=P1^0;//高温报警指示灯
sbitlo_led=P1^1;//低温报警指示灯
sbitgao_fs=P1^2;//控制驱动风扇
sbitdi_jrg=P1^3;//控制驱动加热管
sbittz_key=P3^0;//进入按键设置温度按键
sbitkz_key=P3^1;//控制高低温加减设置按键
sbitjia_key=P3^2;//加温度按键
sbitjian_key=P3^3;//减温度按键
uintnum=0,num1=0;
//*********共阳数码管段选值***************/
unsignedcharcodedispcode[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0xff};//0xff灭
//温度小数点对照表
ucharcodedf_table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
ucharcurrentT=0;//当前温度的整数部分
charalarm_temp_hl[2]={80,25};//温度的控制幅度
uchartemp_value[]={0x00,0x00};//DS18B20读取的温度值低8位高8位
uchardisplay_digit[8]={0,0,0,0,0,0,0,0};//待显示的温度的每个位
bithi_a