当前位置:文档之家› 数字温度传感器 课程设计

数字温度传感器 课程设计

恒温控制系统设计

姓名:杨伟展

学号: 2005364114 专业:电气工程与自动化

学院:机电与信息工程学院指导教师:肖红军

辅导教师:肖红军

起止日期: 08.12.22~09.01.04

课程设计任务书

电气工程与自动化专业 05 年级 1 班杨伟展

一、设计题目

恒温控制系统设计

二、主要内容

设计基于DS18B20的数字式烤箱温度控制系统,控制电路主要包括,led显示电路、按键电路、温度检测电路及控制电路。控制程序主要包括主程序、读出温度子程序、按键子程序、显示子程序、PID控制子程序等。要求能检测、显示烤箱温度,并控制烤箱温度为一恒定值。

三、具体要求

1.对烤箱温度进行检测及控制。温度显示范围:0゜C~+99゜C,精度误差在1゜C以内。

2.控制系统稳态误差控制在5%以内。

3.恒温值可设置,并可随时修改。

4.LED数码管直读显示实测温度,设置温度(用键控制设定温度)。

5.温度超出上、下限值(设定值的正负50%)时,报警。

6.启/停键用以启动和停止加热,上电复位后,不论启动还是

停止状态,人机界面显示烤箱内温度值,同时也要求显示界面区分停止和运行状态。

四、进度安排

五、完成后应上交的材料

1.课程设计报告。

2.程序清单(电子版)

六、总评成绩

指导教师签名日期年月日

系主任审核日期年月日

摘要

本课程设计是设计一个恒温控制系统,本系统是控制烤箱的温度,使其稳定在设定值附近。温度测量采用芯片DSl8B20进行测量,而温度设定值可通过按键进行修改,通过PID控制算法实现对烤箱温度的闭环控制。当温度越限时(无论是低限还是高限),系统将通过发光二极管进行报警,提醒用户温度已经超出设定的范围。

关键字:恒温控制;温度检测;PID;越限

目录

1设计任务分析 (1)

2实现原理与测温芯片的介绍 (1)

2.1实现原理 (1)

2.2 DS18B20芯片 (1)

3系统的总体方案设计 (5)

4具体实现流程 (6)

4.1温度设置 (6)

4.2温度显示 (7)

4.3温度控制 (8)

5单片机系统程序的编制与调试 (9)

5.1单片机系统程序的编制 (9)

5.2单片机系统程序的调试 (9)

6测试结果分析 (10)

7总结 (10)

参考文献 (11)

附录 (12)

恒温控制系统设计

姓名:杨伟展学号:2005364114 班级:05电气工程与自动化1

1设计任务分析

本课程的主要任务是学习和掌握基本的电路调试技术,并利用所学的单片微机知识,设计出一个烤箱恒温控制系统,能够实现烤箱温度的设定和控制,并能在温度越限时实现报警等功能。把所学的知识运用到日常生活中去,加强对单片微机知识的运用和实践。

2实现原理与测温芯片的介绍

2.1实现原理

通过单片机程序的编写,将设定的温度和烤箱的温度输出到数码管显示,通过按键进行启动/停止烤箱、加减修改设定温度,而使用DS18B20芯片进行温度测定、传输,再通过控制程序输出控制脉冲实现烤箱温度的闭环控制,使温度控制在设定值附近。

电路中涉及到的主要芯片和硬件设备有:89C51芯片、74HC377芯片、74HC245芯片、74HC138芯片、DS18B20芯片、LED数码管和烤箱等。

2.2 DS18B20芯片

由美国DALLAS半导体公司生产的DSl8B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中,例如多路温度测控仪、中央空调、大型冷库、恒温装置等。

此外巧妙利用DSl8B20内部64位激光ROM中具有惟一性的48位产品序号,还可设计成专供大型宾馆客房或军事仓库使用的保密性极佳的电子

密码锁。

图2-1 DS1820/DS18B20的引脚排列

2.2.1测温电路原理

DSl8B20内部测温电路框图如图2-2 所示。低温度系数振荡器用于产生稳定的频率?0,高温度系数振荡器则相当于T/?转换器,能将被测温度t 转换成频率信号?0图中还隐含着计数门,当计数门打开时,DSl8B20就对低温度系数振荡器产生的时钟脉冲?0进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定。每次测量前,首先将-55℃所对应的基数分别置入减法计数器、温度寄存器中。在计数门关闭之前若计数器已减至零,温度寄存器中的数值就增加0.5℃。然后,计数器依斜率累加器的状态置入新的数值,再对时钟计数,然后减至零,温度寄存器值又增加0.5℃。只要计数门仍未关闭,就重复上述过程,直至温度寄存值达到被测温度值。这就是DSl8B20的测温原理。斜率累加器能对振荡器的非线性予以补偿,提高测量准确度。

图2-2内部测温电路

2.2.2技术性能描述

●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条

口线即可实现微处理器与DS18B20的双向通讯

●测温范围-55℃~+125℃,固有测温分辨率0.5℃

●支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实

现多点测温

●工作电源:3~5V/DC

●在使用中不需要任何外围元件

●测量结果以9~12位数字量方式串行传送

●不锈钢保护管直径Φ6

●适用于DN15~25,DN40~DN250各种介质工业管道和狭小空间设

备测温

●标准安装螺纹M10X1,M12X1.5,G1/2”任选

●VC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连

2.2.3应用范围

●该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆

线槽等测温和控制领域

●轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制

●汽车空调、冰箱、冷柜、以及中低温干燥箱等

●供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温

和控制

2.2.4接线说明

特点:独特的一线接口,只需要一条口线通信,多点能力,简化了分布式温度传感应用,无需外部元件,可用数据总线供电,电压范围为3.0 V 至5.5 V 无需备用电源。测量温度范围为-55 ℃至+125 ℃,华氏相当于是-67华氏度到257华氏度;-10℃至+85℃范围内精度为±0.5℃。

2.2.5操作说明

对DSl8B20的操作是首先进行初始化,然后执行ROM操作命令,再执行暂存器操作命令,最后完成数据处理。

对ROM的5种操作命令为:(1)读ROM命令;(2)符合ROM命令;(3)搜索ROM命令;(4)跳过ROM命令;(5)报警搜索命令。

存储器操作命令共6条:(1)温度转换命令;(2)读暂存存储器;(3)写暂存存储器;(4)复制暂存存储器;(5)重新调出E22RAM;(6)读电源。

3系统的总体方案设计

当电路通电后,数码管上将显示设定的温度值,这个时候可以通过按键+、-修改设置温度,按确定键结束修改。

设置完温度值后,如按启动键则启动烤箱并进行温度调节,如果温度越限则启动越限报警;如不按启动则只能实现烤箱温度显示和温度设置的功能。

总体方案设计流程图如下:

4具体实现流程

4.1温度设置

设置温度的按键有三个键,分别为+键、-键和确定键。当选择按键2时(-键),温度设定值将减去1;同理,当选择按键3时(+键),温度设定值将加上1;而按确定键结束修改。

在修改温度设定值的同时,数码管上将所设定的温度值显示出来,而只有当按确定键后才显示烤箱的温度。

温度设置的流程图如下图所示:

4.2温度显示

把温度测出来并送到数码管显示出来

其中从芯片DS18B20中读出温度需要

一个很复杂的过程。

(1)对芯片进行初始化(即复位),

这需要至少480μs;

(2)向芯片写入命令CCH,跳过

ROM匹配,这需要至少480μs的时间;

(3)向芯片发出温度转换命令,

这需要至少480μs的时间;

(4)再复位芯片;

(5)再次跳过ROM匹配;

(6)发出读温度命令;

(7)读温度;

(8)将温度转换成数字输出;

(9)将温度输出到数码管显示。

如图4-3所示,温度控制程序先获得占空比,再根据程序执行次数计算是否到达占空比值和是否到254次,如果到占空比值则P1.5口输出高电平,否则输出低电平;如果到254次则执行占空比计算程序,否则返回主程序。

占空比计算程序先是获得设定和测定的温度值,再根据这两数值计算它们之间的误差,再判断误差为正或为负,如为负则将占空比设为0,如为正则把误差与比例系数相乘再判断误差比254大还是小的,如比254大则将占空比设为254,否则将占空比设为误差与比例系数的积。

5单片机系统程序的编制与调试

5.1单片机系统程序的编制

根据上面所写的系统总体方案设计与具体实现步骤的设计出的程序如附录所示。

5.2单片机系统程序的调试

调试程序是一个漫长的过程,在得出以上正确程序前需要进行一个长时间的调试。在一步步调试的过程中出现了不少的困难和错误,但最后还是给逐一解决了。

编译程序时常出现的错误有:地址未定义、操作码错等,这些都比较容易更正,只要将地址定义和更正操作码即可。但有错误少见,在此下了一番功夫才搞定,错误是:跳转出范围。原因是要跳转的程序太长,超出了跳转的范围。解决方法是在程序中插入子程序,将程序的一部分用子程序代替。

把所编的程序装载到单片机电路板上(不可以将程序一次全写了才装载进单片机,要一边调试一边增加),同时遇到不少的难题,有时候数码管显示不了、按键没反应、发光二极管不亮等等。其中也遇到过一种特殊的情况,

就是有的程序装载进单片机后断电再上电后可复位,但是有些程序不可以自动复位,连数码管也显示不了。想了很久也不知道是什么原因,在一次无意中将工作寄存器设为3,并将其放进堆栈中问题就解决了。想其原因,可能就是初始化时没分工作寄存器,在PSW压入堆栈时把Ri、Rj弄乱了吧。

6测试结果分析

测试:将所写的程序装载到单片机实验板上,通过按键、观看数码管上显示的数据和二极管指示灯进行测试。

结果:能够通过按键修改设置温度和启动或停止烤箱的运行;能够通过芯片DS18B20测量烤箱的温度,温度显示范围:0゜C~+99゜C,精度误差在1゜C以内;可以实现烤箱温度越限报警功能(温度不能超出设定值的正负50%);能够通过发光二极管区分启动和停止状态。

分析:基本上实现设计任务的要求,但由于程序中没有使用定时器,故在周期时间上没有准确的数据。

7总结

通过这次单片微机课程的设计,我学到了很多的知识:使我对电路板的调试技术得到了很大的了解和提高,同时使我对单机的编程更为熟练,对PID控制的理解更为深入,而且熟练掌握在伟福和KEILC开发平台上调试程序。

这次单片机原理与应用的课程设计,无疑是一个很好的实践机会,将课程上所学到的知识重温一次,并且运用到实际的程序设计中去,使我们学到了很多知识。

参考文献:

[1] 丁元杰《单片机原理及应用》第3版机械工业出版社 2005

[2]于海生《微型计算机控制技术》清华大学出版社2008

附录:

程序如下:

LED4 EQU 33H

LED5 EQU 34H

LED6 EQU 35H

DONE BIT 09H ;确定标志位

MOVE BIT 0AH ;启动标志位

ZT EQU 0BH ;暂态

TS3 EQU 36H ;按键间隔

TMX EQU 38H ;占空比

KP EQU 39H ;比例系数

DQ BIT P1.0

ORG 0000H

LJMP START

ORG 0030H

START:ACALL INIT

RKEY_1:ACALL DISP ;温度设定ACALL RKEY1

JNB DONE,RKEY_1

RKEY_2:ACALL DISP

ACALL RKEY2 ;读键

JNB MOVE,STOP ;运行?

CLR P1.3

ACALL TEMPER ;读温度

ACALL BJ ;报警

ACALL PID_2 ;控制

LJMP DISP_0

STOP:SETB P1.3

SETB P1.5

ACALL TEMPER

ACALL BJ

DISP_0:;ACALL DISP

LJMP RKEY_2

;---------------------------------------初始化

INIT:MOV R5,#0

MOV 3CH,#0

MOV 3DH,#254

MOV R0,#60H

MOV 60H,#33

MOV TS3,#3

MOV KP,#20

CLR DONE

CLR MOVE

RET

;---------------------------------------显示

DISP:MOV B,#10 ;二-十进制转换MOV A,@R0

JNB DONE,AA

MOV A,@R1

AA:DIV AB

MOV LED4,A

MOV LED5,B

MOV LED6,#0

MOV DPTR,#DPTAB ;显示数码管4

MOV A,LED4

MOVC A,@A+DPTR

MOV DPTR,#0E000H

MOVX @DPTR,A

MOV DPTR,#0C000h

MOV A,#11110111B

MOVX @DPTR,A

CALL DT1

MOV DPTR,#DPTAB ;显示数码管5

MOV A,LED5

MOVC A,@A+DPTR

ORL A,#10000000B

MOV DPTR,#0E000H

MOVX @DPTR,A

MOV DPTR,#0C000h

MOV A,#11101111B

MOVX @DPTR,A

CALL DT1

MOV DPTR,#DPTAB ;显示数码管6

MOV A,LED6

MOVC A,@A+DPTR

MOV DPTR,#0E000H

MOVX @DPTR,A

MOV DPTR,#0C000H

MOV A,#11011111B

MOVX @DPTR,A

CALL DT1

MOV DPTR,#0C000H ;控制点亮地址

MOV A,#11111111B ;输出数关闭所有显示

MOVX @DPTR,A

RET

;---------------------------------------按键1

RKEY1:MOV DPTR,#0C000H ;读键

MOV A,#11111110B

MOVX @DPTR,A

MOV DPTR,#0A000H

MOVX A,@DPTR

ANL A,#00001111B

DJNZ TS3,R_3

INC TS3

CJNE A,#0DH,R_1 ;二键?

MOV TS3,#10

DEC @R0

CLR DONE

CALL DT2

CJNE @R0,#0,R_3

INC @R0

R_1:CJNE A,#0BH,R_2 ;三键?

MOV TS3,#10

INC @R0

CLR DONE

CALL DT2

CJNE @R0,#67,R_3

DEC @R0

R_2:CJNE A,#07H,R_3 ;四键?

MOV TS3,#3

SETB DONE

CLR ZT

CALL DT2

R_3:RET

;---------------------------------------按键2

RKEY2:MOV DPTR,#0C000H ;读键MOV A,#11111110B

MOVX @DPTR,A

MOV DPTR,#0A000H

MOVX A,@DPTR

ANL A,#00001111B

DJNZ TS3,R_04

INC TS3

CJNE A,#0EH,R_01 ;一键?

MOV TS3,#3

CPL MOVE

CALL DT2

R_01:CJNE A,#0DH,R_02 ;二键?

MOV TS3,#3

CLR DONE

JB ZT,R_011

SETB ZT

CALL DT2

LJMP R_04

相关主题
文本预览
相关文档 最新文档