恒温箱温度计算机控制系统设计..doc

上传人:豆**** 文档编号:33494336 上传时间:2022-08-11 格式:DOC 页数:18 大小:119KB
返回 下载 相关 举报
恒温箱温度计算机控制系统设计..doc_第1页
第1页 / 共18页
恒温箱温度计算机控制系统设计..doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

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

1、精品文档,仅供学习与交流,如有侵权请联系网站删除西南科技大学计算机控制系统报告设计名称: 恒温箱温度计算机控制系统设计 姓 名: XXX 学 号: XXX 班 级: 自动09XX 指导教师: 聂诗良 起止日期: 2012.10.15-2012.11.15 西南科技大学信息工程学院制【精品文档】第 18 页设 计 任 务 书学生班级: 自动0903 学生姓名: XXX 学号: 2009XXX 设计名称: 恒温箱温度计算机控制系统设计 起止日期: 10月15日11月15日 指导教师: 聂诗良 设计要求: 设计52单片机的恒温箱控制系统设计时,需要考虑下面几个方面的内容:选择合适的温度传感器芯片。显

2、然,本文中的核心器件是单片机和温度传感器,单片机采用常用的51单片机即可,而温度传感器的选择则需慎重。单片机和温度传感器的接口电路设计。控制温度传感器实现温度信息采集以及数据传输的软件设计。恒温箱温度计算机控制系统设计摘要:本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件DS18B20作为温度采集器,单片机AT89C51作为主控芯片,液晶作为显示输出,实现了对温度的实时测量与恒定控制。关键词:恒温,AT89S52 单片机,温度传感元件The incubator temperature computer control system designAbstract: The des

3、ign from the actual application to select a small size, and relatively high accuracy digital temperature sensing element DS18B20 as temperature collector, AT89C51 microcontroller as the master chip, digital tube display output to achieve real-time measurement of temperature and constant control .Key

4、word: Thermostat. AT89S52 microcontroller; Temperature sensor element; 1设计目的和意义利用AT89S52对温度进行控制,采用单总线传输方式的DS18B20作为温度传感器,与按键、液晶显示、报鸣器等外部辅助硬件共同组成一个温度控制系统,实现温度的自我调节。2控制要求1)温度采集传感器采用热电阻或热电偶,或一体化数字温度传感器DS18B20。(2)控制灯泡亮度或发热量,采用继电器开关控制或用可控硅平滑控制。(3)采用单片机或PLC作为控制器。(4)采用LED或LCD或PC机的液晶显示器作为显示器,同时显示给定温度和实际温度。(

5、5)采用自制按键或PC机的键盘作为温度给定值输入。(6)恒温箱实际温度达到给定值时(误差要求1)需声光提示,声音时延5秒后停止。(7)恒温箱最高温度50。(8)系统操作流程是:1)确认系统连接就绪,无安全隐患;2)系统上电;3)设置温度给定值后,启动系统工作,系统进入温度自动控制工作状态。4)系统工作完毕后,若不需系统工作,则可关闭系统电源,查看并确保系统无安全隐患后可离开。3.系统总体结构设计温度控制系统是一个过程控制系统,组成框图如图 1 所示 控制器执行器温度传感器被控对象 计算机控制系统框图 图1本系统中 CPU 选择为AT89S52单片机,执行器为可控硅,控制加热灯泡通断,检测装置为

6、ds18B20温度传感器,采集温度并反馈给单片机。另外还有键盘输入部分、显示部分以及报警部分。总体框图如下LCD1602报警DS18B20AT89S52键盘输入可控硅灯泡图2 系统原理框图图3基本硬件电路图4功能模块根据上面对工作流程的分析,系统软件可以分为以下几个功能模块:(1) 键盘管理:监测键盘输入,接收温度预置,启动系统工作。(2) 显示:显示设置温度及当前温度。(3) 温度检测及温度值变换:完成A/D转换及数字滤波。(4) 温度控制:根据检测到的温度控制电灯泡工作。(5) 报警:当预置温度或当前炉温越限时报警。系统硬件设计DS18B20测温电路DS18B20数字温度计是Dallas公

7、司生产的1Wire器件,即单总线器件。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化成串行数字信号,以供单片机处理,具有连线简单、微型化、低功耗、高性能、抗干扰能力强、精度高等特点。因此用它来组成一个测温系统,具有电路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。目前已被众多行业进行广泛的运用(锅炉、温控表粮库、冷库、工业现场温度监控、仪器仪表温度监控、农业大棚温度监控等)。通过编程,DS18B20可以实现912位的温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源

8、可以由数据线本身提供,而不需要外部电源。每片DS18B20在出厂时都设有唯一的产品序列号,因此多个DS18B20可以挂接于同一条单线总线上,这允许在许多不同的地方放置温度传感器,特别适合于构成多点温度测控系统。DS18B20的特点介绍(1) 独特的单线接口方式,与单片机通信只需一个引脚,DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯(2) 在使用中不需要任何外围元件。 (3)可用数据线供电,电压范围:+3.0+5.5 V。 (4)测温范围为-55 +125 。在-10+85范围内误差为0.5 。 (5)通过编程可实现912位的数字读数方式。 (6)用户可

9、自设定非易失性的报警上下限值。 (7)支持多点组网功能,通过识别芯片各自唯一的产品序列号从而实现单线多挂接,多个DS18B20可以并联在唯一的线上,简化了分布式温度检测的应用,实现多点测温。 (8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。单线(1-wire)技术目前常用的微机和外设之间数据传输的串行总线有I2C总线、SPI总线等,其中,I2C总线采用同步串行两线(一根时钟线、一根数据线)方式,而SPI总线采用同步串行三线(一根时钟线、一根输入线和一根数据出线)方式。这两种总线需要至少两根或两根以上的信号线。美国达拉斯半导体公司推出了一项特有的单线(1-wire)技术。

10、该技术与上述总线不同,它采用单根信号线,即可传输时钟,又能传输数据,而且数据传输是双向的,因而这种单线技术具有线路简单、硬件开销少、成本低廉、便于扩展的优点。单线技术适用于单主机系统,单主机能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单线器件,它们之间的数据交换、控制都由这根线完成。主机或从机通过一个漏极开路或三态端口连至数据线,以允许设备在不发送数据时能够释放该线,而让其他设备使用。单线通常要外接一个约5K的上拉电阻,这样,当该线闲置时,其状态为高电平。主机和从机之间的通信主要分3个步骤:初始化单线器件、识别单线器件和单线数据传输。由于只有一根线通信,所以它们必须是严格的主从结

11、构,只有主机呼叫从机时,从机才能应答,主机访问每个单线器件必须严格遵循单线命令序列,即遵守上述3个步骤的顺序。如果命令序列混乱,单线器件将不会响应主机。所有的单线器件都要遵循严格的协议,以保证数据的完整性。1-wire协议由复位脉冲、应答脉冲、写0、写1、读0和读1这几种信号类型组成。这些信号中,除了应答脉冲,其他均由主机发起,并且所有命令和数据都是字节的地位在前DS18B20的引脚及功能介绍DS18B20的外形及TO92封装引脚排列见左图,其引脚功能描述见表1,实测温度和数字输出的对应关系见表2.表1 DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。

12、开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。表2 温度值分辨率配置表温度数字输出(二进制)数字输出(十六进制)+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2h+0.50000 0000 0000 10000008H00000 0000 0000 0000000H-0.51111 1111 1111 0000FFF8H-10.1

13、251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FF6FH-551111 1100 1001 0000FC90HDS18B20的使用方法由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。 由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:

14、初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 DS18B20的复位时序,置总线为低电平并保持至少480us,然后拉高电平,等待从端重新拉低电平作为响应,则总线复位完成。(1) DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序

15、过程,至少需要60us才能完成。 (3) DS18B20的写时序 ,对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 (4) DS18B20在电路中的连接,见图4。1- wire总线支持一主多从式结构,硬件上需外接上拉电阻。当一方完成数据通信需要释放总线时,只需将总线置高点平即可;若需要获得总线进行通信时则要监视总线是否空闲,若空闲,则置低电平

16、获得总线控制权。图4 DS18B20测温电路DS18B20采集温度程序如下: #include/=DS18b20模块初始化=/sbit DQ = P27;/-delayDs18b20延时函数void delayDs18b20(uint i)/延时函数 while(i-);/-18b20初始化函数void Init_DS18B20(void) DQ = 1; /DQ复位 delayDs18b20(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delayDs18b20(80); /精确延时 大于 480us DQ = 1; /拉高总线 delayDs18b20(20);/-读一个字节uc

17、har ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delayDs18b20(5); return(dat);/-写一个字节void WriteOneChar(uchar dat) uchar i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delayDs18b20(5); DQ = 1; dat=1;delayDs18b20(5);/-读取温度float ReadTe

18、mperature(void)uchar TH=0;uchar TL=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delayDs18b20(200);Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度TL=ReadOneChar();TH=ReadOneChar();return(TH*256+TL)*0.0625);键盘管理模块当通电或复位以后,系

19、统进入键盘管理状态,单片机只接收设定温度和启动。当检测到有键闭合时先去除抖动,这里采用软件延时的方法,延时一段时间后,再确定是否有键闭合,然后将设定好的值送入预置温度数据区,并调用温度合法检测报警程序,当设定温度超过最大值如90时就会报警,最后当启动键闭合时启动加热。键盘设定:用于温度设定。共三个按键。 KEY1(P1.1):温度设置确认;温度重新设置。KEY2(P1.2): 设置温度“+”。KEY3(P1.3): 设置温度“-”。 KEY4 (P1.4) :状态切换。系统上电后,液晶显示器全部显示为零,根据按 KEY1 次数,决定显示的状态,根据相应的状态,利用KEY2、KEY3进行加减,当

20、温度设定好之后,再按KEY4确定,系统开始测温,开启加热器。按键程序 #include/=键盘延时函数=/void DelayKeyms(int z) int i,j;for(j=z;j=0;j-)for(i=110;i=0;i-);/=键盘扫描函数=/sbit SET=P10;sbit UP=P11;sbit DOWN=P12;sbit OUT=P13;uchar count=0;uchar OutFlag=0;float TempSet=25.0;float temp;/*uchar KeyScan(void)if(Key1=0)DelayKeyms(10);if(Key1=0)while

21、(!Key1);return 1;if(Key2=0)DelayKeyms(10);if(Key2=0)while(!Key2);return 2;if(Key3=0)DelayKeyms(10);if(Key3=0)while(!Key3);return 3;return 0;void SetKey() /模式选择 if(SET=0) DelayKeyms(10); if(SET=0) count+; if(count2) count=1; while(SET=0);void UpKey() /按键加 if(UP=0) DelayKeyms(10); if(UP=0) switch(coun

22、t) case 1:temp=TempSet; temp=temp+1; if(temp50.0) temp=20.0; TempSet=temp; break; case 2:temp=TempSet; temp=temp+0.1; if(temp50.0) temp=20.0; TempSet=temp; break; default:break; while(UP=0);void DownKey() /按键减 if(DOWN=0) DelayKeyms(10); if(DOWN=0) switch(count) case 1:temp=TempSet; temp=temp-1; if(t

23、emp20.0) temp=50.0; TempSet=temp; break; case 2:temp=TempSet; temp=temp-0.1; if(temp1) OutFlag=0; while(OUT=0);void keyDone() /按键功能执行 dispaly(0x80,Tem:,ReadTemperature(),C); dispaly(0x80+0x40,Set:,TempSet,C); SetKey(); switch(count) case 1: UpKey(); DownKey(); dispaly(0x80+0x40,Set:,TempSet,C); brea

24、k; case 2: UpKey(); DownKey();dispaly(0x80+0x40,Set:,TempSet,C); break; default:break; OutKey(); LCD显示电路. 1602液晶也叫1602 字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。1602LCD 主要技术参数:显示容量:162 个字符,芯片工作电压:4.55.5V ;工作电流:2.0mA(5.0V);模块最佳工作电压:5.0V; 字符尺寸:2.954.35(WH)mm; 本系统通过 LCD160

25、2 显示预设以及实际的温度,并能显示灯泡现在处于的状态是加热还是停止加热。其程序如下 :#include/=液晶初始化及显示模块=/sbit RS=P20; /数据/命令选择端sbit RW=P21; /读/写选择端sbit E=P22; /使能端uchar table10=0,1,2,3,4,5,6,7,8,9;/-delay延时函数void delay1602(int z) int i,j;for(j=z;j=0;j-)for(i=11;i=0;i-);/-写com为命令void write_com(uchar com) E=0;RS=0; RW=0;P0=com;E=1; delay16

26、02(20);E=0; RS=1;/-写dat为数据void write_dat ( uchar dat )E=0; RS=1; RW=0;P0=dat;E=1;delay1602(20); E=0; RS=0; /-初始化液晶屏void init_1602()write_com(0x38);delay1602(50); write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);/-液晶显示函数/-address为显示地址:/0x80-第一行,0x80+0x40-第二行/-mean为意义字符串

27、/-value为显示值/-unit单位字符串void dispaly(uchar address,uchar mean,float value,uchar unit)uchar *pt;int Val;write_com(address);for(pt=mean;*pt!=0;pt+)write_dat(*pt);Val = (int)(value*10);write_dat(tableVal/100);write_dat(tableVal%100/10);write_dat(.);write_dat(tableVal%10);for(pt=unit;*pt!=0;pt+)write_dat(

28、*pt);PI计算程序如下: #includefloat ErrorNew;float ErrorSum;uchar PIControl(float Kp,float Ki,float tset,float tfeedback) int Result=0; ErrorNew = tset-tfeedback; ErrorSum+=ErrorNew; if(ErrorSum 400.0) ErrorSum = 400.0; if(ErrorSum=36) Result = 36; if(Result=7) Result = 7; Result = 40-Result; return Result

29、;系统软件设计1程序结构框架主程序模块键盘输入LCD显示DS18B20采集温度PI计算程序结构框架图主程序模块相当于调度室,对子程序模块的调用进行管理,它主要负责初始化 IO 口; 等待键盘被按下,并调用相应的模块进行处理;显示温度控制过程;在适当的时候通过 DS18B20 检测实际温度, 并与所设定的值进行比较,判断报警并通过调用 PID 算法处理数据,处理后来控制可控硅的通断,从而控制恒温箱达到控制温度的目的。系统调试与仿真1, 硬件调试根据设计的原理电路做好实验样机,便进入硬件调试阶段。调试工作的主要任务是排除样机故障,其中包括设计错误和工艺性故障。1.1 脱机检查用万能表或逻辑测试笔逐

30、步按照逻辑图检查机中各器件的电源及各引脚的连接是否正确,检查数据总线、地址总线和控制总线是否有短路等故障。有时为保护芯片,先对各管座的电位(或电源)进行检查,确定其无误后再插入芯片检查。1.2仿真调试暂时排除目标板的CPU和EPROM,将样机接上仿真机的40芯仿真插头进行调试,调试各部分接口电路是否满足设计要求。这部分工作是一种经验性很强的工作,一般来说,设计制作的样机不可能一次性完好,总是需要调试的。通常的方法是,先编调试软件,逐一检查调试硬件电路系统设计的准确性。1.2 检查CPU的时钟电路通过测试ALE信号,如没有ALE信号,则判断是晶体或CPU故障,这称之为“心脏”检查。检查ABUS/

31、DBUS的分时复用功能的地址锁存是否正常。检查I/O地址分配器。一般是由部分译码或全译码电路构成,如是部分译码设计,则排除地址重叠故障。2软件调试 软件调试 软件调试根据开发的设备情况选择不同的调试方法总结通过本次的恒温箱温度计算机控制系统设计我学习到了许多东西,也认识到了许多我的不足之处,加深了对52单片机的理解,也丰富了我的课余时间,增强了我的动手能力,使我能更好的把理论知识与实际设计更好的结合起来。经过老师的指导和同学的帮助,加强了我的分析,动手能力,使我能从更多的方面去考虑问题。参考文献1 单片机原理与应用/戴胜华等-北京:清华大学出版社;北京交通大学出版社,2005.4 2AVR 单

32、片机快速入门/徐玮等-北京:机械工业出版社,2011.113 C 语言程序设计/戴胜华等-北京:清华大学出版社,2004 单片机原理与应用/戴胜华等-北京:清华大学出版社;北京交通大学出版社,2005.4 5 计算机控制系统/高金源等-北京:清华大学出版社,2007.1 附录 系统源程序#includesbit Controlpin=P26;sbit Light=P25;sbit Beep=P24;/=延时函数=/void Delayms(int z) int i,j;for(j=z;j=0;j-)for(i=110;i=0;i-);/=主函数=/uchar beepflag=0;uchar

33、Be_LiFlag=0;extern float TempSet;float TempReal=0;uchar ExpectTime=0;void main()/初始化定义/uchar k;float TempNew = 0;float TempOld1 = 0;float TempOld2 = 0;init_1602();XInterruptInit();TimerInit();Beep =1;Controlpin=1;while(1) /键盘数据处理 /蜂鸣器报警 OutKey(); while(OutFlag=0) keyDone(); Light=1; beepflag=0; if(T

34、empSet=TempReal&!beepflag) Be_LiFlag+; if(Be_LiFlag=1) Be_LiFlag=0; Beep =0; Light=0; Delayms(5000); Beep =1; beepflag=1;/液晶显示数据/读取温度TempNew = ReadTemperature();if(TempNew(TempOld1-1)&TempNew(TempOld2-1)&TempNew(TempOld2+1)TempReal = TempNew;TempOld1 = TempNew;TempOld2 = TempOld1;/ExpectTime = PICon

35、trol(18,0.061 ,TempSet,TempReal);dispaly(0x80,Tem:,TempNew ,C); dispaly(0x80+0x40,Set:,TempSet,C);/=中断处理=/void OutIn() interrupt 0/TR0 = 1;if(TempRealTempSet)Controlpin = 0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();Controlpin = 1;/*void Timer0() interrupt 1static char time=0;TH0 = (65535-250)/256;TL0 = (65535-250)%256;time+;if(time=ExpectTime) Controlpin = 0; _nop_(); _nop_(); _nop_();Controlpin = 1;time = 0;TR0 = 0;附录电路原理图一电路原理图二

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

当前位置:首页 > 教育专区 > 小学资料

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

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