水温控制器.docx
《水温控制器.docx》由会员分享,可在线阅读,更多相关《水温控制器.docx(30页珍藏版)》请在冰豆网上搜索。
水温控制器
上饶职业技术学院
电子工程系
课程设计
课程名称:
电子技术应用模块
题目名称:
水温控制器
年级:
06级学生专业:
应用电子技术
学生学号:
ZD0601004054指导教师:
吴国辉
学生姓名:
技术职称:
高级工程师
2008年5月30日
课程设计任务书
1课程名称电子技术应用模块
2课程性质必选专业课
3适用年级06级
4适用专业应用电子技术
5设计题目水温控制器
6实验要求选开
7选题要求最多组数2组每组最多人数2人
8指导老师吴国辉职称高级工程师
9设计目的
9.1进一步掌握模拟电子技术,数字电子技术等课程的知识在本课程设计中的应用
9.2熟悉电路的设计过程及设计方法
9.3掌握课程设计的基本过程和课程设计报告的撰写方法
10设计要求
10.1设计一个水温控制器
10.2温度设定范围为40℃到90℃。
最小区分度为1℃
10.3环境温度降低时,温度控制的静态误差不超过1℃
11课程设计的进度安排
11.12008年5月9日到17日,完成初稿
11.22008年5月18日到30日,上交课程设计报告及实验样品
12参考书目
12.1黄永定主编电子线路实验与课程设计北京机械工业出版社2005.8
12.2谢自美电子线路设计、实验、测试武汉华中科技大学出版社
12.3高吉祥全国大学生电子设计竞赛培训系列教程北京电子工业出版社2000年
13任务书下达时间2008年4月28日
课程设计评分标准(选开实验)
姓名:
年级:
06级专业:
应用电子技术班级:
06电子
(1)班总分:
考核项目
平时成绩
设计报告
总成绩
考核内容
态度、纪律(20%)
设计报告书写和水平(80%)
考核环节
团结协作有钻研精神
爱护公物文明卫生
遵守纪律和制度
摘要符合要求、语句通顺、内容充实、图表和曲线清晰符合规范、文字规范。
方案选择、论证、设计、计算正确。
分值
6
6
8
80
100
评分
评分教师:
评分时间:
年月日
课程设计评分标准(选开实验)
姓名:
年级:
06级专业:
应用电子技术班级:
06电子
(1)班总分:
考核项目
平时成绩
设计报告
总成绩
考核内容
态度、纪律(20%)
设计报告书写和水平(80%)
考核环节
团结协作有钻研精神
爱护公物文明卫生
遵守纪律和制度
摘要符合要求、语句通顺、内容充实、图表和曲线清晰符合规范、文字规范。
方案选择、论证、设计、计算正确。
分值
6
6
8
80
100
评分
评分教师:
评分时间:
年月日
课程设计报告
年级06级专业应用电子技术班级1班姓名温美军王乐
指导老师吴国辉职称高级工程师
课程名称电子技术应用模块
课程性质必选专业课
设计项目水温控制器系统
实验要求选开
1设计目的
1.1进一步掌握模拟电子技术、数字电子技术等课程的知识在本课程设计中的应用
1.2熟悉电路的设计过程及设计方法
1.3掌握课程设计的基本过程和课程设计报告的撰写方法
2设计要求
2.1设计一个水温控制器
2.2温度设定范围为40℃到90℃。
最小区分度为1℃
2.3环境温度降低时,温度控制的静态误差不超过1℃
3课程设计的进度安排
3.12008年五月9号到17号,完成初稿
3.22008五月18号到30号,上交课程设计报告及实验样品
水温控制系统
摘要本系统以AT89C51,AT89C2051单片机为核心,主要包括传感器温度采集,A/D模/数转换,按扭操作,单片机控制,数码管数字显示等部分。
本系统采用PID算法实现温度控制功能,通过串行通信完成两片单片机信息的交互而实现温度设定、控制和显示。
本设计还可以通过串口与上位机(电脑)连接,实现电脑控制。
系统设计有体积小、交互性强等优点。
为了实现高精度的水温控制,本单片机系统采用PID算法控制和PWM脉宽调制相结合的技术,通过控制双向可控硅改变电炉和电源的接通、断开,从而改变水温加热时间的方法来实现对水温的控制。
本系统由键盘显示和温度控制两个模块组成,通过模块间的通信完成温度设定、实温显示、水温升降等功能。
具有电路结构简单、程序简短、系统可靠性高、操作简便等特点。
关键词度传感器,温度校准,温度控制
1引言随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到电力、冶金、化工、建材、机械、食品、石油等各个行业。
传统的温度采集方法不仅费时费力,而且精度差,单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。
本系统采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,大大简化了电路的复杂度,以及算法的要求。
在一些温控系统电路中,广泛采用的是通过热电偶、热电阻或PN结测温电路经过相应的信号调理电路,转换成A/D转换器能接收的模拟量,再经过采样/保持电路进行A/D转换,最终送入单片机及其相应的外围电路,完成监控。
但是由于传统的信号调理电路实现复杂、易受干扰、不易控制且精度不高。
本文介绍单片机结合DS18B20水温控制系统设计,因此,本系统用一种新型的可编程温度传感器(DS18B20),不需复杂的信号调理电路和A/D转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要用于各种场合.
2DS18B20温度传感器实验
2.1工作原理
DS18B20是DAllAS公司生产的一线式数字温度传感器。
它将地址线、数据线和控制线合为一根双向串行传输数据的信号线,允许在这根信号线上挂接多个DS18B20;因此,单片机只需通过一根I/O线就可以多个DS18B20通信。
每个芯片内外还有一个64位的ROM,其中存有各个器件自身的序列号,作为器件独有的ID号码。
DS18B20简化了测量器件与计算机的接口电路,使得电路简单,使用更加方便。
DS18B20的特性:
●测温范围:
-55℃~+125℃
●转换精度:
9~12位二进制数(包括一位符号),可编程确定转换精度的位数。
●测温分辨率:
9位精度为:
0.5℃,12位精度为0.0625。
●转换时间:
9位精度为93.75ms,10位精度为187.5ms,12位精度为750ms。
●具有非易失性上、下限报警设定的功能。
DS18B20的硬件电路图如图2-1。
DS18B20的温度值是以补码的形式表示的,在处理数据的时候要特别注意。
下面列出了用12位精度测出的数字量,用十六位补码的形式表示。
18B20引脚示
表2-1温度值与DS18B20输出的二进制值对照表
温度值/℃
数字输出(二进制)
数字输出(十六进制)
+85
0000010101010000
图2-1DS意图
055OH
+25.0626
0000000110010001
0191H
+10.125
0000000010100010
00A2H
+0.5
0000000000001000
0008H
0
0000000000000000
0000H
+0.5
1111111111111000
FFF8H
-10.125
1111111101011110
FF5EH
-25.0626
1111111001101111
FE6FH
-55
1111110010010000
FC90H
DS18B20有严格的读写时序,读写数据都应按照此时序进行,否则读出的温度数值将产生错误。
使用DS18B20时,主机应先向DS18B20送出复位信号,主机将数据线拉低并保持480~960µS;然后再释放数据线,由上拉电阻拉高15~60µS;然后再由DS18B20发出低电平60~240µS,就完成了复位操作。
在主机对DS18B20写数据时,应先将数据线拉低1µS以上,再写入数据(写1为高,写0为低)。
待主机写入的数据变化15~60µS后,DS18B20将对数据线采样。
要求主机写入数据到DS18B20的保持时间为60~120µS。
2次写数据操作的间隙应大于1µS。
读数据之前,主机应先将数据线拉低,再释放。
DS18B20在数据线从高电平跳低后15µS内将数据送到数据线上。
主机在15µS后读取数据线。
如要了解有关DS18B20更多的知识,请查阅相关资料,此处不再叙述。
2.2、电路原理图
图2-2DS18B20温度传感器实验
2.3、元器件清单
类别
型号
数量
单位
说明
集成电路
AT89C51
1
片
DS18B20
1
片
74LS245
1
片
双向驱动器
数码管
5位
5
位
3温度校准实验
3.1、工作原理
对于精度要求不高的测量,DS18B20完全能够满足要求。
但是对于精度要求较高的场合,由于DS18B20内部采用了模数转换器,并且其本身具有分散性,则经常通过校准程序来弥补偏差,运用校准程序的前提时要有比DS18B20更为精确的测温仪器,这里为了说明问题,我们使用点温计代替。
例如:
实际温度(DS18B20)℃
理想温度(点温计)℃
偏差值℃
5
5.2
+0.2
10
10.6
+0.6
20
20.9
+0.9
40
39.2
-0.8
60
61.3
+1.3
80
81.9
+1.9
90
92.2
+2.2
图3-1实际温度—偏差温度曲线
通过曲线,可以看出温度的偏差基本呈上升趋势,初步分三个阶段进行补偿,0℃~19.99℃,补偿值为+0.5℃;20℃~69.99℃,补偿值为+1.1℃;70℃~99.99℃,补偿值为+2.0℃。
如要整个温度范围内更为精确的显示,可以将温度的范围划分为更多的段,进行更加细致的补偿。
程序方面只需要在温读转换子程序后插入一温度补偿子程序即可,然后再分别测量以上温度值,与理想温度值比较,写出相对误差。
3.2、参考程序
;....;表示省略
;....
JIAO_ZEQU7EH;校准数据的整数部分
JIAO_XEQU7DH;校准数据的小数部分
J1_ZEQU00H;第1段校准数据的整数部分
J1_XEQU80H;第1段校准数据的小数部分
J2_ZEQU01H;第2段校准数据的整数部分
J2_XEQU02H;第2段校准数据的小数部分
J3_ZEQU02H;第3段校准数据的整数部分
J3_XEQU00H;第3段校准数据的小数部分
;....;表示省略
;...
MAIN_LOOP:
LCALLGET_TEMPER;读取温度值
LCALLDATA_CHANGE;调用数据转换子程序
LCALLJIAOZHENG;注意将校准子程序插入到此处
LCALLDATA_CHULI;调用数据处理子程序
LCALLDISPLAY
SJMPMAIN_LOOP
;....;表示省略
JIAOZHENG:
;校准子程序
MOVA,28H
CJNEA,#20,JZ1
JZ1:
JCJZ4
CJNEA,#70,JZ2
JZ2:
JCJZ3
MOVJIAO_Z,#J3_Z;70℃~99.99℃,补偿值为+2.0℃
MOVJIAO_X,#J3_X
AJMPJZ5
JZ3:
MOVJIAO_Z,#J2_Z;20℃~69.99℃,补偿值为+1.1℃
MOVJIAO_X,#J2_X
AJMPJZ5
JZ4:
MOVJIAO_Z,#J1_Z;0℃~19.99℃,补偿值为+0.5℃
MOVJIAO_X,#J1_X
JZ5:
MOVA,27H
ADDA,#80H
MOV27H,A
MOVA,28H
ADDCA,#01H
MOV28H,A
RET
;....;表示省略
;....
说明:
加省略号的地方表示还有程序,与DS18B20传感器实验的程序有联系
4温度控制过程实验
4.1、工作原理
用800W热得快代替加热装置,对一杯水进行加热;
4.1.1、通过改变滑动变阻器,来调节热得快的功率;
4.1.2、绘制出水温在不同功率加热情况下的温度随时间的上升曲线;
4.1.3、绘制出水温在自然环境下温度随时间的下降曲线;
4.1.4、根据绘制的曲线,在设定的温度基础上,选择出合适的功率来加热,以便得到最理想的动态平衡。
4.2、工作原理
要改变加热装置的功率,通过改变加在其两端的电压值实现,考虑到安全问题,这里使用固态继电器通过改变其通断时间来调节加热装置功率的大小,电路图如图3-4。
图中控制部分是由555电路构成的占空比可调方波发生器,总时间为T=0.39S,约等于市交流电的40倍。
通过调节滑动变阻器来改变方波的占空比,
从而改变通过加热加热装置的平均电压获得不同的功率。
如:
占空比为1:
2,则加热装置获得的平均电压约等于110V,则加热装置的功率变为原来的1:
4。
4.3、电路原理图
图4-3功率可调水温加热电路图
4.4、元器件清单
类别
型号
数量
单位
说明
集成电路
555
1
片
固态继电器
1
只
电阻
10K
2
只
滑动变阻器
100K
1
只
二极管
1N4148
2
只
电容
4.7µ
1
只
0.01µ
1
只
5水温控制系统的总体调试
5.1、工作原理
工作原理如下框图。
其中恒温部分为动态控制过程。
如人工设定温度80.5℃,如果当前温度小于人工设定的温度,如当前温度位25℃,则启动加热装置;当两者温度差小于0.00℃~0.99℃(此值可根据加热装置的功率来设定),则切断加热装置,利用余热继续加热,经过一段时间后,加热装置余热耗尽,水温开始下降,当下降到两者温差小于1.00℃~1.99℃再次接通加热装置,直至温差小于0.00℃~0.99℃的时候再次切断,周而复始,最终达到动态平衡。
5.2、总电路原理图
图4-5水温控制系统总电路原理图
说明:
整个电路分为六大部分,DS18B20温度检测,51单片机数据处理及输出控制信号,独立式按键人工设定温度,功率调节电路、报警电路。
搭接或制作的时候可以先将每一部分硬件电路调试好,然后进行整体连接调试。
6、水温控制系统总程序
;堆栈区为30H~40H
;显示缓冲区为4AH~4EH
;读取后的温度值高4位存放在28H中,低8位在29H
;转换后的数据整数部分在28H中,小数部分在27H
;DS18B20温度转换子程序,6M晶振。
ALAMBITP2.6;当DS18B20不存在时的提示端口,为高电平。
PT18B20BITP2.5;DS18B20的端口
FLAG1BIT2FH.0;是否检测到DS18B20标志位
FUHAOBIT2FH.1;符号标志位,用于显示温度的符号。
KEYBIT2FH.2;是否按下人工设定温度按键,1是,0否
TEMPHEQU2AH;温度转换高4位暂存区
TEMPLEQU2BH;温度转换低8位暂存区
STEMPHEQU2CH;暂存人工输入数据的高4位
STEMPLEQU2DH;暂存人工输入温度的低8位
DIS_FUHAOEQU4AH
DIS_SHIEQU4BH;显示的十位数缓冲区
DIS_GEEQU4CH;显示的个位数缓冲区
DIS_SHIFEQU4DH;显示的十分位数缓冲区
DIS_BAIFEQU4EH;显示的百分位数缓冲区
GET_SHIEQU50H;人工设定温度十位缓冲区
GET_GEEQU51H;人工设定温度个位缓冲区
GET_SHIFEQU52H;人工设定温度十分位缓冲区
GET_BAIFEQU53H;人工设定温度百分位缓冲区
JIAO_ZEQU7EH;校准数据的整数部分
JIAO_XEQU7DH;校准数据的小数部分
DELAY1EQU7CH;用于控制人工设定温度时的延时时间
XUHAOEQU7BH;用于控制人工设定温度输入数据时的位置
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#30H;设置堆栈区
MOV2FH,#00H
ANLP2,#0E0H;屏蔽低五位,即初始化显示不亮
CLRP3.3;初始化时关闭加热装置
CLRP3.4;初始化时关闭报警装置
MOVR0,#4AH
MOVR7,#0AH
CLR0:
;清除显示缓冲区
MOV@R0,#00H
INCR0
DJNZR7,CLR0
MAIN_LOOP:
JBP3.0,DKEY1
LCALLDATA_GET;调用人工设定温度获取子程序
DKEY1:
JBP3.2,DKEY2;输入键取消人工温度设定
LCALLDISPLAY
LCALLDISPLAY
JBP3.2,DKEY2
CLRP3.3
CLRP3.4
CLRKEY
JNBP3.2,$
DKEY2:
LCALLGET_TEMPER;读取温度值
LCALLDATA_CHANGE;调用数据转换子程序
LCALLJIAOZHENG;调用校正子程序
LCALLDATA_CHULI;调用数据处理子程序
LCALLDISPLAY;响应时间大约为800ms
JNBKEY,DEKY3
LCALLT_CONTROL;调用温度控制子程序
DEKY3:
SJMPMAIN_LOOP
DATA_CHANGE:
;数据转换子程序
JNB28H.3,CHA1;转换后的结果符号位由标志FUHAO确定
SETBFUHAO;整数部分存放在28H中,小数部分存放在27H中
MOVA,28H
CPLA
MOV28H,A
MOVA,29H
CPLA
ADDA,#01H
MOV29H,A
MOVA,28H
ADDCA,#00H
MOV28H,A
AJMPCHA2
CHA1:
CLRFUHAO
CHA2:
MOV27H,29H
MOVA,27H
ANLA,#0FH
SWAPA
MOV27H,A
MOVA,29H
ANLA,#0F0H
SWAPA
MOV29H,A
MOVA,28H
ANLA,#0FH
SWAPA
ORLA,29H
MOV28H,A
MOVTEMPH,28H
MOVTEMPL,27H
RET
DATA_CHULI:
;数据处理子程序。
MOVR2,27H;将最终转换得到的结果送入显示缓冲区
LCALLHBD2;注意,转换后均以BCD码表示
MOVA,R2
MOV27H,A
ANLA,#0FH
MOV4EH,A
MOVA,R2
ANLA,#0F0H
SWAPA
MOV4DH,A
MOVA,28H
MOVC,F0
ADDCA,#00H
MOV28H,A
MOVB,#10
DIVAB
MOV4BH,A
MOV4CH,B
RET
HBD2:
MOVR4,#3;获取三位十进制码
HBD3:
MOVA,R2;原小数扩大十倍
MOVB,#10
MULAB
MOVR2,A
PUSHB;保存溢出的一位十进制码
DJNZR4,HBD3;计算完四位十进制码
POPACC;取出千分位
MOVR3,A
POPACC;取出百分位
MOVR2,A
POPACC;取出十分位
SWAPA
ORLA,R2;拼装成高字节BCD码小数
MOVR2,A
CJNER3,#05,HBD4;若千分位大于等于5,则向前进位,小于5则舍去
HBD4:
JCHBD5
ADDA,#01H
DAA
MOVR2,A
MOVF0,C
HBD5:
RET
DATA_GET:
JNBP3.0,$
MOVDIS_SHI,#00H
MOVDIS_GE,#00H
MOVDIS_SHIF,#00H
MOVDIS_BAIF,#00H
DATA_GET1:
JBP3.0,DGET1
MOVDELAY1,#02H
LCALLYSHE
JBP3.0,DGET1
SJMPRETD;按下确定键后表示温度已经设定好,返回
DGET1:
JBP3.1,DGET2
LCALLYSHE
JBP3.1,DGET2
INCXUHAO
MOVA,XUHAO
CJNEA,#04,DGET2
MOVXUHAO,#00H
DGET2:
JBP3.2,DGET3
LCALLYSHE
JBP3.2,DGET3
MOVR0,#XUHAO
CJNE@R0,#00H,DGET31
INCGET_SHI
MOVA,GET_SHI
CJNEA,#05H,DGET32
MOVGET_SHI,#00H
DGET32:
MOVDIS_SHI,GET_SHI
SJMPDGET38
DGET31:
CJNE@R0,#01H,DGET33
INCGET_GE
MOVA,GET_GE
CJNEA,#0AH,DGET34
MOVGET_GE,#00H
DGET34:
MOVDIS_GE,GET_GE
SJMPDGET38
DGET33:
CJNE@R0,#02H,DGET35
INCGET_