基于单片机控制的水温控制系统的设计正文.docx
《基于单片机控制的水温控制系统的设计正文.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的水温控制系统的设计正文.docx(33页珍藏版)》请在冰点文库上搜索。
基于单片机控制的水温控制系统的设计正文
2系统方案设计
现在的电子产品朝着密集型发展,而电子产品的温度特性普遍比较差,这就对温度的自动控制提出了新的要求。
如果采用国外进口的温度检测与自控系统,虽然性能较好,但是结合国情,其价格相当昂贵,又全是英文,推广起来比较困难[2]。
基于以上问题,本论文设计出一个温度传感器,配合单片机计算机系统,从软件的编制上实现对各外围硬件的控制,最终实现对水温的自动控制。
在硬件的设计上,所有的元器件都采用了通用型产品,使得设计出来的产品与维修都相当方便,可以有效地降低成本,同时另外一点就是能用软件实现的功能尽量选用软件进行操作,更加突出了产品的简单性和高可靠性。
2.1系统设计技术指标
本设计水温设定由人工设定,温度设定围为40-90℃,最小区分度为1℃,标定温差≤1℃;环境温度降低时,温度控制的静态误差≤1℃;用十进制数码管显示水的实际温度;采用适当的控制方法,当设定温度突变(由40℃提高到90℃)时,减小系统的调节时间和超调量。
2.2方案的选择与论证
根据任务和测量控制现象以与现有的条件,现提出了以下两个方案。
方案一:
采用传统的二位模拟控制方法,选用模拟电路,用电位器设定给定值,采用上下限比较电路将反馈的温度值与给定的温度值比较后,决定加热或者不加热。
由于采用模拟控制方式,系统受环境的影响大,不能实现复杂的控制算法使控制精度做得较高,而且不能用数码显示和键盘设定[3]。
方案二:
此方案采用了AT89C51单片机为核心,采用温度传感器DS18B20进行温度采集,用继电器控制加热,使其达到电路简单、可靠的目的。
使用单片机具有编程灵活,控制简单的优点,使系统能简单的实现温度的控制与显示,并且通过软件编程能实现各种控制算法使系统还具有控制精度高的特点。
将两个方案比较便可以得出一个结论,方案二明显的改善了方案一得不足与缺点,并具有控制简单,控制温度精度高的特点。
因此本设计电路采用方案二。
2.3系统总体方案设计
本系统的电路设计方框图如图2-1所示,它由七部分组成:
①控制部分主芯片采用单片机AT89C51;②显示部分采用3位LED数码管以动态扫描方式实现温度显示;③温度采集部分采用DS18B20温度传感器;④加热控制部分采用继电器电路;⑤时钟电路;⑥复位电路;⑦单列3按键键盘输入设定温度值。
图2-1系统设计方框图
2.3.1温度传感器DS18B20简介
温度传感器是整个控制系统获取被控对象特征的重要部件,它的特性直接影响系统的精度。
美国DALLAS公司生产的单线数字温度传感器DS1820,可把温度信号直接转换成串行数字信号供微机处理,是最新的“一线器件”[4]。
它具有体积小、适用电压宽、经济、实用、线性度很好,精度较高且其本身已经进行了校正,使用时不需再进行调整等特点。
本设计采用DS18B20作为智能温度传感器,采集的数据以“一线总线”的数字方式传输直接送到单片机中,同时可传送CRC校验码,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。
DS18B20的特性有:
温度测量围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路;电源极性接反时,芯片不会因发热而烧毁,但不能正常工作等。
以上特点使DS18B20非常适用于远距离多点温度检测系统,性能价格比也非常出色[5]!
因此选择DS18B20作为本电路的温度传感器。
其外部结构如图2-2所示[6]。
图2-2DS18B20外部结构
DS18B20的引脚与特性:
GND:
接地;
DQ:
数据输入/输出脚(单线接口,可作寄生供电);
VDD:
为外接供电电源输入端(在寄生电源接线方式时接地)。
DS18B20的部结构:
1、64位光刻ROM。
开始8位是产品类型的编号,接着是每个器件的唯一的序号,共有48位,最后8位是前56位的CRC校验码。
光刻ROM的作用是使每一个DS18B20都各不一样,实现一线进行通信的目的。
64位闪速ROM的结构如图2-3所示。
图2-364位闪速ROM结构图
2、非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值;
3、高速缓存存储,可以设置DS18B20温度转换精度。
DS18B20温度传感器部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的E2PRAM。
高速暂存RAM的结构为8字节的存储器。
前两个字节包含测得的温度信息,第三和第四字节是TH和TL的易失性拷贝,每次上电复位被刷新。
第五个字节为配置寄存器,它的容用于确定温度值的数字转换分辨率。
第六、七、八个字节用于部计算。
第九个字节是冗余检验字节。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值,低五位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式。
2.3.2控制芯片AT89C51单片机简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位处理器,俗称单片机。
单片机的可擦除存储器可以反复擦除100次[7]。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,其结构图与各管脚如图2-4所示。
图2-4AT89C51结构图
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入“1”后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收、输出4个TTL门电流。
当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。
当因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于部上拉的缘故。
当P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:
复位输入。
当振荡器复位期间时,要保持RST脚两个机器周期的高电平。
当51芯片通电,时钟电路开始工作,在RST引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM的状态。
各特殊功能寄存器初始状态如表2-1所示。
表2-1各特殊功能寄存器初始状态表
特殊功能寄存器
初始态
特殊功能寄存器
初始态
ACC
00H
B
00H
PSW
00H
SP
00H
DPH
00H
TH0
00H
DPL
00H
TL0
00H
IP
xxx00000B
TH1
00H
IE
0xx00000B
TL1
00H
TMOD
00H
TCON
00H
SCON
xxxxxxxxB
SBUF
00H
P0-P3
11111111B
PCON
0xxxxxxxB
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如果想禁止ALE的输出,可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EA/VPP:
当EA保持低电平时,只允许外部程序存储器(0000H-FFFFH)使用,不管是否有部程序存储器。
注意加密方式为“1”时,EA将部锁定为RESET;当EA端保持高电平时,只允许部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入与部时钟工作电路的输入。
XTAL2:
反向振荡放大器的输出与部时钟工作电路的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片振荡器。
石晶振荡和瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.3.3键盘与LED数码显示电路简介
数码管由7个发光二极管组成,行成一个日字形,它们可以共阴极,也可以共阳极。
通过解码电路得到的数码接通相应的发光二极而形成相应的字。
数码管具有:
低耗能、低损耗、低压、寿命长耐老化,对外界环境要求低。
同时数码管采用BCD编码显示数字,程序编译容易、资源占用少。
说到七段数码管,它在家电与工业控制中有着很广泛的应用,例如用来显示温度、数量、重量、日期、时间等等,具有显示醒目、直观的优点,七段数码管是由7个独立的二极管采用共阴或共阳的方法连接而成。
通常将这7个独立的二极管做成a、b、c、d、e、f、g这7个笔划,数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字。
本电路采用三位LED7段共阴数码管分别显示温度的十位、个位和小数位,用单列3按键进行温度设定。
扫描电路,节约了单片机的输出端口,便于程序的编写[8]。
其显示数字对应的二进制电平信号如表2-2所示。
表2-2显示数字对应的二进制电平信号
显示数字
a
b
c
d
e
f
g
0
1
1
1
1
1
1
0
1
0
1
1
0
0
0
0
2
1
1
0
1
1
0
1
3
1
1
1
1
0
0
1
4
0
1
1
0
0
1
1
5
1
0
1
1
0
1
1
6
0
0
1
1
1
1
1
7
1
1
1
0
0
0
0
8
1
1
1
1
1
1
1
9
0
0
0
1
1
0
1
数码管使用条件:
①段与小数点上加限流电阻;
②使用电压:
段:
根据发光颜色决定;小数点:
根据发光颜色决定;
③使用电流:
静态:
总电流80mA(每段10mA);动态:
平均电流4-5mA 峰值电流100mA;
数码管使用注意事项说明:
①数码管表面不要用手触摸,不要用手去弄引角;
②焊接温度:
260℃;焊接时间:
5s
③表面有保护膜的产品,可以在使用前撕下来
2.3.4加热控制电路简介
根据设计要求,可以使用电热丝进行加热,控制电热丝的功率即可以控制加热的速度。
当水温过高时,关掉电热丝进行降温处理,让其自然冷却。
在设计中,装设一个小电风扇,当水温超高时关闭电热丝打开风扇散热,当需要加热时,开启电热丝关闭风扇。
由于加热的功率较大,考虑到简化电路的设计,本设计直接采用220V的电源,采用继电器控制。
使用继电器可以很容易实现通过低电压、低电流控制高电压、高电流,在正常条件下,工作十分可靠。
继电器无需外加光耦,自身即可实现电气隔离,这种电路无法精确实现电热丝功率控制,电热丝只能工作在最大功率或零功率,但可以由多路加热丝组成功率控制,由单片机对温差的处理实现分级功率控制提高系统动态性能[9]。
因此,采用继电器控制省去光耦和交流过零检测电路,在软件上选用适当的控制算法,可以达到更好的效果。
2.3.5复位电路简介
单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。
只有一个可靠的复位电路才能使系统避免出现“死机”、“程序走飞”等现象[10]。
为此本系统设置了既可以通电后自动复位,也可以手动强制复位的复位电路。
2.3.6时钟电路简介
时钟电路是计算机的心脏,它控制着计算机的工作节奏。
CPU就是通过复杂的时序电路完成不同的指令功能的。
时钟信号可以由两种方式产生:
一种是部方式,利用芯片部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。
时钟电路频率围为1.2~12MHz。
单片机虽然有部振荡电路,但要形成时钟,外接晶振以与电容,构成并联谐振电路,接在放大器的反馈回路中,这种方式称为部时钟方式。
对外接电容的值虽然没有严格的要求,但电容的大小多少会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度稳定性。
当时钟频率为12MHz时典型值为30pF[11]。
本控制器采用的是部振荡方式,振荡频率为12MHz,因为这种方式得到的时钟信号比较稳定。
3系统硬件电路设计
本系统的执行方法是循环查询执行的,键盘扫描也是循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理。
各电路的关系图如图3-1所示。
图3-1系统硬件电路关系
3.1温度采集电路的设计
本系统采用半导体智能温度传感器DS18B20作为敏感元件,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。
DS18B20应用广泛,性能可以满足题目的设计要求。
DS18B20的测温电路如图3-2所示。
图3-2DS18B20测温电路
(1)DS18B20的测温功能的实现:
部计数器对一个受温度影响的振荡器的脉冲计数,低温时振荡器的脉冲可以通过门电路,而当到达某一设置高温时振荡器的脉冲无法通过门电路。
计数器设置为-55℃时的值,如果计数器到达0之前,门电路未关闭,则温度寄存器的值将增加,这表示当前温度高于-55℃。
同时,计数器复位在当前温度值上,电路对振荡器的温度系数进行补偿,计数器重新开始计数直到回零。
如果门电路仍然未关闭,则重复以上过程。
其具体的实现主要依靠单片机软件的编程上。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存器的0、1字节上。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。
温度值格式如表3.1所示,其中“S”为标志位,对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。
DS18B20完成温度转换后,就把测得的温度值与TH、TL做比较,若T≥TH或T≤TL,则将该器件的告警标志置位,并对主机发出的告警搜索命令做出响应[12]。
表3-1DS18B20温度值格式表
LSByte
2
2
2
2
2
2
2
2
MSByte
S
S
S
S
S
2
2
2
(2)DS1820单线通信功能是分时完成的,它有严格的时隙概念。
因此系统对DS1820的各种操作必须按协议进行。
DS18B20工作过程中的协议[13]:
初始化DS18B20→发ROM功能命令→发存储器操作命令→处理数据
①初始化单总线上的所有处理均从初始化开始
②ROM操作命令总线主机检测到DS18B20的存在便可以发出ROM操作命令之一。
3.2加热控制电路的设计
由于本系统要控制电热丝加热,功率较大,因此要借助功率电路。
在器件选择上留足余量,增加安全性。
加热部分采用继电器控制,电路简单可靠[14]。
电路如图3-3所示。
图3-3继电器控制
当实际温度低于设定值时,由单片机输出高电平信号。
三极管9014导通,继电器开始对水加温,为了防止继电器频繁动作,在软件中对水温测量精确到0.1℃,而在温度设定时只取整数,可以有1℃的余量。
当实际温度高于设定值时,为了加快系统动态响应速度,设置一个小功率电扇,加速水温的降低,使系统整体性能得到提高。
原理图如图3-4所示。
图3-4风扇控制电路
3.3键盘、显示电路的设计
本设计中以动态显示方式采用共阴极连接来驱动三个七段数码管,分别显示温度的十位、个位和小数位。
数码管采用共阴极,由于AT89C51单片机每个I/O的电流只有1-2mA,所以在位码和段码上加了一样驱动器[15]。
其编码方法如表3-2所示。
表3-2编码方法表
dp
g
f
e
d
c
b
a
显示的字符
编码
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
1
1
0
0
0
0
0
0
0
C0H
1
1
1
1
0
0
1
1
1
F3H
1
0
1
0
0
1
0
0
2
A4H
1
0
1
1
0
0
0
0
3
B0H
1
0
0
1
1
0
1
1
4
99H
1
0
0
1
0
0
0
0
5
92H
1
0
0
0
0
0
0
0
6
82H
1
1
1
1
1
0
0
0
7
F8H
1
0
0
0
0
0
0
0
8
80H
1
0
0
1
0
0
0
0
9
90H
1
0
0
0
1
0
0
0
A
88H
1
0
0
0
1
1
0
0
F
8EH
键盘采用按键开关经上拉电阻分别接P1.0、P1.1、P1.2口上,起到控制、上调和下调作用。
每按上调和下调键,设定温度值增1减1。
原理图如图3-5所示。
图3-5键盘按键电路
3.4复位电路的设计
单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行复位操作。
本系统采用的复位方式为上电复位或开关复位,电源接通后,单片机自动复位,并且在系统运行期间,用按键S5操作也能使单片机复位[16]。
上电后16V的电解电容充电,使RST持续一段时间的高电平。
当单片机已在运行当中时,按下复位按键后松开,也能使RST为一段时间的高电平,从而实现了上电复位或开关复位的操作。
具体电路图如图3-6所示。
图3-6复位电路
3.5时钟电路的设计
在引脚XTALI和XTAL2外接12MHz晶体振荡器,由于单片机部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲,两个电容器起稳定振荡频率、快速起振的作用,具体电路如图3-7所示。
图3-7单片机时钟电路
4系统软件设计
系统的软件设计采用汇编语言,对单片机进行编程实现各项功能。
主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘和继电器电路,用的是循环查询方式来显示和控制温度。
4.1读取DS18B20温度模块子程序
每次对DS18B20操作时多要按照DS18B20中的协议进行。
初始化DS18B20→发ROM功能命令→发存储器操作命令→处理数据。
程序流程图如图4-1所示。
图4-1读取DS18B20温度子程序流程图
4.2数据处理子程序
由于DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。
由于本程序采用的是0.0625的精度,小数部分的值可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可[17]。
也就是说,本系统的温度精确到了0.1℃。
首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码,需要对其低八位取反加一变成原码。
处理过后把DS18B20的温度复制到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中[18]。
数据处理子程序流程图如图4-2所示。
图4-2数据处理子程序流程图
4.3键盘扫描子程序
按键功能:
1、EnterP1.0(K2)控制键
2、UpP1.1(K3)加1键
3、DownP1.2(K4)减1键
键盘子程序流程图如图4-3所示[19]。
图4-3键盘扫描子程序
4.4系统主程序流程图
总模块流程图如图4-4所示。
本软件设计采用循环查询来处理各个模块,温度是缓慢变化量,所以可以满足性能要求。
图4.4主程序流程图
5结论
本论文设计了一种用AT89C51单片机为核心的水温控制。
通过用一块51芯片外加扩展系统与一些相应的功能部件,经过预研、硬件设计、绘制原理图、系统软件的设计等一系列操作,最后组成一个水温的设定、检测、显示和控制的自动调节系统,使系统达到要求的性能指标,实现预期目的。
本文给出了该设计方法的原理说明和具体的设计电路,叙述了系统硬件线路的设计要点和结构以与软件的设计要点,同时给出了各个重要子程序的流程图。
本设计的不足之处还有待进一步完善,使其更好的服务于控制应用中。
本设计的主要特点有:
(1)模块化设计,扩展性强。
模块化设计,使控制器具有一定的通用性,而且运行安全可靠。
只要对控制器稍加改变就可以实现别的控制功能。
(2)成本低,易于推广。
所有的元器件都采用了通用型产品,使得设计出来的产品与维修都相当方便,可以有效地降低成本。
(3)操作简单,控制器正面只有一排数码管和3个按键,人们只要通过3个按键设定好水温后,就不需做其他操作了。
(4)体积小,安装方便,反应灵敏,控制精度高。
本控制器还不够完善,有许多值得改进的地方,以下几个方面有