1、乐山师范学院毕业论文(设计) 温度闭环控制系统 摘 要 以AT89S52单片机为核心设计了一个温度闭环控制系统。系统利用DS18b20对外界温度进行采集,得到相应的数字量,并显示在液晶显示器上。当外界温度高于设定温度时启动带风扇的电动机进行降温,低于设定温度时带风扇的电动机停止转动。其主要功能模块包括温度采集电路、单片机控制器、液晶显示电路和降温系统。关键词 AT89S52 DS18B20 LCD1602 前言 机械制造行业中,用于金属热处理的加热炉,需要消耗大量的电能,而且温度控制是纯滞后的一阶惯性环节。随着科技进步和生产的发展,自动控制系统在各个领域尤其是工业领域中有着及其广泛的应用,温度
2、控制是控制系统中最为常见的控制类型之一。随着单片机技术的飞速发展,通过单片机对被控对象进行控制日益成为今后自动控制领域的一个重要发展方向。在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。对工件的处理温度要求严格控制,计算机温度控制系统使温度控制指标得到了大幅度提高。采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的
3、质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。科学的运用单片机来控制温度不仅会为企业创造更好的利润,还能给人们的生活到来诸多便捷。1. 方案的选择与论证 简单的一个温度闭环控制系统由软件和硬件两个部分构成。硬件系统采用AT89S52单片机作为主控器,用18B20温度传感器实现温度采集和LCD1602液晶显示温度等功能。软件系统采用模块化设计,包括电源模块,信号采集模块,单片机控制模块,显示模块以及系统降温模块。1.1 控制器模块方案一: 采用FPGA作为系统控制器。FPGA功能强大,可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减少了体积
4、,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能扩展。FPGA采用并行的I/O口方式,提高了系统的处理速度,适合作为大规模实时系统控制核心。但本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且其成本偏高,引脚较多,硬件电路布线复杂。方案二: 采用AT89S52系统控制器。AT89S52是一种低电压、高性能的COMS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器和128bytes的随机存取数据存储器,器件采用ATEML公司的高密度、非易失性存储技术生产,兼容MCS51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89S52功能强大
5、,性价比高且具有算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且其功耗低、体积小、技术成熟和成本低等优点。 基于以上分析拟订方案二,有AT89S52作为控制核心,对温度进行处理和显示进行控制。1.2 温度采集模块方案一: 负温度系数热敏电阻。它具有非常大的负温度系数,电阻值随环境温度或因通过电流而产生自热而变化,即在一定的测量功率下,电阻值随着温度上升而迅速下降。但在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰
6、信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。方案二: 在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20 具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。新的一线器件DS18B20 体积更小、适用电压更宽、更经济。DS18B20 可以程序设定912 位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。DS18B20 的性能是新一代产品中最好的!性能价格比也非常出色!基于以上
7、分析拟订方案二,选择这个方案电路更简单,测量更加精确。1.3 显示模块方案一: 采用液晶显示屏。液晶显示屏具有功耗小、轻薄短小无辐射危险,平直、显示以及影象稳定不闪烁,可视面积大,画面效果好,抗干扰能力强等特点方案二: 采用三位LED七段数码管。数码管具有:低能耗、低损耗、低压、寿命长、耐老化,对外界环境要求较低。同时数码管显示信息少,动态扫描占用太多CPU资源等。 基于以上分析拟订方案一。为了使系统更加简便,显示更方便,选择方案一采用液晶显示器。1.4 降温模块 降温系统的作用主要是在温度超过规定的温度或低于下限温度或达到预定温度时,发动机子程序就会控制信号的输出,温度高于规定的温度范围以及
8、达到规定的温度时,发动机就会转动启动风扇降温,达到降温的效果,同时显示器显示当前温度。1.5 系统模块最终方案 根据以上分析,结合器件和设备等因素,确定如下方案: 1.采用AT89S52单片机作为中央控制器,分别对信号分析处理、LCD液晶显示进行控制。2.温度的采集用高精度的DS18B20温度传感器作为温度检测元件。3.显示模块采液晶显示屏,实现温度显示结果。4.到设定温度启动发动机,实现降温结果。2. 硬件的设计与实现2.1 系统硬件模块关系 系统总体分为:中央控制芯片,温度采集电路, LCD显示电路,电动机电路,电源电路等部分。系统总体方框如图2.1所示。 AT89S52单片机电动机单元电
9、源温度显示单元温度采集单元 图2.1 系统方框图2.2 温度采集与控制电路 温度采集部分采用的是温度的采集用高精度的DS18B20温度传感器作为温度检测元件。我们采用DS18B20温度传感器作为外部温度感受器件。因为温度传感器DS18B20 具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。新的一线器件DS18B20 体积更小、适用电压更宽、更经济。DS18B20 的读写时序和测温原理与DS1820 相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20 外形及引脚如图3图2.2 DS18
10、B20外形及引脚DS18B20引脚定义:第一引脚:DQ为数字信号输入、输出端。第一引脚:GND为电源地。第一引脚:VDD为外接供电电源输入端(在寄生电源接线方式时接地)。2.3 单片机电路 AT89S52是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4KBYTES的可系统编程Flash程序存储器,器件采用ATEML公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器,既可在线编程也可用传统方法进行编程及通用8位微处理器于单片芯片中。 设计采用的AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门
11、狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。其最小系统只需要在外部接上复位和石英晶体。电路原理如图5所示。最小系统的特点是外部无扩展,可为用户提供最大I/O口。图2.3 单片机电路原理2.4 液晶显示器电路 LCD1602是工业字符型液晶,能够同时显示1602即32个字符。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形 ,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等。其引脚平面图如图2.4.1所示。图2.4.1 LCD1602引脚平面图其与单片机连接电路如下图2.4.2
12、所示。图2.4.2 LCD与单片机连接电路2.5 按键电路 在本设计中,主芯片的P1口的四个引脚P1.0,P1.1,P1.7分别与三个按键S2,S3,S4相连接,且分别外接了10K的上拉电阻。三个按键在设计中作为设定闭环控制系统的温度时的控制按键,S2是功能键,按一次,可以进行上限温度设置按两次,可以进行下限温度设置,按第三次恢复正常温度显示。按键S3减小键,可以对上限温度或下限温度进行减小调整。按键S4是增加键,可以对下限温度或下限温度进行增大调整。 图2.5按键电路2.6 电机电路 在设计中,降温系统采用的是有电机进行降温。当温度传感器测得的温度高于设置温度时,启动带风扇的电机;测得的温度
13、低于设置温度时,带风扇的电机停止运动。 图2.6电机电路2.7 电源电路 电源的作用是给电路各个部分提供能源,本设计本设计中需要+5V电源电路,由于单片机和液晶显示器需要+5V供电,而日常家用电为220V的交流电压,所以需要由变压器和稳压芯片7805将其转换成+5V的输出电压。 温度采集模块输出电压是一个05V的变化电压值,为使输出电压更加准确和稳定,我们采用一个+12V的电压经过一个9.1V的稳压管给来采集模块供电.提供+12V电压的电源由变压器和芯片7812构成。7812为3端正稳压电路,将一个高于12V的直流变成一个稳定的12V直流电,并且输出电流很高,可以带动较大的负载。提供-12V电
14、压的电源由变压器和芯片79L12构成。79L12为3端正稳压电路,将一个低于12V的直流变成一个稳定的12V直流电.整体电源电路:图2.7 整体电源3. 软件的设计与实现 由于C语言的灵活性,丰富性等特点,因此系统的软件设计采用C语言8,对单片机进行编程实现各项功能。3.1 温度采集模块与信号处理模块 在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干
15、扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20 具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。新的一线器件DS18B20 体积更小、适用电压更宽、更经济。3.2 LCD液晶显示模块 在本设计中,利用LCD液晶显示来显示当前的温度和设定温度,这样可以使其更直观。其流程图如图3.1所示。入口初始化1602延时检测忙信号LCD_BUSY=0?获得显示RAM地址延时写入相应的数据数据显示完毕返回主程序NYNY图3.1 液晶显示流程图3.3 主程序流程图 主程序主要完成硬件初始化,子程序调用等功能,其具体流程
16、图如图3.2所示开始初始化数据采集并进行A/D转换得到当前温度值输入值大于设定值进行温度调节程序启动控制系统结束显示当前温度值NY 图3.2 主程序流程图4. 软件和硬件调试4.1 软件的调试 此次设计中所采用的软件开发工具为Keil uVision4编译器和Protues仿真软件。Keil uVision4 软件集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。Keil uVision4编译环境如图4.1.1所示。图4.1 keil开发环境Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单
17、片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。Proteus(海神)的ISIS的仿真环境如图4.1.2所示。图4.2Proteus仿真环境4.2 硬件的调试 对硬件的调试分为三个部分,温度采集电路调试、显示电路调试、按键电路调试。4.2.1 温度采集电路调试 每一次读写之前都要对DS18B20 进行复位操作,复位成功后发送一条ROM 指令,最后发送RAM 指令,这样才能对DS18B20 进行预定的操作。复位要求主CPU 将数据线下拉500 微秒,然后释放,当DS18B20 收到信号后等待1660 微秒左右,后发出60240 微秒的存在低脉冲,主CPU 收到此信号表示复位成功
18、。4.2.2 显示电路调试 响应时间愈小愈好,它反应了液晶显示器各象素点对输入信号反应的速度,即pixel由暗转亮或由亮转暗的速度。响应时间越小则使用者在看运动画面时不会出现尾影拖拽的感觉。如果调试时发现LCD的亮度有问题,首先检查(考虑)提供给LCD的电流是否一致,再考虑调节电压。4.2.3 电机电路调试 调试电动机时注意检查电路是否提供了能够启动电动机的电压与电流,最好在电动机前面安装一个保护电路。5. 结论 系统以单片机为核心部件,完成了对环境温度信号的采集、处理、显示等功能;用protel软件绘制电路原理图和pcb电路印刷版图,由protues软件进行仿真。在整个系统中,知识涉及面广,
19、 结构复杂,可能达不到完美,由于个人经验不足,专业知识系统还不够完善,加之时间匆忙,难免会有一些缺点或不理想的地方,希望指导老师给予理解。 在毕业设计的过程到达了预期目的,但仍存在不足之处。我将在以后的学习和工作中努力将其设计完善。我也在此次设计中学习到了很多,从中更是学到了一些很多课本没有的知识,增强了动手能力和独立思考问题,解决问题的能力。这将使我在以后的工作和学习中受益非浅。在此特别感谢张老师的悉心指导和所有帮助过我的老师!。参考文献1 陈明荧,8051单片机课程设计实训教材 北京:清华大学出版社,2004.52 朱清慧.PROTEUS教程:电子线路设计制版与仿真M.清华大学出版社,20
20、08.43 江思敏,姚鹏翼,胡荣等编著.Protel电路设计教程M.清华大学出版社,2002.24 康华光.电子技术基础M.高等教育出版社,2008.55 刘复华,8098单片机及其应用系统设计. 清华大学出版社,2004.46 赵文忠、程启明,微机控制技术 北京:机械工业出版社,2004.67 张友德等,单片微型机原理、应用与实践.上海:复旦大学出版社,2003.28 李华,MCS-51系列单片机实用接口技术.北京航空航天大学出版社,2002.89 孙传友.孙晓斌.感测技术基础M.北京:电子工业出版社.2008.510 陈键铎,8098单片机原理及应用技术.北京:电子工业出版社,2004.6
21、Temperature closed loop control systemxufengyuCollege of physics &,electronic information engineering 08309132Abstract With a AT89C51machine as the core to design a temperature closed loop control system. The system according to the ambient temperature, using single chip computer to the outside temp
22、erature detection, through A / D converter to obtain the corresponding digital volume, and display on the lcd. When the temperature exceeds the preset starting with fan for cooling motor. Its main function modules including the temperature collection circuit, the SCM controller, signal processing ci
23、rcuit and liquid crystal display circuit, the software is mainly used C programming language.Keywords AT89C51 DS18b20 LCD1602 fan motor附录1 器件清单IC1 AT89S52 5V 40引脚 微控制器CPU、RAM、ROMIC2 DS18B20 温度测量范围:0100IC3 LCD1602 液晶显示器一个IC4 带风扇的电动机一个2 源程序#include #include #include #define uchar unsigned char#define
24、uint unsigned intsbit DQ=P12;/ds18b20与单片机连接口sbit RS=P25;sbit RW=P26;sbit EN=P27;sbit BEEP=P36; /定义蜂鸣器 uchar code str1=0x28,0x20,0xC7,0xA4,0x03,0x00,0x00,0x98;/ROM 1室内 uchar code table8=0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00;/ 摄氏温度符号uchar data disdata5;uint tvalue;/温度值/*lcd1602程序*/void delay1ms(uint
25、 ms)/延时1毫秒(不够精确的) uint i,j; for(i=0;ims;i+) for(j=0;j100;j+);unsigned char rolmove(unsigned char m) unsigned char a,b,c,d,e,f,g,h; a=(m&0x01)7;b=(m&0x02)5;c=(m&0x04)3; d=(m&0x08)1;f=(m&0x20)3;g=(m&0x40)5;h=(m&0x80)7;m=a|b|c|d|e|f|g|h; return m; void wr_com(uchar com)/写指令/ delay1ms(1); RS=0; RW=0; EN
26、=0; P0=rolmove(com); delay1ms(1); EN=1; delay1ms(1); EN=0;void wr_dat(uchar dat)/写数据/ delay1ms(1); RS=1; RW=0; EN=0; P0=rolmove(dat); delay1ms(1); EN=1; delay1ms(1); EN=0;void wr_new() /写新字符uchar i;wr_com(0x40);for(i=0;i8;i+)wr_dat(tablei);void lcd_init()/初始化设置/delay1ms(15);wr_com(0x38);delay1ms(5);
27、wr_com(0x08);delay1ms(5);wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5);wr_com(0x0c);delay1ms(5);wr_new();wr_com(0x80); wr_dat(T);/Awr_com(0x81); wr_dat(e);/: wr_com(0x82); wr_dat(m);wr_com(0x83); wr_dat(p);/Awr_com(0x84); wr_dat(e);/: wr_com(0x85); wr_dat(r);wr_com(0x86); wr_dat(a);/Awr_com(0x8
28、7); wr_dat(t);/: wr_com(0x88); wr_dat(u);wr_com(0x89); wr_dat(r);/Awr_com(0x8a); wr_dat(e);/: wr_com(0xc4); wr_dat(.); wr_com(0xc6); wr_dat(C); void baojing()wr_com(0xca); wr_dat(tab0+0x30);wr_com(0xcb); wr_dat(tab1+0x30); wr_com(0xcc); wr_dat(-);wr_com(0xcd); wr_dat(tab2+0x30);wr_com(0xce); wr_dat(
29、tab3+0x30);/*ds1820程序*/void delay_18B20(uint i)/延时1微秒 while(i-);void ds1820rst()/*ds1820复位*/ uchar x=0;DQ = 1; /DQ复位delay_18B20(4); /延时DQ = 0; /DQ拉低delay_18B20(100); /精确延时大于480usDQ = 1; /拉高delay_18B20(40); uchar ds1820rd()/*读数据*/ uchar i=0; uchar dat = 0; for (i=0;i=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x8
30、0; delay_18B20(10); return(dat);void ds1820wr(uchar dat)/*写数据*/ uchar i=0; for (i=0; i=1; void b20_Matchrom(uchar a) /匹配ROMchar j;ds1820wr(0x55); /发送匹配ROM命令if(a=1)for(j=0;j8;j+)ds1820wr(str1j);/发送18B20的序列号,先发送低字节 read_temp(uchar z)/*读取温度值并转换*/uchar a,b;float tt;ds1820rst(); ds1820wr(0xcc); /读序列号ds18
31、20rst(); if(z=1)b20_Matchrom(1); /匹配ROM 1ds1820wr(0x44);/*启动温度转换*/delay1ms(5);ds1820rst(); ds1820wr(0xcc);/读序列号ds1820rst(); if(z=1)b20_Matchrom(1); /匹配ROM 1ds1820wr(0xbe);/*读取温度*/ a=ds1820rd();b=ds1820rd();tvalue=b;tvalueshangxian|m2)set_st=0;if(set_st=0) /play();else if(set_st=1)if(DEC=0)Delay(2000); dowhile(DEC=0);xiaxian-;if(xiaxianshangxian)xiaxian=shangxian; else if(set_st=2)if(DEC=0)Delay(2000); dowhile(DEC=0);shangxian-;if(shangxian99)shangxian=99; tab0=xiaxian/10;tab1=xiaxian%10;tab2=shangxian/10;tab3=shangxian%10;3 硬件图4 PCB图 26