基于DS18B20的温度控制系统设计1.docx

上传人:b****3 文档编号:26863687 上传时间:2023-06-23 格式:DOCX 页数:31 大小:194.59KB
下载 相关 举报
基于DS18B20的温度控制系统设计1.docx_第1页
第1页 / 共31页
基于DS18B20的温度控制系统设计1.docx_第2页
第2页 / 共31页
基于DS18B20的温度控制系统设计1.docx_第3页
第3页 / 共31页
基于DS18B20的温度控制系统设计1.docx_第4页
第4页 / 共31页
基于DS18B20的温度控制系统设计1.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

基于DS18B20的温度控制系统设计1.docx

《基于DS18B20的温度控制系统设计1.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的温度控制系统设计1.docx(31页珍藏版)》请在冰豆网上搜索。

基于DS18B20的温度控制系统设计1.docx

基于DS18B20的温度控制系统设计1

课程考核

答题册

课程名称自动检测与转换技术课程性质

院(部)物电学院专业电子声像

学号8姓名赵培琳

年级2010级班一班层次本科

学年2012--2013学期2

成绩评定表

序号

评语

得分

总成绩评卷人

基于DS18B20的数字温度计的设计

摘要

本设计以AT89C51单片机为核心的温度控制系统的工作原理和设计方法。

温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机,再由单片机将信号通过数码管显示出来,并有报警提示功能。

报告中介绍了该控制系统的硬件部分,包括:

温度检测模块、温度控制模块、显示模块和报警模块。

单片机通过对信号进行相应处理,从而实现温度控制的目的。

报告中还重点介绍了软件设计部分,在这里采用模块化结构,主要模块有:

数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序。

关键词:

AT89C51单片机DS18B20温度芯片温度控制串口通讯

 

摘要

 

基于DS18B20的数字温度计的设计

1绪论

1.1课题研究的背景和意义

温度是工业生产过程中最普遍、最重要日常检测参数之一。

任何物理变化和化学变化的过程都与温度密切相关。

温度检测和控制都直接与安全生产、节约能源等技术经济指标相联系。

温度测量在工业、民用、军事等领域占着重要的地位,航空、家电、科研等领域都需要温度测试设备,用于测试和确定电工、电子及其它产品及材料进行高温、低温、交变温度或恒定试验的温度环境的变化,判断当检测目标的温度值达到警示条件时发出警告信号。

常用的控制电路根据应用场合和所要求的性能指标有所不同,在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。

这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。

传统的继电器调温电路简单实用,但由于继电器动作频繁,可能会因触点不良而影响正常工作。

控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。

而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。

数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有拓展性。

由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。

更能串接多个数字温度传感器DS18B20进行范围的温度检测。

1.2本设计的主要要求

(1)测量温度范围:

-50℃~150℃;

(2)精度:

±0.5℃;

(3)线性度:

±0.3℃;

(4)超限报警功能;

(5)具有温度和时间显示功能;

(6)工作电压:

总线供电。

 

2系统总体设计方案

2.1系统方案选择

方案一:

采用纯硬件的闭环控制系统。

方案二:

测温电路的设计,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。

方案三:

考虑使用数字温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。

方案比较:

方案一优点在于速度较快,但可靠性比较差控制精度比较低、灵活性小、线路复杂、调试、安装都不方便,且要实现题目所有的要求难度较大。

方案二采用模拟温度传感器,数据处理麻烦,且容易产生信号失真。

方案三可以只用一根线实现信号的双向传输,具有接口简单容易扩展等优点。

DS18B20可以直接温度转换为串行数字信号,供单片机进行处理,具有低功耗、商性能、抗干扰能力强等优点。

比较以上三种方案,很容易看出,采用方案三,电路比较简单,软件设计容易实现,故实际设计中拟采用方案三。

2.2整体电路设计

温度传感器DS18B20从设备环境中采集温度,单片机获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度值,通过加热和冷却对当前温度进行调整。

采集到的温度数据传输到单片机,由单片机处理后的数据送显示部分显示,当采集的温度经处理后低于设定温度的下限或高于设定温度的上限时,单片机控制报警电路相应的发光二极管发光显示。

本次设计的整体电路图见附录。

 

图2.1温度计电路总体设计框图

 

3硬件系统方案设计

3.1DS18B20温度传感器

DS18B20是DALLAS公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚T0-92小体积封装形式,温度测量-55~+125℃,可编程为9~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可以采用寄生电源方式产生,多个DS18B20可以并联到三根

或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可省大量的引线和逻辑电路。

从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。

综上,在本系统中采用温度芯片DS18B20测量温度。

该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。

在0-100摄氏度时,最大线形偏差小于l摄氏度,该芯片直接向单片机传输数字信号,便于单片机处理及控制。

 

图3.1温度芯片DS18B20图3.2DS18B20引脚图

 

3.2DS18B20供电方式

在硬件上,DS18B20与单片机的连接有两种方法,一种是用寄生电源供电,此时VCC、GND接地,I/O接单片机I/O如图3.3所示;另一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连如图3.4所示。

无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。

图3.3寄生电源方式图3.4外接电源方式

本设计中,采用第二种方法,这样简化硬件电路设计,降低了整个系统的复杂度。

3.3DS18B20测温原理

当DS18B20接收到温度转换命令后,开始启动转换。

转换完成后的温度就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。

单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃形式表示。

温度值格式如图3.5所示。

 

图3.5温度值格式

3.4复位电路模块

复位电路有上电自动复位和按键手动复位两种方式。

上电自动复位是通过外部复位电路的电容充电来实现的,只要电源VCC的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。

按键手动复位有电平方式和脉冲方式两种。

其中,按键电平复位是通过使复位端经电阻与VCC电源接通而实现的,而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的。

本系统的复位电路采用上电复位方式。

复位电路图如图3.6所示:

 

图3.6复位电路

3.5显示电路模块

本电路主要使用八段数码管HD7279和移位寄存器芯片。

单片机通过数据总线将要显示的数据信号传送到移位寄存器芯片,再由移位寄存器控制数码管的显示,从而实现移位寄存点亮数码管显示。

由于单片机的时钟频率较高,移位寄存器的移位速度相当快,所以我们根本看不到数据是一位一位传输的。

从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。

 

图3.7显示电路

3.6按键电路模块

利用单片机的IO口实现按键的中断输入。

另外需要一个与门实现与中断端口的连接。

按键电路如图3.8所示。

 

图3.8按键电路

 

4软件设计

系统软件设计主要包括系统程序和控制流程图,根据整个系统要求的温度测量与控制写出系统的控制流程图,然后进行编程。

键盘中断服务子程序:

温度显示模块流程图:

 

时间显示模块流程图:

5系统调试

焊接完成之后,首先认真的按照电路图检查焊接的情况,发现两个管脚焊错了,然后因为这些管脚都是P2脚,没有太大影响,所以修改电路图。

然后检查电源和接地,发现没有短路,可以上电了,上电之后,检查器件没有发热现象。

显示调试:

1)编写一段简短的测试程序,上电后,下载测试HD7279的程序,发现无法正常显示,进行如下调试:

2)初步认定是单片机最小系统的焊接出现问题。

断电,然后认真的用万用表测试震荡电路、复位电路、电源和接地的导通情况,电阻和电容的情况发现没有问题。

3)检查HD7279和数码管的焊接情况,断电,测试P2.5,P2.4,P2.3和CS,DAT,SLK的

连接情况,没有问题;测试A,B,C,D,E,F,G,H,DP管脚和数码管的连接情况,发现电阻无穷大,是断开的,然后焊上;断电,测试HD7279的电源和接地情况,发现没问题检查各种跳线的塑料外包装,发现有些外皮被烫坏,有破损;跳线的裸露接头过长,容易短路;断电,测试时,电源和DIG0短路,发现因为导线外皮破损,换导线。

4)再次上电,用测试程序测试,仍然无法显示。

5)重新检查电路图,发现电路图设计有问题,EA接了低电平,改为高电平。

然后修改电

路图。

6)再次上电,重新测试,仍然无法显示。

7)测试HD7279管脚电压,正常,然后更换芯片,再次测试能显示了。

温度显示调试:

下载温度显示程序,发现无法正常显示温度。

调试过程如下:

1)上电,检查DS18B20的管脚电平,不正常。

2)断电,检查DS18020的管脚连通情况。

3)发现DS18B20插反了,所以有可能烧坏,更换器件。

4)上电,正确显示温度。

 

然后进行如下调试:

主程序的功能是:

启动DS18B20测量温度,将测量值与所设定的温度上下限值进行比较,若测得温度小于设定下限值,则进入报警子程序,这期间报警不问断的响起,直到温度在设定范围内,才终止报警程序,若测得温度大于所设定的温度上限值,亦进入报警子程序,此时报警不间断的响起,直到所测的温度在设定的安全范围内。

显示时间调试:

下载显示时间程序,能正确显示分秒。

键盘调试,因为本实验的键盘功能设定简单,没有复杂的过程

按键调试时,刚开始由于没有设置按键松手检测程序,按键一直失灵,后将按键松子检测程序(while(P2=OXxx))后,按键运转正常。

串口调试时,刚开始是发送一个数据便显示一个数据,打开一次中断,这样导致数据更换太慢,没发同时显示几个数据,后将所有要显示的数据一个一个储存起来后再打开中断,一起送出去,这样问题解决了,发送和接收都没有错误了。

6分析

对于实际室内的温度控制,可以提出以下方法:

检验所做温度测量是否准确,可以用电吹风机作为加热设备,降温设备可采用空气压缩机等制冷设备,并将所采集到的温度与实际标准的温度计进行比较。

通过实验测试和分析,发现虽然传感器的温度采集精度最高可得到0.06℃,但测试得到的数据最小间隔为0.03℃。

通过分析,当对浮点数求平均处理时,遇到同一时刻两个传感头采集的温度相差不大,使0.06℃时求出下均温度变为0.03℃为了解该数据是否真实,可采用一个高精度的数字温度计测试,如果读出的值与其基本一致,则可推断如果在同一时间增加采集温度的个数,可以进一步提高温度的精度。

7结论

温度检测和控制都直接与安全生产、节约能源等技术经济指标相联系。

温度测量在工业、民用、军事等领域占着重要的地位。

航空、家电、科研等领域都需要温度测试设备,用于测试和确定电工、电子及其它产品及材料进行高温、低温、交变温度或恒定试验的温度环境的变化,判断当检测目标的温度值达到警示条件时发出警告信号。

在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不高。

在本设计中简单分析了单片机温度控制系统设计过程及实现方法。

本系统的测温范围为-50℃~150℃,温度检测系统根据用户设定的温度范围完成一定范围的温度控制。

本设计使用的温度控制器结构简单、测温准确,具有一定的实际应用价值。

该智能温度控制器只是DS18B20在温度控制领域的一个简单实例,还有许多需要完善的地方。

此外,还能广泛地应用于其他一些工业生产领域,如建筑,仓储等行业。

本温度控制系统可以应用于多种场合。

用户可灵活选择本设计的用途,有很强的实用价值。

参考文献:

【1】《传感器原理及工程应用》郁有文,西安电子科技大学出版社,2008.7

【2】《MCS-51系列单片机原理与应用》赵伟,东北林业大学出版社,2007.1

【3】《模拟电子技术基础》童诗白,高等教育出版社,2001.1

附录A

附录

B

程序代码:

BIT_COUNTDATA07FH

TIMERDATA07EH

TENDATA07CH

TIMER1DATA07DH

DATA_INDATA020H

DATA_OUTDATA021H

KEY_18B20BIT23H

KEY_1302BIT22H

;*******************************************************

DATBITP2.5

;KEYBITP2.6

CSBITP2.3

CLKBITP2.4

 

;**********************************

FLAG1BITF0;DS18B20存在标志位

DQBITp2.0

TEMPER_LEQU29H

;TEMPER_HEQU28H

;A_BITEQU35H

;B_BITEQU36H

 

;*************************************************************

KEY1BITP1.4;键盘和显示定义CH451

KEY2BITP1.5

KEY3BITP1.6

KEY4BITP1.7

MYDATDATA33H

DATA_FDATA34H

DATA_KEYDATA35H

;TIMERDATA30H

;TIMER1DATA31H

TIMER2DATA32H

TIMER3DATA33H

;*************************************************************

;**********************************************************

SCLKBITP1.0;;系统时钟芯片ds1302

IODATABITP1.1;

RSTBITP1.2;

FLAGBIT02H;读写标志位

 

ORG000H

JMPSTART

ORG13H

LJMPCH451_INT1

ORG100H

START:

MOVSP,#6FH

MOVP2,#B

;MOVTIMER,#50

MOVTIMER,#5

START_DELAY:

;MOVTIMER1,#255

MOVTIMER1,#25

START_DELAY1:

DJNZTIMER1,START_DELAY1

DJNZTIMER,START_DELAY

MOVDATA_OUT,#B;复位,下降沿,CS低电平有效

CALLSEND

SETBCS

ACALLDELAY_1S

CLRIT1;置外部中断信号为低电平触发

SETBEX1;允许键盘中断

SETBEA;开总中断

;*****************************************************************;CS无效

MAIN:

MOV20H,#0

MOVDATA_KEY,#0

;MOVDATA_OUT,#B

;CALLSEND

MOVA,28H

MOVB,29H

MOVTEN,A

MOVDATA_OUT,#B

CALLSEND

MOVDATA_OUT,#B

CALLSEND

 

MOVDATA_OUT,#B;下载,译码指令

CALLSEND

MOVDATA_OUT,TEN;十位数字

CALLSEND

MOVDATA_OUT,#B;下载和译码

CALLSEND

MOVDATA_OUT,B;发个位

CALLSEND

SETBCS

;***********键盘判断*****************************

WAIT:

JNB00H,WAIT

CLR00H

MOVA,DATA_KEY

UKEY1:

JNBKEY_18B20,UKEY2

CALLRECEIVE

;MOVDATA_IN,#15

SETBCS

;MOVB,#10

;MOVA,DATA_IN

;DIVAB

JMPMAIN

UKEY2:

CJNEA,#2,UKEY3

CALLDS1302_Measurement

AJMPMAIN

UKEY3:

AJMPMAIN

;*****************************************************************************

SEND:

MOVBIT_COUNT,#8

CLRCS

CALLLONG_DELAY

SEND_LOOP:

MOV21H,#26H

MOVC,DATA_OUT.7;1

MOVDAT,C

SETBCLK;CLK

MOVA,DATA_OUT;

RLA

MOVDATA_OUT,A

CALLSHORT_DELAY;

CLRCLK;CLK

CALLSHORT_DELAY;

DJNZBIT_COUNT,SEND_LOOP;8

CLRDAT;

RET

 

;*******************************************

;7279接受数据

;*******************************************

RECEIVE:

MOVBIT_COUNT,#8

LCALLINIT_18B20

 

LCALLGET_TEMPER

;**********DS18B20复位程序*****************

INIT_18B20:

SETBDQ

NOP

CLRDQ

MOVR0,#0FBH

TSR1:

DJNZR0,TSR1;延时

SETBDQ

MOVR0,#25H

TSR2:

JNBDQ,TSR3

DJNZR0,TSR2

TSR3:

SETBFLAG1;置标志位,表明DS18B20存在

;CLRP2.0;二极管指示

AJMPTSR5

TSR4:

CLRFLAG1

LJMPTSR7

TSR5:

MOVR0,#06BH

TSR6:

DJNZR0,TSR6

TSR7:

SETBDQ;表明不存在

RET

;*****************读转换后的温度值****************

GET_TEMPER:

SETBDQ

LCALLINIT_18B20

JBFLAG1,TSS2

RET;若不存在则返回

TSS2:

MOVA,#0CCH;跳过ROM

LCALLWRITE_18B20

MOVA,#44H;发出温度转换命令

LCALLWRITE_18B20

;LCALLDISPLAY;延时

;LCALLINIT_18B20

MOVA,#0CCH;跳过ROM

LCALLWRITE_18B20

MOVA,#0BEH;发出读温度换命令

LCALLWRITE_18B20

LCALLREAD2_18B20;读两个字节的温度

RET

;***************写ds18b20汇编程序************

WRITE_18B20:

MOVR2,#8

CLRC

WR1:

CLRDQ

MOVR3,#6

DJNZR3,$

RRCA

MOVDQ,C

MOVR3,#23

DJNZR3,$

SETBDQ

NOP

DJNZR2,WR1

SETBDQ

RET

 

;***********读18B20程序,读出两个字节的温度*********

READ2_18B20:

MOVR4,#2;低位存在29H,高位存在28H

MOVR1,#29H

RE00:

MOVR2,#8

RE01:

CLRC

SETBC

NOP

NOP

CLRDQ

NOP

NOP

NOP

SETBDQ

MOVR3,#7

DJNZR3,$

MOVC,DQ

MOVR3,#23

DJNZR3,$

RRCA

DJNZR2,RE01

MOV@R1,A

DECR1

DJNZR4,RE00

RET

;************读出的温度进行数据转换**************

;CHANGE:

MOVA,29H

;;MOVC,28H.0;将28H中的最低位移入C

;RRCA

;MOVC,28H.1

;RRCA

;;MOVC,28H.2

;RRC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1