水温控制系统设计:盛朋克学号:B11041307系别:电气工程与自动化系水温控制系统设计摘要本系统以AT89C51,AT89C2051单片机为核心,主要包括传感器温度采集,A/D模/数转换,按扭操作,单片机控制,数码管数字显示等部分。
本系统采用PID算法实现温度控制功能,通过串行通信完成两片单片机信息的交互而实现温度设定、控制和显示。
本设计还可以通过串口与上位机(电脑)连接,实现电脑控制。
系统设计有体积小、交互性强等优点。
为了实现高精度的水温控制,本单片机系统采用PID算法控制和PWM脉宽调制相结合的技术,通过控制双向可控硅改变电炉和电源的接通、断开,从而改变水温加热时间的方法来实现对水温的控制。
本系统由键盘显示和温度控制两个模块组成,通过模块间的通信完成温度设定、实温显示、水温升降等功能。
具有电路结构简单、程序简短、系统可靠性高、操作简便等特点。
关键词:单片机,继电器,DS18B20,按键,数码显示,PID,PWM第1章引言在能源日益紧的今天,电热水器,饮水机,电饭煲之类的家用电器在保温时,由于其简单的温控系统,利用温敏电阻来实现温控,因而会造成很大的能源浪费。
但是利用AT89C51单片机为核心,配合温度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。
单片机可将温度传感器检测到的水温模拟量转换成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
1.1 水温控制系统概述能源问题已经是当前最热门的话题,离开能源的日子,世界将失去色彩,人们将寸步难行,虽然本设计是节省电能角度出发,而电能又是可再生能源,但是今天还是有很多的电能是依靠火力,核电等不可再生资源产生,一旦这些自然资源耗尽,我们将面临电能资源的巨大缺口,因此本设计从开源节流的角度出发,节省电能,保护环境。
1.2 本设计任务和主要容设计并制作一个水温自动控制系统,控制对象为1升净水,容器为搪瓷器皿。
水温可以在一定围由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。
本设计主要容如下:(1)温度设定围为40-90℃,最小区分度为1℃,标定温度≤1℃。
(2)环境温度降低是温度控制的静态误差≤1℃。
(3)用十进制数码管显示水的实际温度。
(4)采用适当的控制方法,当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量。
(5)温度控制的静态误差≤0.2℃。
第2章系统硬件电路设计2.1 单片机控制系统原理图2-1 单片机控制系统原理框图2.2 温度采样电路系统的信号采集电路主要由温度传感器(AD590)、基准电压(7812)及A/D转换电路(ADC0804)三部分组成。
如图:2-2。
图2-2 信号采集电路2.2.1 温度传感器的选取目前市场上温度传感器较多,有一下几种:方案一:选用铂电阻温度传感器,此类温度传感器线性度、稳定性等当面都很好,但其成本较高。
方案二:采用热敏电阻,选用此类元器件有价格便宜的优点,但由于热敏电阻的非线性特性会影响系统的精度。
方案三:选用美国Analog Devices公司生产的二端集成电流传感器AD590。
其测量围在-50℃--+150℃之间,满刻度围误差为±0.3℃,当电源电压在5-10V 之间,稳定度为1%时,误差只有±0.01℃。
此器件具有体积小、质量轻、线性度好、性能稳定等优点其各方面特性都满足此系统的要求。
比较以上三种方案,方案三具有明显的优点,因此选用方案三。
2.2.2 温度传感器AD590测量围在-50℃--+50℃,满刻度围误差为±0.3℃,当电源电压在5-10V之间,稳定度为1%时,误差只有±0.01℃。
AD590为电流型传感器温度没变化1℃其电流变化1uA在35℃和95℃时输出电流分别为308.2uA和368.2uA。
2.2.3 电路原理及参数计算温度采样电路的基本原理是采用电流型温度传感器AD590将温度的变化量转化为电流量,再将电流量转化为电压量通过A/D转换器ADC0804将其转换成数值量交由单片机处理。
2.2.4 ADC0804性能描述ADC0804为8bit的一路A/D转换器,其输入电压围在0-5V,转换速度小于100us,转换精度0.39%。
满足系统的要求。
如图2-3A/D转换电路。
图2-3 温度转换电路2.3 温度控制电路此部分电路主要由光电耦合器MOC3041和双向可控硅BTA12组成。
MOC3041光电耦合器的耐压值为400V,它的输出级由过零触发的双向可控硅构成,它控制着主电路双向可控硅的导通和关闭。
100欧电阻和0.01uF电容组成双向可控硅保护电路。
控制部分电路图如图2-4部分控制电路。
图2-4 部分控制电路2.4 主机控制部分此部分是电路的核心部分,系统的控制采用了单片机89C52。
单片机部有8K 单元的程序存储器及256字节的数据存储器。
因此系统不必扩展外部程序存储器和数据存储器这样大大减少了系统的硬件部分。
如图 2-5 主机控制部分。
图2-5 主机控制部分2.5 键盘及数字显示部分在设计键盘/显示电路时,我们使用单片机2051作为电路控制电路的核心,单片机2051具有一个全双工的串行口,利用此串行口能够方便的实现系统的控制和显示功能。
键盘/显示电路如图2-6图 2-6 键盘/显示部分电路如图2-7中单片机2051的P1口接数码管道的8只引脚,这样易于度数码管的译码,使数码管能显示设计者所需的各数值、小数点、符号等等。
单片机2051的P3.3、P3.4、P3.5接3-8译码器74L138,译码器的输出端和键盘,键盘扫描和显示器扫描同用端口这样能大大的减少单片机的I/O,减少硬件的花费。
图 2-7 单片机2051连接图键盘的接法的差别直接影响到硬件和软件的设计,考虑到单片机2051的端口资源有限,所以我们在设计中将传统的4*4的键盘接成8*2的形式(如图2-8),键盘的扫描除了和显示公用的8个端外,另外的两个端直接和2051的P3.2和P3.7相连。
图 2-8 键盘接线如图2-8的接法已经完全用了单片机的15个I/O口,有效的利用了单片机的资源。
第3章系统的软件设计3.1 系统的主程序设计软件设计流程图如下:图3-1 主程序流程图3.2 主程序主程序在附录中。
3.3 键盘和显示程序设计键盘和显示程序流程图如下:图3-2 键盘显示程序流程图3.4 键盘和显示程序具体程序在附录中。
总结首先,通过这次课程设计,在很大程度上提高了自己的独立思考能力和单片机的专业知识,熟悉了下载调试等一系列的操作。
我设计系统的主要思想符合目前节省能源和国实际的应用特点和要求,采用计算机控制的形式,实现对水温的自动控制。
通过本设计的思考,更加加深了对单片机的认识,熟练了单片机的编程,更对当前的温度传感器有了更深刻的认识和了解,但是由于此系统依赖温度传感器,因而对温度传感器的线性和稳定性等诸多方面有着严格的要求,但是传感器的性能越好,相对而言其价格也就越高,因而在此设计中,温度传感器还是存在遗憾,其次,由于采用了汇编语言,所以其编程过程复杂不易查错。
最后,由于时间紧迫,本设计还有诸多地方需要改进。
总的来说,收获很大。
把书本知识应用到实际中,让我对书本中的理论知识有了更加深刻和立体的认识,同时,让我了解到动手实践的重要性,以后会更加注重理论与实践的结合。
参考文献[1]毅刚、喜元、守达、乔立岩.新编MCS-51系列单片机应用设计.工业大学,2003.6[2]胡汉才.单片机原理及接口技术.清华大学,1996[3]德金,粤初.MCS-51系列单片机接口电路与应用程序实例.航空航天大学,1990[4]建民.单片机在温度控制系统中的应用.江汉大学学报,1996.6[5]何立民.MCS-51系列单片机应用系统设计.航空航天大学,1990[6]志全等.智能仪表设计原理及应用.国防工业,1998.6[7]素行,模拟电子技术基础简明教程,高等教育,1985附录汇编程序主程序如下:ORG 0000HAJMP START ;主程序ORG 000BHAJMP TIMO ;T0中断子程序ORG 0023HAJMP RT ;串口中断接受子程序ORG 0100HSTART: MOV 50H ,#00H ;初始化设定温度MOV 51H,#00HMOV 52H,#00HMOV 53H,#00HMOV 54H,#0C6H ;发送第五个数码管字形码CMOV TMOD,#01H ;T0工作在MODE1MOV TH0,#0ECH ;晶振12M,50ms中断一次MOV TL0,#78HSETB TR0MOV TOMD,#20H ;T1工作在MODE2MOV TH1,#0E6H ;设波特率MOV TL1,#0E6HSTE TR1MOV SCON,#50HMOV IE,#92H ;允许T0,R1中断MOV R6,#04H ;初始要接收的数据个数MOV R1,#50H ;初始要接收的其实地址MOV R4,#00HREY:MOV A,53HCJNE A,#00H,YESSJMP REYYES:MOV R3,#00HYES1:CLR P2.0 ;开始A/D转换CLR P3.6SETB P3.6ACALL DELAYJ1:MOVX A,R0ACALL SJCL ;调用数据处理子程序ACALL DISPDJNZ R3,MMACALL FS ;调用串口发送子程序AJMP YESMM: AJMP YES1SJCL: MOV B,#60HMUL ABMOV 61H,AMOV A,BADD A,#35ACALL L10MOV 60H,R5 ;存十进制高八位(个位和十位)MOV A,61HMOV B,#9MUL ABMOV 61H,B ;存十进制低八位(小数点)RETL10:CLR CMOV R5,#00H ;初始化十进制转换的地位寄存器MOV R4,#08H ;调整次数NEXT: RLC AMOV R2,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R2DJNZ R4,NEXTRETDISP: MOV A,60HANL A,#0F0H ;取D2的显示数据存入70HSWAP AMOV 70H,AMOV A,60HANL A,#0F0H ;取D1的显示数据存入71HMOV 71H,AMOV 72H,61H ;取D0的显示数据存入72HMOV R0,#70H ;取相应的字形码分别存入55-57HMOV DPTR,#TABMOV A ,R0MOVC A,A+DPTRMOV 55H,AINC R0MOV A,R0MOVC A,A+DPTRMOV 56H,AINC R0MOV A,R0MOVC A,A+DPTRMOV 57H,AMOV A,56HADD A,#80H ;在D1字形码上加小数点MOV 56H,ARETFS: MOV A ,R0PUSH ACCMOV TMOD,#20HMOV TH1,#0E6HMOV TL1,#0E6HSET TR1MOV SCON,#50HMOV R0,#54H ;设定发送起始地址MOV R7,#04HLOOP: MOV SBUF,R0JNB T1,$CLR T1INC R0DJNZ R7,LOOPPOP ACCMOV R0,ARET ;串口中断接受子程序RT: PUSH ACCPUSH PSWCLR ET0CLR ESSJ: MOV R1,SBUFINC R1CJNE R4,#03H,MOVESJMP MOVE1MOVE: INC R4CLR RIJNB RI,$MOVE1: DJNZ R6,SJMOV R4,#00HMOV R1,#50H ;重置接收起始地址MOV R6,#04H ;重置接收个数SETB ET0SET ESPOP PSWPOP ACCRETI ;T0中断子程序TIM0: PUSH ACCPUSH PSWMOV TH0,#0ECH ;重设中断时间MOV TL0,#78HCLR CACCAL JSMOV A,51HCJNE A,70H,Q1 ;最高位比SJMP Q2Q1: JC OFFSJMP ONQ2: MOV AM,52HCJNE A,71H,Q3Q3: JC OFFON: CLR P1.4CLR P1.2RE: POP PSWPOP ACCRETIOFF: SETB P1.4SETB P1.2SJMP REDELAY: MOV R7,#50DJNZ R7,$RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H键盘显示程序如下:FLAGA BIT 4EHFLAGB BIT 4FHORG 00HJMP STARTORG 23HJMP UARTISTART: CLR FLAGACLR FLAGBMOV 30H,#07H ;系统显示MOV 31H,#07HMOV 32H,#07HMOV 33H,#07HMOV 34H,#07HMOV 35H,#07HMOV 36H,#07HMOV 37H,#07HMOV R1,#90HMOV R0,#50HPP:CLR P3.3 ;P3.5P3.4P3.3=000 CLR P3.4CLR P3.5MOV A,30HMOV P1,ASETB P3.3 ;001MOV A,31HMOV P1,ASETB P3.4 ;010MOV A,32HMOV P1,ASETB P3.3MOV A,33HMOV P1,ASETB P3.5CLR P3.4CLR P3.3MOV A,34HMOV P1,ASETB P3.3MOV A,35HMOV P1,ASETB P3.4CLR P3.3MOV A,36HMOV P1,ASETB P3.3MOV A,37HMOV P1,ADJNZ R0,PPMOV R0,#0FFHDJNZ R0,$DJNZ R1,PPMOV SCON,#52HMOV 30H,#0FHMOV 34H,#0FHMOV 33H,#93HMOV 37H,#93HZ1:CLR P3.3CLR P3.4CLR P3.5MOV A,30HMOV P1,AJB P3.2,Z11ACALL DELAYJNB P3.2,$SETB FLAGAJMP Z2Z11:JB P3.7,Z2ACALL DELAYJNB P3.7JNB FLAGA,Z2JB FLAGB,Z12MOV 31H,#0C0HMOV R0,#0SETB FLAGBJMP Z2Z12:MOV 32H,#0C0HMOV R1,#0CLR FLAGBZ2:SETB P3.3MOV A,31HMOV P1,AJB P3.2,Z21ACALL DELAYJNB P3.2,$JNB FLAGA,Z3JB FLAGB,Z22MOV 31H,#0F9HMOV R1,#1SETB FLAGBJMP Z3Z22:MOV 32H,#0F9HMOV R1,#1CLR FLAGBJMP Z3Z21:JB P3.7,Z3ACALL DELAYJNB P3.7,$JNB FLAGA,Z3JB FLAGB,Z23MOV R0,#2MOV 31H,#0A4HSETB FLAGBJMP Z3Z23:MOV 32H,#A4HMOV R1,#2CLR FLAGBZ3: SETB P3.4CLR P3.3MOV A,32HMOV P1,AJB P3.2,Z31ACALL DELAYJNB P3.2,$JNB FLAGA,Z4JB FLAGB,Z32MOV 31H,#0B0HMOV R0,#3SETB FLAGBJMP Z4Z32: MOV 32H,#0B0H MOV R1,#3CLR FLAGBJMP Z4Z31: JB P3.7,Z4ACALL DELAYJNB P3.7,$JNB FLAGA,Z4JB FLAGB,Z33MOV 31H,#99HMOV R0,#4SETB FLAGBJMP Z4Z33: MOV 32H,#99HH MOV R1,#4CLR FLAGBZ4:SETB P3.3MOV A,33HMOV P1,AJB P3.2,Z41ACALL DELAYJNB P3.2,$JNB FLAGA,Z5JB FLAGB,Z42MOV 31H,#92HMOV RO,#5SETB FLAGBJMP Z5Z42:MOV 32H,#92HMOV R1,#5CLR FLAGBJMP Z5Z41:JB P3.7,Z5ACALL DELAYJNB P3.7,$JNB FLAGA,Z5JB FLAGB,Z43MOV 31H,#82HMOV R0,#6SETB FLAGBJMP Z5Z43:MOV 32H,#82HMOV R1,#6CLR FLAGBZ5:CLR P3.3CLR P3.4SETB P3.5MOV A,34HMOV P1,AJB P3.2,Z51ACALL DELAYJNB P3.2,$JNB FLAGA,Z6JB FLAGB,Z52MOV 31H,#0F8HMOV R0,#7SETB FLAGBJMP Z6Z52:MOV 32H,#0F8HMOV R1,#7CLR FLAGBJMP Z6Z51:JB P3.7,Z6ACALL DELAYJNB P3.7,$JNB FLAGA,Z6JB FLAGB,Z53MOV 31H,#80HMOV RO,#8SETB FLAGBJMP Z6Z53:MOV 31H,#80HMOV R1,#8CLR FLAGBZ6:SETB P3.3MOV A,35HMOV P1,AJB P3.2,Z61ACALL DELAYJNB P3.2,$JNB FLAGA,Z7JB FLAGB,Z62MOV 31H,98HMOV R0,#9SETB FLAGBJMP Z7Z62: MOV 32H,#98HMOV R1,#9CLR FLAGBJMP 27Z61: JB P3.7,27ACALL DELAYJNB P3.7$JNB FLAGA,Z7MOV A,R0MOV B,#10MUL ABMOV B,R1ADD A,BMOV SBUF,ACLR FLAGACLR FLAGBZ7: SETB P3.4CLR P3.3MOV A,36HMOV P1,AZ8: SRTB P3.3MOV A,37HMOV P1,AJMP Z1DELAY: MOV R7,#0F0HDLO: MOV R6,#0F0HDJNZ R6,$DJNZ R7,DL0RETUARTI: PUSH ACCPUSH PSWMOV DPTR,#TABLEMOV A,SBUFJNB RI,$CLR RIMOV B,AANL A,#00FHMOVC A,A+DPTRMOV 36H,AMOV A,BANL A,#0F0HMOV B,#10HDIV ABMOVC A,A+DPTRMOV 35H,AMOV A,R1POP PSWPOP ACCRETITABLE: DB 11H,7DH,23H,29H,4DHDB 89H,81H,1DH,01H,09H;。