恒温箱温度计算机控制系统设计--大学毕业设计论文.doc

上传人:知****量 文档编号:91660561 上传时间:2023-05-27 格式:DOC 页数:25 大小:200.50KB
返回 下载 相关 举报
恒温箱温度计算机控制系统设计--大学毕业设计论文.doc_第1页
第1页 / 共25页
恒温箱温度计算机控制系统设计--大学毕业设计论文.doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《恒温箱温度计算机控制系统设计--大学毕业设计论文.doc》由会员分享,可在线阅读,更多相关《恒温箱温度计算机控制系统设计--大学毕业设计论文.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、西南科技大学计算机控制系统报告设计名称: 恒温箱温度计算机控制系统设计 姓 名: 孙兰 学 号: 2 0 1 21856 班 级: 自动1201 班 指导教师: 聂诗良 起止日期: 2015.9.15-2012.12.25 西南科技大学信息工程学院制25设 计 任 务 书学生班级: 自动1201 学生姓名: 孙兰 学号: 20121856 设计名称: 恒温箱温度计算机控制系统设计 起止日期: 9月15日12月25日 指导教师: 聂诗良 设计要求: (1)温度采集传感器采用热电阻或热电偶,或一体化数字温度传感器DS18B20。(2)控制灯泡亮度或发热量,采用继电器开关控制或用可控硅平滑控制。(3

2、)采用单片机或PLC作为控制器。(4)采用LED或LCD或PC机的液晶显示器作为显示器,同时显示给定温度和实际温度。(5)采用自制按键或PC机的键盘作为温度给定值输入。(6)恒温箱实际温度达到给定值时(误差要求1)需声光提示,声音时延5秒后停止。(7)恒温箱最高温度50。恒温箱温度计算机控制系统设计摘要:本设计的温度测量及加热控制系统以AT89S52单片机为核心部件,外加温度采集电路、键盘及显示电路、加热控制电路和越限报警等电路。采用单总线型数字式的温度传感器DS18B20,及行列式键盘和动态显示的方式,以容易控制的固态继电器作加热控制的开关器件。本作品既可以对当前温度进行实时显示又可以对温度

3、进行控制,以使达到用户需要的温度,并使其恒定在这一温度。人性化的行列式键盘设计使设置温度简单快速,两位整数一位小数的显示方式具有更高的显示精度。建立在模糊控制理论上的控制算法,使控制精度完全能满足一般社会生产的要求。通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降低了硬件成本,系统操控简便。关键词:单片机 恒温控制 模糊控制Abstract: The design of the temperature measurement and heating control systems to AT89S52 microcontroller c

4、ore component, plus the temperature acquisition circuit, keyboard and display circuit, heating circutal temperature sensor DS18B20, and the determinant of the keyboard and dynamic display in order to easily control the solid-state relays for heating control of the switching device. This works both o

5、n the current temperature in real-time display of temperature can be controlled in order to enable users to reach the required temperature, and make it constant at this temperature. Humanized design keyboard determinant temperature easy Express, the two decimal integer, a display shows a higher accu

6、racy. Set up in the fuzzy control theory, control algorithms, so that the control accuracy can meet the general requirements of social production. Through the system software and hardware design of rational planning, exert their own single-chip integration of many system-level functional unit of the

7、 advantages, does not reduce the functions at the premise of effectively reducing the cost of hardware, the system easy to manipulate. Key words: microcontroller, temperature control, fuzzy control1 设计目的和意义利用AT89S52对温度进行控制,采用单总线传输方式读取DS18B20当前温度值并用龙丘小液晶显示,使用按键更改设定温度,使用PID算法控制箱体温度到一个恒定值,这样一个控制系统涵盖了以计

8、算机控制系统课程为核心的单片机原理及应用、自动控制原理等相关课程知识,提供了真正将理论课程所学的知识应用于实践的平台。从硬件的搭建到软件算法的探索都需要扎实的理论基础。在涉及光耦驱动晶闸管电路的设计过程中还考察了器件选型的重要性,对于箱体的设计还考察了学生对于实际的考虑。整个设计过程需要工程的思想,正是迎合了我自动化专业优秀学生所必须具备的知识与能力!2 系统总体结构2.1 总体方案设计系统整体框图如下图:图1 系统原理总框图上面的系统总体框图中,该系统中微控制器采用AT89S52单片机小系统,温度显示采用龙丘小液晶显示模块、声光报警器模块、DS18B20温度采集模块、键盘输入设定温度模块、继

9、电器驱动模块。2.2 温度控制方案选择该温度控制系统的控制对象是箱体内的温度,但是温度这个量的控制必须借助其他产热原件才能实现。经过多方调查,我总结到可行又比较简单的方案大体都是使用灯泡发光产热来改变箱体内温度,控制灯泡产热的方案分别如下所述:方案一:采用继电器作为程控开关,控制灯泡的开或关,进而控制其产热。这种方案简单易行,但是继电器控制的频率一般只有10Hz左右,不能在50Hz交流电的每个周期都控制灯泡开关一次,也就是只能控制灯泡的亮或灭,不能调节灯泡的亮度。方案二:采用开关器件晶闸管作为控制灯泡亮度的执行部件,由于晶闸管的开关速度可以达到很快,因而可以控制灯泡的亮度。由于本装置要求控制调

10、节控制温度的精度要达到1C,用继电器方案也可以达到要求,但是不能实现平滑控制灯泡发热量的要求。为了能够平滑控制灯泡亮度,最终选定使用晶闸管控制方案,即方案二。2.3 主控芯片的选择对于本系统这样一个典型而又全面的控制系统来说,用八位的52单片机或者AVR单片机就可以满足控制要求。方案一:采用52系列单片机,有两个外部中断口、3路定时器、4路8位I/O口,资源丰富,编程简单。方案二:使用AVR系列的ATMEGA16单片机,除了拥有一般的中断、定时、输入输出功能外,还有PWM输出功能,JTAG等外加功能,但是需要烧写熔丝位,编程相对复杂些,而且价格要高出好多。综合考虑到价格因素以及资源需求,最终选

11、定AT89S52单片机作为主控芯片。2.4 液晶显示方案选择方案一:使用的最为广泛的方案也就是使用1602字符型液晶显示器,该液晶价格便宜,编程简单,但是只能显示两行16个字符以内的英文字符。方案二:使用龙丘小液晶,分辨率128*64,可以显示不同大小的汉字和字符,功耗很低,采用3.3V供电。由于本系统使用便宜的7805线性稳压芯片供电,其发热功率与输入与输出电压差以及负载电流的大小乘积正相关。所以采用LCD1602字符型液晶继电器,选择方案一。3 系统模块设计3.1 系统电源模块设计电源是整个系统工作的基础,所有的功能实现都是基于稳定的电源。本系统电源单片机、DS18B20用的5V标准的TT

12、L电平逻辑,这里给出使用L7805产生5V电源的电路。 图2 7805产生5V电源L7805是非常普通的线性稳压芯片,其输出最大电流为1.5A,但是由于它是线性电源,其发热功率与输入与输出电压差以及负载电流的大小乘积正相关。为了尽量减小功耗,在输入和输出端都使用了电容滤波,抑制电压电流的波动。3.2 AT89S52单片机小系统模块设计3.2.1 AT89S52单片机简介AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可

13、编程,亦适于常规编程器。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3.2.2 单片机最小系统电路单片机工作的基本要求包括必要的5V电源(40引脚),接地(20引脚),晶

14、振电路(18、19引脚),复位电路(9引脚)以及使用内部存储器需要给31脚接高。 图3 AT89S52最小系统电路图3.3 LCD1602液晶显示器显示模块设计该款液晶显示器与单片机通信属于串行口数据通信方式,可以直接与单片机引脚连接,接受5V电平逻辑。 图4 小液晶连接电路3.4 DS18B20温度采集模块设计3.4.1 DS18B20简介DS18B20数字温度计是Dallas公司生产的1Wire器件,即单总线器件。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化成串行数字信号,以供单片机处理,具有连线简单、微型化、低功耗、高性能、抗干扰能力强、精度高等特点。因此用它来组成一个测

15、温系统,具有电路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。目前已被众多行业进行广泛的运用(锅炉、温控表粮库、冷库、工业现场温度监控、仪器仪表温度监控、农业大棚温度监控等)。通过编程,DS18B20可以实现912位的温度读数。3.4.2 温度检测部分电路温度检测部分很简单,因为信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线就可以正常工作,这里我还是给它接入了电源线。图5 温度检测部分电路3.5 键盘输入温度设定模块设计为了简便,我只使用了3个独立按键作为按键输入,分别作为设置键(移位键)、增加键、减小键。最开始在板

16、子上用了4个按键,有一个没有用。图6 按键检测电路3.6 可控硅驱动模块设计可控硅使用的型号是BT137,配合使用光耦MOC3021驱动它,MOC3021又用了一个PNP三极管来驱动,这里也就是运用了两级驱动来控制强电的灯泡亮灭,完全隔离保证安全。图7 可控硅驱动部分电路4 系统软件设计整个软件系统的流程图绘制在下面图中。系统初始化液晶显示 是否按键重设温度重设温度Y开中断N读一次温度显示当前温度和设定温度再读一次温度判断正确性并显示现实判断PID调光检测温度=设定温度 NY声光报警 Y图8 软件流程图4.1 液晶显示程序设计该龙丘小液晶可以显示不同字号的汉字或者字符,但是比较麻烦的是,该液晶

17、没有解码汉字的芯片,所以要输出显示都要先使用一款“汉字取模软件”。这也使得我在程序中加入汉字取点的数组以后,程序体积增大了很多,最终代码段接近8K。液晶程序结构如下:先定义各端口为sbit lcdrs=P20;/定义lcdrs脚sbit lcdwr=P21;/定义lcdwr脚sbit lcde=P22;/定义lcde脚uchar tm=0123456789;/定义字符数组uchar no=now temp=;uchar set=set temp=;/定义字符串显示uchar sn=input st=;/定义设置时字符串 void write_com(uchar com) P0=com;/将数据

18、送入P2口,即写入指令或地址lcdrs=0;lcdwr=0;/根据规定,RS和R/W同时为低电平时,可以写入指令delaynms(5);lcde=0;delaynms(5);lcde=1;/*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:dat(为字符常量)*/void write_dat(uchar dat)P0=dat;/将数据送入P2口,即将数据写入液晶模块lcdrs=1;lcdwr=0;/RS为高电平,RW为低电平时,可以写入数据delaynms(5);lcde=0;delaynms(5);lcde=1;/*函数功能:对LCD的显示模式进行初始化设置*/4.2 温度检

19、测程序设计DS18B20采集温度的精度可以设置,我们使用了最高精度的模式,也就是12位。其源码在官方资料上以及网上随处可见,经过修改后,该模块简化程序如下。uchar ds18b20_temp()/18B20读温度函数uchar temp=0,temph=0,templ=0;ds18b20_reset();/将DS18B20初始化ds18b20_write(0xcc);/ 跳过读序号列号的操作ds18b20_write(0x44);/ 启动温度转换delaynms(10); /转换一次需要延时一段时间 ds18b20_reset();/将DS18B20初始化ds18b20_write(0xcc

20、);/跳过读序号列号的操作ds18b20_write(0xbe);/读取温度寄存器,前两个分别是温度的低位和高位 templ=ds18b20_read();/将读取到的温度的低位存在templ中temph=ds18b20_read();/高位存在temph中temp=temph*16+templ/16;/读出温度整数部分,2位xs=(templ%16)*10/16;/读出温度的小数部分,1位return temp;/返回温度的整数部分5 心得体会 通过本次制作恒温箱,对于计算机控制系统有更实际的了解,以前学习的知识,都是基于理论,就算是实验课,器材也是学校已经弄好了,我们做实验基本就是连接线路

21、,也根本了解的不深入。但是,这次的课程设计,不但要我们自己买器材,更要我们设计电路、画出电路图、画出PCB、最终焊接成一块板子,然后调试板子,板子硬件调试差不多了又要设计程序。这样一个控制系统涵盖了以计算机控制系统课程为核心的单片机原理及应用、自动控制原理等相关课程知识,提供了真正将理论课程所学的知识应用于实践的平台。从硬件的搭建到软件算法的探索都需要扎实的理论基础。在涉及光耦驱动晶闸管电路的设计过程中还考察了器件选型的重要性,对于箱体的设计还考察了学生对于实际的考虑。整个设计过程需要工程的思想。恒温箱顾名思义就是要让温度基本恒定在一个我们期望的值,所以在设计程序时,就要想一个算法来控制单片机

22、,使之能够恒定温度。当然对于这种控制,最好的算法莫过于PID算法,因为此法简单而有效,工业上也有很多的应用,如果需要更精确的控制,可以再PID的基础增加一些算法,比如模糊控制、鲁棒控制等。 通过这次的设计制作,我学习到了如何把理论上的东西运用到实践当中,并且对于PID参数的调整有了更加深入的理解,体会颇深,对于以后做项目又增加了不少经验。参考文献1 单片机原理与应用/戴胜华等-北京:清华大学出版社;北京交通大学出版社,2005.4 2 51单片机快速入门/徐玮等-北京:机械工业出版社,2011.113 C 语言程序设计/戴胜华等-北京:清华大学出版社,2004 单片机原理与应用/戴胜华等-北京

23、:清华大学出版社;北京交通大学出版社,2005.4 5 计算机控制系统/高金源等-北京:清华大学出版社,2007.1附录一 电路原理图附录二 主函数完整程序/*恒温箱系统程序*/*工作流程:通过按键输入设定希望达到的温度值,确定后单片机输出脉冲控制灯泡加热,期间DS18B20不断检测温度并将之显示在LCD1602液晶屏上,同时液晶屏也显示设定的温度值,当实际温度和给定温度误差在0.1度范围内一段时间后,LED发光,蜂鸣器发出一定频率的声音,表示系统已达到平衡,经过大概5s后停止发光和鸣叫;重新设定给定后,重新达平衡则再次发光和鸣叫。恒温箱内温度保持在给定值加减允许的误差范围内。*/#inclu

24、de /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件#define uchar unsigned char/宏定义uchar#define uint unsigned int/宏定义uintsbit CF=P24; /定义触发脉冲发送引脚 /*以下是延时函数模块*/*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i4;i+) for(j=0;j33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/void delaynm

25、s(unsigned int n)unsigned int i;for(i=0;in;i+) delay1ms();/*以下是DS18B20的操作程序 */ sbit DQ=P23;/定义18B20数据引脚uchar time;/设置全局变量,专门用于严格延时uchar xs;/存放读取温度的小数位/*函数功能:将DS18B20传感器初始化*/void ds18b20_reset()/18b20复位函数while(1)DQ=1;DQ=0;time=250; /540us延时,当delay=1时延时为2us ,T=2*xwhile(-time);DQ=1;time=25;while(-time)

26、;while(DQ=0) time=220; while(-time); if(DQ) break; time=150;while(-time);break; /*函数功能:向DS18B20写入一个字节数据入口参数:dat*/ void ds18b20_write(uchar dat)/18B20写函数uchar i=0;for (i=0; i8; i+) DQ=0;/将数据线从高拉低时即启动写时序 DQ=dat&0x01;/利用与运算取出要写的某位二进制数据, /并将其送到数据线上等待DS18B20采样for(time=0;time=1;/将dat中的各二进制位数据右移1位for(time=

27、0;time25;time+);/稍作延时,给硬件一点反应时间 /*函数功能:从DS18B20读取一个字节数据出口参数:dat*/uchar ds18b20_read()/18B20读函数uchar i=0,dat=0;/储存读出的一个字节数据for (i=0;i8;i+) DQ=1; DQ=0; _nop_();_nop_();_nop_();_nop_();/延时4个机器周期,给系统反应时间 DQ=1;/拉高数据线 _nop_();_nop_();_nop_();_nop_();/延时4个机器周期,给系统反应时间 if(DQ) dat|=0x01i; time=25; while(-tim

28、e); DQ=1;/拉高数据线 _nop_(); return(dat);/返回读出的十六进制数据/*函数功能:从DS18B20读取温度出口参数:temp*/uchar ds18b20_temp()/18B20读温度函数uchar temp=0,temph=0,templ=0;ds18b20_reset();/将DS18B20初始化ds18b20_write(0xcc);/ 跳过读序号列号的操作ds18b20_write(0x44);/ 启动温度转换delaynms(10); /转换一次需要延时一段时间 ds18b20_reset();/将DS18B20初始化ds18b20_write(0xc

29、c);/跳过读序号列号的操作ds18b20_write(0xbe);/读取温度寄存器,前两个分别是温度的低位和高位 templ=ds18b20_read();/将读取到的温度的低位存在templ中temph=ds18b20_read();/高位存在temph中temp=temph*16+templ/16;/读出温度整数部分,2位xs=(templ%16)*10/16;/读出温度的小数部分,1位return temp;/返回温度的整数部分/*以下是LCD1602液晶模块的操作程序 */sbit lcdrs=P20;/定义lcdrs脚sbit lcdwr=P21;/定义lcdwr脚sbit lcd

30、e=P22;/定义lcde脚uchar tm=0123456789;/定义字符数组uchar no=now temp=;uchar set=set temp=;/定义字符串显示uchar sn=input st=;/定义设置时字符串 /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:com*/void write_com(uchar com) P0=com;/将数据送入P2口,即写入指令或地址lcdrs=0;lcdwr=0;/根据规定,RS和R/W同时为低电平时,可以写入指令delaynms(5);lcde=0;delaynms(5);lcde=1;/*函数功能:将数据(字符的标准A

31、SCII码)写入液晶模块入口参数:dat(为字符常量)*/void write_dat(uchar dat)P0=dat;/将数据送入P2口,即将数据写入液晶模块lcdrs=1;lcdwr=0;/RS为高电平,RW为低电平时,可以写入数据delaynms(5);lcde=0;delaynms(5);lcde=1;/*函数功能:对LCD的显示模式进行初始化设置*/void init()delaynms(15);/延时15ms,首次写指令时应给LCD一段较长的反应时间write_com(0x38);/显示模式设置:162显示,57点阵,8位数据接口delaynms(5);/延时5ms,给硬件一点反

32、应时间write_com(0x38);delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x38);/连续三次,确保初始化成功delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x0c); /显示控制:显示开,光标关,闪烁关delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x06); /输入方式设置:数据读写操作后,AC自动加1,画面不动delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x01);/清屏幕指令,将以前的显示内容清除delaynms(5);/延时5ms,给硬件一点反应时间/

33、*函数功能:LCD在第一行显示now temp= . C 字符串*/void lcdnt()uchar i;write_com(0x80);for(i=0;i9;i+)write_dat(noi);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0b);write_dat(.);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0d);write_dat(0xDF);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0e);write_dat(C);delay1ms();/延时1ms给

34、硬件一点反应时间/*函数功能:LCD在第二行显示set temp= . C 字符串*/void lcdgg()uchar i;write_com(0x80+0x40);for(i=0;i9;i+)write_dat(seti);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x40+0x0b);write_dat(.);delay1ms();/延时1ms给硬件一点反应时间?write_com(0x80+0x40+0x0d);write_dat(0xDF);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x40+0x0e);

35、write_dat(C);delay1ms();/延时1ms给硬件一点反应时间/*函数功能:设置模式下LCD在第二行显示input st字符串*/void lcdst()uchar i;write_com(0x80+0x40);for(i=0;i9;i+)write_dat(sni);delay1ms();/延时1ms给硬件一点反应时间/*函数功能:LCD显示当前实际温度的个、十位和小数位入口参数:sw,gw,xs*/void lcdntemp(uchar sw,uchar gw,uchar xs)write_com(0x80+0x09);/指针的位置移至第一行第9个位置write_dat(tmsw);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0a);write_dat(tmgw);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0c);write_dat(tmxs);delay1ms();/延时1ms给硬件一点反应时间/*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁