监测控制系统设计报告基于单片机的温度控制系统的设计.docx
《监测控制系统设计报告基于单片机的温度控制系统的设计.docx》由会员分享,可在线阅读,更多相关《监测控制系统设计报告基于单片机的温度控制系统的设计.docx(28页珍藏版)》请在冰豆网上搜索。
监测控制系统设计报告基于单片机的温度控制系统的设计
监测控制系统设计报告
题目:
基于单片机的温度控制系统
作者:
学号:
班级:
目录
摘要:
1
1引言2
2设计要求2
3工作原理2
4方案设计3
4.1温度测量部分方案3
4.2主控制部分方案4
5各单元的设计5
5.1温度测试单元5
5.2键盘单元5
5.3温度控制及超温和超温警报单元7
5.4温度控制器件电路8
5.5七段数码管显示单元9
5.6接口通讯单元10
5.7总电路(详见附录电路图)11
6程序设计11
6.1程序结构分析11
6.2主程序13
6.3程序代码(详见附录程序清单)14
7.测设分析14
8.参考文献15
9.小结与体会16
附录A:
电路图17
附录B:
使用说明18
附录C:
程序清单18
摘要:
本设计以AT89S51单片机为核心的温度控制系统的工作原理和设计方法。
温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。
文中介绍了该控制系统的硬件部分,包括:
温度检测电路、温度控制电路、PC机与单片机串口通讯电路和一些接口电路。
单片机通过对信号进行相应处理,从而实现温度控制的目的。
文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:
数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、继电器控制程序、超温报警程序。
关键词:
AT89S51单片机DS18B20温度芯片温度控制串口通讯
1引言
温度控制系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等,常用的控制电路根据应用场合和所要求的性能指标有所不同,在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。
这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。
传统的继电器调温电路简单实用,但由于继电器动作频繁,可能会因触点不良而影响正常工作。
控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。
而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。
数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。
由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。
更能串接多个数字温度传感器DS18B20进行范围的温度检测。
2设计要求
设计基于单片计算机的温度控制器,用于控制温度。
具体要求如下:
1.基于单片机电路实现数据的采集,提取、存储及后期的处理;
2.温度连续可调,范围为0℃-40℃;
3.超调量σ%≤20%;
4.温度误差≤±0.5℃;
5.基于通信端口实现数据的回传,方便人-机对话;
3工作原理
温度传感器DS18B20从设备环境的不同位置采集温度,单片机AT89S51获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。
当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备(压缩制冷器),当采集的温度经处理后低于设定温度的下时,单片机通过三极管驱动继电器开启升温设备(加热器)。
当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。
系统中将通过串口通讯连接PC机存储温度变化时的历史数据,以便观察整个温度的控制过程及监控温度的变化全过程。
图3.1工作原理图
4方案设计
4.1温度测量部分方案
DS18B20是DALLAS公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125℃,可编程为9~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。
综上,在本系统中我采用温度芯片DS18B20测量温度。
该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
该芯片直接向单片机传输数字信号,便于单片机处理及控制。
图4.1温度芯片DS18B20
4.2主控制部分方案
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用ATMEL公司的AT89S51单片机作为主控芯片。
主控模块采用单片机最小系统是由于AT89S51芯片内含有4kB的E2PROM,无需外扩存储器,电路简单可靠,其时钟频率为0~24MHz,并且价格低廉,批量价在10元以内。
图4.2AT89S51单片机引脚图
5各单元的设计
5.1温度测试单元
采用温度芯片DS18B20。
使用集成芯片,能够有效的减小外界的干扰,提高测量的精度,简化电路的结构。
5.2键盘单元
单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。
键开关状态的可靠输入:
为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响
在这种行列式矩阵键盘非编码键盘的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
当确认有按键按下后,下一步就要识别哪一个按键按下。
对键的识别通常有两种方法:
一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。
对照图示的4*4键盘,说明线反转法工作原理。
首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
方法是:
向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。
如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。
判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态来实现的。
方法是:
依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。
键盘共有16个按键,用于方便设定温度。
…,数字按键,输入数字0----9;
,设置的确认,修改设置温度时进行确认;
设置的清除,修改设置温度时进行删除;
开启电源
关闭电源
显示及设置转换到温度点1,按此按键后,显示预设置温度的数码管
闪烁;
显示及设置转换到温度点2,按此按键后,显示预设置温度的数码管
闪烁;
表5.1键盘的按键分布
P2.0
0
1
2
3
P2.1
4
5
6
7
P2.2
8
9
F1
F2
P2.3
清除
开启
关闭
确定
P2.4
P2.5
P2.6
P2.7
图5.1键盘设计图
5.3温度控制及超温和超温警报单元
当采集的温度经处理后超过规定温度上限时,单片机通过P1.4输出控制信号驱动三极管D1,使继电器K1开启降温设备(压缩制冷设备):
当采集的温度经处理后低于设定温度下限时,单片机通过P1.5输出控制信号驱动三极管D2,使继电器K2开启升温设备(加热器1)。
当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。
具体电路连接如图5.2所示。
图5.2温度控制及超温和超温警报单元图
5.4温度控制器件电路
单片机通过三极管控制继电器的通断,最后达到控制电热器的目的。
当温度未达到要求时,单片机发送高电平信号使三极管饱和导通,继电器使电源与电热器接通,电热器加热。
温度慢慢升高。
当温度上升到预定温度时,单片机发送低电平信号三极管进入截止状态,继电器的弹片打到另一侧,使电热器与电源断开,电热器停止加热。
继电器电路中有一个三极管8050的保护电路,即将一个二极管反向接到三机管的两端。
连接方法如图5.3所示。
图5.3单片机控制信号
其原理是:
当继电器突然断电时,继电器产生很大的反向电流。
二极管的作用是将反向电流分流,使流过三级管8050的电流比较小,达到保护三极管8050的作用。
5.5七段数码管显示单元
本部分电路主要使用七段数码管和移位寄存器芯片74LS164。
单片机通过I2C总线将要显示的数据信号传送到移位寄存器芯片74LS164寄存,再由移位寄存器控制数码管的显示,从而实现移位寄存点亮数码管显示。
由于单片机的时钟频率达到12M,移位寄存器的移位速度相当快,所以我们根本看不到数据是一位一位传输的。
从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。
具体见实际连线图如图5-3。
当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。
串行数据输入端(A,B)可控制数据。
当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。
当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态,逻辑封装图如图5.4:
图5.4逻辑封装图
引出端符号:
CLOCK时钟输入端;CLEAR同步清除输入端(低电平有效);A,B串行数据输入端;QA-QH输出端。
真值表:
表5-2
表5.2真值表
图5.5显示单元图
5.6接口通讯单元
max232资料简介:
该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。
由于电脑串口rs232电平是-10v+10v,而一般的单片机应用系统的信号电压是ttl电平0+5v,max232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。
该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。
每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。
主要特点:
1、单5V电源工作
2、LinBiCMOSTM工艺技术
3、两个驱动器及两个接收器
4、±30V输入电平
5、低电源电流:
典型值是8mA
6、符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28
7、ESD保护大于MIL-STD-883(方法3015)标准的2000V
51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
在本设计中采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:
第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接,串口通讯具体如图5.6:
图5.6通讯接口图
5.7总电路(详见附录电路图)
6程序设计
6.1程序结构分析
主程序调用了5个子程序,分别是数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、继电器控制程序、单片机与PC机串口通讯程序。
键盘扫描电路及按键处理程序:
实现键盘的输入按键的识别及进入相应的程序。
温度信号处理程序:
对温度芯片送过来的数据进行处理,进行判断和显示。
数码管显示程序:
向数码的显示送数,控制系统的显示部分。
继电器控制程序:
控制继电器动作
串口通讯程序:
实现PC机与单片机通讯,将温度数据传送给PC机。
图6.1程序结构图
6.2主程序
图6.1主程序流程图
程序开始的时候先设置初始化,然后就控制数码管显示当前温度。
接着就判断F1、F2按键是否被按下。
按下F1进入温度控制点1的程序、按下F2进入温度控制点2的程序。
程序控制设置温度的两个数码管闪烁的,此时键盘输入有效。
有按键按下的时候进入按键处理程序。
按下“确定”按键后,程序进入判断程序和继电器控制程序。
继电器动作后,程序回到显示当前程序,并开始循环。
6.3程序代码(详见附录程序清单)
7.测设分析
1.测试环境
环境温度28摄氏度,室内面积20平方米
测试仪器:
数字万用表,温度计0----100摄氏度
2.测试方法
使系统运行,采用温度计同时测量室内度变化情况,得出系统测量的温度。
3.测试结果
设定温度由0摄氏度到40摄氏度
标定温差<=1摄氏度调节时间15s(具体视现场情况)
静态误差<=0.5摄氏度最大超调量1摄氏度
4.通过测试分析,对于实际室内的温度控制,可以再提出以下2点方法:
①增加传感器个数,对各个温度传感器采集的数据进行求算术平均,可得到较为准确的温度值。
②对实际室内的温度控制,可采用功率较大的电炉,并且通过风扇对箱内温度进行充分搅和,降温设备可采用空气压缩机等制冷设备。
5.通过实验测试和分析,发现虽然传感器的温度采集精度最高可得到0.06℃,但测试得到的数据最小间隔为0.03℃。
通过分析,当对浮点数求平均处理时,遇到同一时刻两个传感头采集的温度相差不大,使0.06℃时求出平均温度变为0.03℃为了解该数据是否真实,可采用一个高精度的数字温度计测试,发现读出的值与其基本一致,由此推断如果在同一时间增加采集温度的个数,则可以进一步提高温度的精度。
8.参考文献
(1)曹巧媛主编.单片机原理及应用(第二版).北京:
电子工业出版社,2002
(2)全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编(2001),北京:
北京理工大学出版社,2003
(3)何力民编.单片机高级教程.北京:
北京航空大学出版社,2000
(4)金发庆等编.传感器技术与应用.北京机械工业出版社,2002
(5)邵惠鹤.工业过程高级控制.上海:
上海交通大学出版社,1997
(6)胡寿松.自动控制原理.北京:
国防工业出版社,2000
(7)刘伯春.智能PID调节器的设计及应用.电子自动化,1995
(8)KatsuhikoOgata.ModenControlEngineering.Publishinghouseofelectronicsindustry,2000
(9)周润景,张丽娜.基于PROTEUS的电路及单片机系统设计与仿真[M].北京:
航空航天大学出版社,2006
(10)王忠飞,胥芳.MCS-51单片机原理及嵌入式系统应用[M].西安:
西安电子科技大学出版社,2007
(11)刘国钧,陈绍业,王凤翥.图书馆目录.第1版.北京:
高等教育出版社,1957
(12)赵娜,赵刚,于珍珠等.基于51单片机的温度测量系统[J].微计算机信息,2007,1-2:
146-148。
(13)BorkoH,BernierCL.Indexingconceptsandmethods.NewYork:
Academic
9.小结与体会
在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不高。
在论文中简单分析了单片机温度控制系统设计过程及实现方法。
本系统的测温范围为-10℃~40℃,温度检测系统根据用户设定的温度范围完成一定范围的温度控制。
89S51的时钟最高可达12M,I/O口可达32个,高的时钟频率和丰富的I/O,都为我们实现电路功能提供了非常有利的条件。
同时也因为开发环境友好,易用,方便,大大加快本系统设计开发。
本制作的设计中使用了继电器控制的只是插座电路,因此,该系统的可扩展性很强。
随着插入插座的电器的不同,可以实现许多其它功能的电路。
附录A:
电路图
附录B:
使用说明
1、将温度控制箱上的开关全部打到“关”的位置
2、将温度芯片插到温度控制箱的指定位置
3、用串口线将温度控制箱与计算机相连,打开相应的应用程序
4、将用电器的插头插到温度控制箱的插座
5、接上温度控制箱的电源、并打开开关。
在温度控制箱上的数码管显示出当前温度
6、按F1键,进入温度点1的设置。
通过键盘设置所需要的温度,然后按“确定”键。
系统会将设置值与当前值进行比较,通过温度芯片的反馈,单片机控制加热或冷却水的温度,使水的温度稳定在设置的温度上。
从而达到控制温度的作用。
7、按F2键则相应进入温度点2的设置。
与F1键的使用方法相同。
8、当要关闭系统时,先关掉开关,然后再拔掉电源。
框图表示:
附录C:
程序清单
主程序:
ORG0000H;DS18B20.ASM
DS18SLEQU41H;用于保存读出温度的低8位
DS18SHEQU40H;用于保存读出温度的高8位
DS18FIGEQU8H;是否检测到DS18B20标志位
A_BIT1EQU31H;数码管个位数存放内存位置
B_BIT1EQU32H;数码管十位数存放内存位置
D_BIT1EQU35H ;数码管百位数存放内存位置
DS18CD1EQU42H;DS18CD1-DS18CD8暂存64位ROM
DS18CD2EQU43H;从低到高
DS18CD3EQU44H
DS18CD4EQU45H
DS18CD5EQU46H
DS18CD6EQU47H
DS18CD7EQU48H
DS18CD8EQU49H
DS1864BEQU4AH
DS18ADSEQU4BH
DS18DQEQUP1.0;30H,31H,32H,33H:
X个位十位X
MOD7:
MOVSP,#60H
LCALLGET_TEMPER;调用读温度子程序
LCALLREADCODE
AJMPMOD7
INIT_1820:
;DS18B20初始化
SETBDS18DQ
CLRDS18DQ ;延时,500US低MC
MOVR7,#250
DJNZR7,$
MOVR7,#150
DJNZR7,$
SETBDS18DQ ;释放总线
LCALLDELAY60US ;15-60US的等待时间
MOVR6,#4
SETDSDQ:
LCALLDELAY60US
JNBDS18DQ,SETDSDQFH;60-240US内是否有返回信号,为0跳
DJNZR6,SETDSDQ
MOVR7,#250
DJNZR7,$
CLRDS18FIG
RET
SETDSDQFH:
SETBDS18FIG
MOVR7,#250
DJNZR7,$
MOVR7,#100
DJNZR7,$
RET;
数据处理程序:
TEMP0:
INCA
AJMPTEMP1
TEMPCOV:
MOVA,DS18SL;数据处理子程序
TEMPCOV
MOVB,#16
DIVAB
JBB.3,TEMP0
TEMP1:
MOV34H,A;将DS18SL的高四位右移四位,存入
34H中(温度值)
MOVA,B;将DS18SL的低四位X10/16得小数后
一位数.
MOVB,#10
MULAB
MOVB,#16
DIVAB
MOV30H,A;将小数后一位数.存入30H中
MOVA,DS18SH;DS18SH中存放高8位数,权
重16
MOVB,#16
MULAB
ADDA,34H;34H中存入温度值的整数部分
MOVB,#10
DIVAB
MOV31H,B;个位存入31H中
MOVB,#10;
DIVAB;
MOV32H,B;十位存入32H中
MOVB,#10;
DIVAB;
MOV35H,B;百位存入33H中
MOVA,DS18SH
MOV33H,#10H;
JBACC.7,EXIT7
MOV33H,#00H
EXIT7:
RET
GET_TEMPER:
;读出转换后的温度值,并显示
SETBDS18DQ
LCALLINIT_1820;先复位DS18B20
JBDS18FIG,TSS2
RET;判断DS1820是否存在?
若DS18B20不存在则返
TSS2:
MOVDS18ADS,#0
DS18JX:
LCALLDS18CODP
MOVA,DS18ADS
ADDA,#9
MOVDS18ADS,A
CJNEA,#63,DS18JX
RET
DS18CODP:
LCALLMRCOVT;转换指定的DS18B2