基于单片机的PID温度控制器研究【开题报告+文献综述+毕业设计】

基于单片机的PID温度控制器研究【开题报告+文献综述+毕业设计】

ID:471663

大小:1006.53 KB

页数:48页

时间:2017-08-07

上传者:U-944
基于单片机的PID温度控制器研究【开题报告+文献综述+毕业设计】_第1页
基于单片机的PID温度控制器研究【开题报告+文献综述+毕业设计】_第2页
基于单片机的PID温度控制器研究【开题报告+文献综述+毕业设计】_第3页
基于单片机的PID温度控制器研究【开题报告+文献综述+毕业设计】_第4页
基于单片机的PID温度控制器研究【开题报告+文献综述+毕业设计】_第5页
资源描述:

《基于单片机的PID温度控制器研究【开题报告+文献综述+毕业设计】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

毕业设计开题报告电气工程与自动化基于单片机的PID温度控制器研究一、选题的背景与意义在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的被控参数。其中,温度是生产过程和科学实验中普遍而且重要的物理参数。在很多领域都要涉及到温度,如化工生产、冶金工业、机械制造、电加热炉及家用电器等,均需要用加热器来加热,并对温度进行测量和控制。采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量。本课题是结合生产实际的科研工作,以单片机为核心,运用PID算法对温度进行控制,以达到较好的控制效果。其中PID控制是较早发展起来的控制方法之一,具有算法简单、鲁棒性好、可靠性高等优点,因此被广泛运用与工业控制中。当用计算机实现后,数字PID控制更是有参数调整灵活、算法变化多样、简单方便的优点。随着生产的发展,对控制的要求会越来越高,随之发展出许多以计算机为基础的新型控制算法,如自适应PID控制、模糊PID控制、智能PID控制等等。二、研究的基本内容与拟解决的主要问题:本次设计主要任务是基于单片机的PID温度控制器研究。采用单片机AT89C51为核心处理器,用温度传感器AD590采集温度变化信号,A/D采样芯片ADC0804将其转换成数字信号并通过单片机处理后去控制温度,使其达到稳定。使用单片机具有编程灵活,控制简单的优点,使系统能简单的实现温度的控制及显示,并且通过软件编程能实现各种控制算法使系统具有控制精度高的特点。拟解决的主要问题有:系统设计方案的拟定,系统硬件的选择,各控制部分的电路设计,PID参数的调节。三、研究的方法与技术路线:该温度控制系统主要由AT89C5148 单片机控制系统、前向通道(温度采样转换电路)、后向通道(温度控制电路)、键盘显示和报警电路四部分组成,其总体设计框图如下图所示。图1系统总体设计框图本次设计主要由四部分:主机控制部分(AT89C51)、温度采样和转换电路部分、温度控制电路部分、键盘显示和报警外围电路部分。1.温度采样和转换电路系统的信号采样和转换电路主要由温度传感器AD590、基准电压7812、运算放大器OP-07及A/D转换电路ADC0804四部分组成。设计电路图如图:2.温度控制电路此部分电路主要由光电耦合器MOC3041和双向可控硅BTA12组成。采用脉宽调制输出控制电炉与电源的接通和断开比例,以通断控制调压法控制电炉的输入功率。MOC3041光电耦合器的耐压值为400v,它的输出级由过零触发的双向可控硅构成,它控制着主电路双向可控硅的导通和关闭。100Ω电阻与0.01uF电容组成双向可控硅保护电路。48 3.单片机控制部分此部分是电路的核心部分,采用AT89C51单片机。AT89C51单片机内部有8KB单元的程序存储器及256字节的数据存储器。因此系统不必扩展外部程序存储器和数据存储器这样大大的减少了系统硬件部分。1.键盘显示及报警部分在设计上述电路时,我使用单片机作为电路控制的核心以实现系统的上述功能。四、研究的总体安排与进度:2010年12月:查阅资料,了解课题相关理论,熟悉课题的实现方法。掌握PID控制算法、传感器的数据采集、单片机的原理与接口技术及模拟电子与数字电子技术。2010年12月:完成开题报告和文献综述,准备开题答辩。2011年2月:完成相关外文文献翻译。2011年3月:设计并制作单片机最小系统,完成系统电路的搭建,下载程序并调试,实现对水温的PID调节并实现温度显示功能。2011年4月:进一步完善应用程序,写论文,准备毕业答辩。五、主要参考文献:[1]胡寿松.自动控制原理[M].科学出版社,2006[2]王兆安,黄俊.电力电子技术[M].机型工业出版社,2001[3]马忠梅等.单片机的C语言应用程序设计[M].北京航空航天大学出版社,2007[4]常健生.检测与转换技术[M].机型工业出版社,2009[5]赵丽娟,邵欣.基于单片机的温度监控系统的设计与实现[M].机型工业出版社,2006[6]王幸之钟爱琴.AT89系列单片机原理与接口技术[M].北京航空航天大学出版社,2004[7]孟华.工业过程检测与控制[M].北京航空航天大学出版社,2002[8]程安宇,孙士民,徐洋.基于DS18B20的单片机温度测量控制系统[D].兵工自动化,2007年第26卷第2期[9]阎石.数字电子技术基础[M].高等教育出版社,200648 [10]童诗白.模拟电子技术基础[M].高等教育出版社,2006[11]Mzhang,DPAtherton.AutomatictuningofoptimumPIDcontrollers[J].IEEEprocD,1993,140(3):216-244[12]WuZhiQiao,MasaharuMizumoto.PIDTypeFuzzyControllerandParametersAdaptiveMethod[J].FuzzySetsandSystems,1996,78:23-3548 毕业设计文献综述电气工程与自动化基于单片机的PID温度控制器研究摘要:在现代工业生产的许多环节中,温度是非常重要的一个指标。随着控制理论和电子技术的发展,温度控制器的适应能力增强和高智能化正逐步成为现实。其中以单片机为核心的数字控制器以其体积小、成本低、功能强而得到广泛应用。本文主要研究在过程控制中得到广泛应用的PID控制在单片机温度控制系统中的作用。该温度控制系统是一个典型的闭环反馈调节系统,采用一种新型的数字温度传感器(DS18B20),不需复杂的信号处理电路和A/D转换电路就能直接与单片机完成数据采集和处理,并将所得的温度值与设定温度值相比较得到偏差。通过对偏差信号的处理获得控制信号,采用PWM调节加热器的通断,从而实现对电热壶水温度的显示和控制。本文主要介绍了电热壶水温控制系统的工作原理和设计方法,论文主要由三部分构成。①系统整体方案设计。②硬件设计,主要包括温度检测电路、显示电路、键盘输入电路和控制电路等。③系统软件设计,软件的设计采用模块化设计,主要包括温度采集模块、显示模块、键盘模块、控制模块和报警模块。关键词:单片机;温度传感器;PID控制1.课题研究的目的及意义48 在现代工业生产中,电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。温度作为一个基本物理量,与人们的生产生活密切相关。在工业生产过程中,温度作为一种常用的被控参数,在许多生产过程中都需要我们对温度参数进行检测控制。例如:在化工生产、电力工程、冶金工业、造纸行业、食品加工和机械制造等领域中,人们都需要对各类加热炉、反应炉、热处理炉和锅炉中的温度进行检测控制。通常的温度控制都采用偏差控制法。偏差控制的原理是求出实测值对所需值的偏差量,然后通过对偏差量处理获得控制信号去调节加热器的功率,以实现对温度的控制。通常,对偏差进行比例、积分和微分控制称为PID控制,是一种应用较为广泛的控制形式。本课题是结合生产实际的科研工作,以单片机为核心,运用PID算法对温度进行控制,以达到较好的控制效果。PID控制是具有算法简单、鲁棒性好、可靠性高等优点,因此被广泛运用与工业控制中。采用单片机实现温度控制不仅具有控制方便、简单、灵活等优点,而且可以大幅度地提高被控温度的技术指标,从而大大提高产品的质量。2.温度控制器控制方法的发展现状和前景在过去的50年,温度控制器的控制方法从定值开关温度控制法向PID温度控制法转变。其中PID温度控制法基于经典控制理论中的PID控制原理,PID控制是较早发展起来的控制方法之一,由于其算法简单、鲁棒性好、可靠性高等优点被广泛应用温度控制中。采用这种控制方法的温度控制器,其控制效果好坏主要取决于三个PID参数,即比例值、积分值和微分值。只要PID三个参数选取适当,对于一个确定的控制系统来说,其控制精度是比较令人满意的。目前,温度控制器的控制方法从模拟PID、数字PID到最优控制、自适应控制,再发展到智能控制,每一步都使控制的性能得到改善。3.本课题研究的方法与技术路线本设计是基于单片机的PID温度控制器系统,其目的是对电热壶水温进行温度调节控制。壶内水温能够稳定在60℃,并且稳态误差符合要求。根据控制系统的设计任务和要求,采用闭环控制结构进行控制的,其具体控制图如图2-1所示。图2-1系统控制原理图3.1系统硬件电路设计该温度控制器系统硬件部分大致可以分为以下几个部分:单片机主控制电路、温度采集电路、键盘输入电路、报警电路、固态继电器控制电路及显示电路。3.1.1温度采集电路系统的信号采样电路主要由数字温度传感器DS18B20和一个电阻组成。DS18B20只需与微机的一个I/O通讯,并且不需复杂的信号处理电路和A/D转换电路就能直接与单片机完成数据采集和处理。3.1.2温度控制电路48 本温度控制系统采用通断控制,通过改变给定控制周期内加热器的导通和关断的时间,,达到调节温度的目。在本次设计中,我采用固态继电器作为控制电路主模块。3.1.3单片机控制电路此部分是系统的核心部分,采用AT89C51单片机。AT89C51单片机内部有8KB单元的程序存储器及256字节的数据存储器。加一些基本的外围电路构成单片机最小系统。3.1.4键盘输入电路此部分采用独立式按键电路,独立式按键是指直接用一根I/O口线构成的单个按键电路。每个独立式按键占一个I/O,各按键工作状态互不影响。独立式按键接口电路具有配置灵活,软件结构简单等优点,但缺点是占用大量I/O口。3.1.5报警电路该电路主要由三极管和蜂鸣器组成。由单片机的P1.4口输出高低电平信号控制三极管的导通和截止以控制蜂鸣器的发声报警。3.2系统软件设计本系统采用C语言编程,在KEIL平台上完成程序的编译及下载。其系统程序流程图如图2-2所示。图2-2系统程序流程图4.结论48 本文介绍了一种基于AT89C51单片机的水壶水温控制器,采用数字温度传感器DS18B20作为温度测量电路与单片机直接接口,应用PID算法对温度偏差进行计算,用于调节执行装置的加热功率,以达到使温度动态平衡的效果。该温度控制器控制精度高、结构简单、体积较小、测温范围宽,具有一定的实用价值。参考文献:[1]刘士荣等.计算机控制系统[M].机械工业出版社,2007.[2]王兆安,黄俊.电力电子技术[M].机型工业出版社,2001.[3]马忠梅等.单片机的C语言应用程序设计[M].北京航空航天大学出版社,2007.[4]常健生.检测与转换技术[M].机型工业出版社,2009.[5]赵丽娟,邵欣.基于单片机的温度监控系统的设计与实现[M].机型工业出版社,2006.[6]王幸之钟爱琴.AT89系列单片机原理与接口技术[M].北京航空航天大学出版社,2004.[7]孟华.工业过程检测与控制[M].北京航空航天大学出版社,2002.[8]程安宇,孙士民,徐洋.基于DS18B20的单片机温度测量控制系统[D].兵工自动化,2007年第26卷第2期.[9]阎石.数字电子技术基础[M].高等教育出版社,2006.[10]童诗白.模拟电子技术基础[M].高等教育出版社,2006.[11]胡寿松.自动控制原理[M].科学出版社,2006.[12]Mzhang,DPAtherton.AutomatictuningofoptimumPIDcontrollers[J].IEEEprocD,1993,140(3):216-244.[13]WuZhiQiao,MasaharuMizumoto.PIDTypeFuzzyControllerandParametersAdaptiveMethod[J].FuzzySetsandSystems,1996,78:23-35.[14]Zhi-WeiWoo,Hung-YuanChung,Jin-JyeLin.APIDtypefuzzycontrollerwithself-tuningscalingfactors[J].FuzzySetsandSystems,2000,115:321-326.[15]T.P.Blanchett,G.C.Kember,R.Dubay.PIDgainschedulingusingfuzzylogic[J].ISATransactions,2000,39:317-325.48 本科毕业设计(20届)基于单片机的PID温度控制器研究48 摘要【摘要】在现代工业生产的许多环节中,温度是非常重要的一个指标。随着控制理论和电子技术的发展,温度控制器的适应能力增强和高智能化正逐步成为现实。其中以单片机为核心的数字控制器以其体积小、成本低、功能强而得到广泛应用。本文主要研究在过程控制中得到广泛应用的PID控制在单片机温度控制系统中的作用。该温度控制系统是一个典型的闭环反馈调节系统,采用一种新型的数字温度传感器(DS18B20),不需复杂的信号处理电路和A/D转换电路就能直接与单片机完成数据采集和处理,并将所得的温度值与设定温度值相比较得到偏差。通过对偏差信号的处理获得控制信号,采用PWM调节加热器的通断,从而实现对电热壶水温度的显示和控制。【关键词】单片机;温度传感器;PID控制。48 Abstract【ABSTRACT】Inmanylinksofmodernindustrial,temperatureisanimportantindicator。Withtheimprovementofcontroltheoryandelectrictechnology,theintelligentcontrolforindustryhasbeenaccomplishing.ThedigitalcontrollerbasedonMicrocontrollerhasbeenappliedwidely,asitscabinetcubage,low-cost,abundantfunction.ThepapermainlyintroducestheapplicationofthedigitalPIDcontrolalgorithm,which,atpresent,ispopularlyusedindigitalcontrolsystem,inMicrocontrollertemperaturecontrolsystem.Thistemperaturecontrolsystemisaclosedloopfeedbackcontrolsystem,whichuseanewprogrammabletemperaturesensor(DS18B20).ThistemperaturesensorcandirectlycompletesdataacquisitionandprocessingwithoutcomplexsignalprocessingcircuitandA/Dcircuit,andgetthedeviationbetweengettingtemperatureandsettingtemperature.Throughprocessingthedeviation,aPWMwillbeproduced,whichadjuststheheaterpower,thusthewatertemperatureinelectricpotcontrolanddisplayisrealized.【KEYWORDS】Microcontroller;Temperaturesensor;PIDcontrol。48 目录1.绪论11.1选题的背景及意义11.2温度测控技术的发展现状11.2.1定值开关温度控制法21.2.2PID温度控制法21.3系统总体设计方案21.3.1系统设计技术指标21.3.2系统功能21.3.3系统硬件方案分析31.3.4系统软件方案分析31.4本文主要工作及章节安排31.4.1本文主要工作31.4.2本文章节安排42.温度控制系统总体设计52.1系统设计方案52.2控制系统工作原理53PID温度控制器系统硬件设计63.1单片机主控模块63.1.1AT89C51简介63.1.2AT89C51各管脚说明63.1.3时钟电路设计73.1.4复位电路设计83.2温度采集模块电路设计83.2.1DS18B20的特点83.2.2DS18B20内部结构93.2.3DS18B20的内存结构93.2.4温度传感器DS18B20的测温原理103.2.5DS18B20与单片机的接口电路113.3键盘输入电路设计1148 3.4报警电路设计113.5加热控制电路设计123.5.1固态继电器工作原理123.5.2固态继电器的特点123.5.3加热控制电路133.6LCD显示电路设计133.6.1LCD1602各管脚说明133.6.2LCD1602与单片机的接口电路134系统软件设计154.1程序模块154.1.1主程序154.1.2温度传感器子程序164.1.3键盘输入子程序164.1.4温度测控子程序174.1.5LCD1602显示子程序184.1.6报警子程序185PID温度控制算法195.1温度控制系统数学模型195.2PID控制器的发展195.3PID控制器算法195.4PID参数的算法206系统调试226.1硬件调试226.2软件调试22参考文献24致谢25附录2648 1.绪论1.1选题的背景及意义在现代工业生产中,电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。温度作为一个基本物理量,与人们的生产生活密切相关。在工业生产过程中,温度作为一种常用的被控参数,在许多生产过程中都需要我们对温度参数进行检测控制。例如:在化工生产、电力工程、冶金工业、造纸行业、食品加工和机械制造等领域中,人们都需要对各类加热炉、反应炉、热处理炉和锅炉中的温度进行检测控制。通常的温度控制都采用偏差控制法。偏差控制的原理是求出实测值对所需值的偏差量,然后通过对偏差量处理获得控制信号去调节加热器的功率,以实现对温度的控制。通常,对偏差进行比例、积分和微分控制称为PID控制,是一种应用较为广泛的控制形式。本课题是结合生产实际的科研工作,以单片机为核心,运用PID算法对温度进行控制,以达到较好的控制效果。PID控制是具有算法简单、鲁棒性好、可靠性高等优点,因此被广泛运用与工业控制中。采用单片机实现温度控制不仅具有控制方便、简单、灵活等优点,而且可以大幅度地提高被控温度的技术指标,从而大大提高控制精度。1.2温度测控技术的发展现状温度测控技术包括温度检测技术和温度控制技术两个方面。随着国内外科技水平的发展,温度检测技术也有了不断的进步。温度检测主要由两部分组成,一部分是传感器,它将温度信号转换为电信号。另一部分是电子装置,它主要完成对信号的接收、处理、温度显示等功能。目前传感器已经从模拟传感器向数字传感器方向发展,仪器本身也趋向小型化,多采用集成度较高的芯片或元件组成电路。对于具有报警、显示、巡测、控制等多功能测温装置,一般采用单片机电路。目前的温度检测技术原理很多,大致包括以下几种:(1)物体热胀冷缩原理(2)热电效应(3)热阻效应(4)利热辐射原理。传统的温度传感器(如,热电偶、铂电阻等)虽然各自不可替代的优点,但自身由于有自热效应影响测量精度,因而制约了其在微型高端电子产品中的应用。与之相比较,数字温度传感器具有灵敏度高、精度高、经济性好、抗干扰能力强等诸多优点,无论是电压、电流还是频率输出,在相当大的温度范围内(-55~150℃)都与温度成线性关系,适合在单片机系统外围电路中应用。48 温度控制技术按照控制目标的不同可以分为两类:动态温度跟踪与恒值温度控制。动态温度跟踪需要实现的目标是使被控对象的温度值按预先设好的曲线进行动态变化。在工业生产中很多地方需要实现这样的目标,如在冶金工厂中燃烧炉中的温度,化工生产中的化学反应温度控制等;恒值温度控制的目的是让被控对象温度能恒定在某一给定值上,且要求其稳态误差不能超过某允许值。从工业控制器的发展过程来看,温度控制技术大致可分以下两种:1.2.1定值开关温度控制法定值开关温度控制法就是通过模拟电路或软件程序判别当前温度值与设定目标温度值之间的偏差,进而对系统执行装置进行通断控制。这种方法实现比较简单,只需用简单的模拟电路即可。目前,采用这种控制方法的温度控制器只在一些老式工业电炉中仍有被使用。由于这种控制方式是模拟开关控制,无法克服温度变化过程的滞后性,因而导致被控对象温度波动较大,控制精度低,因此不适用于高精度的温度控制。1.2.2PID温度控制法PID温度控制法基于经典控制理论中的PID控制原理,PID控制是较早发展起来的控制方法之一,由于其算法简单、鲁棒性好、可靠性高等优点被广泛应用工业控制中。由于PID调节器模型中考虑了系统的误差、误差变化及误差积累三个因素,因此,其控制性能得到大大地提升。其控制电路可以采用计算机软件或模拟电路方法来实现PID调节功能。前者称为数字PID控制器,后者称为模拟PID控制器。其中数字PID控制器的变量参数能实现在线整定,有较大的灵活性,因此能得到比较好的控制效果。采用这种方法的温度控制器,其控制效果好坏主要取决于三个PID参数,即比例值、积分值和微分值。只要PID三个参数选取适当,对于一个确定的控制系统来说,其控制精度是比较令人满意的。1.3系统总体设计方案本论文所讨论的是基于单片机的PID温度控制器系统,其目的是对电热壶水温进行温度调节控制。壶内水温能够稳定在60℃,并且稳态误差符合要求。下面讨论该系统总体设计方案,包括:系统设计技术指标,系统功能以及系统软、硬件方案分析。1.3.1系统设计技术指标设计一个温度闭环反馈控制系统,主要包括主电路和控制电路。控制电路又包括温度检测比较、PID调节、执行输出等多个环节。以下为该温控系统的技术指标:(1)能在液晶屏上显示设定温度,并能显示采集的温度,显示精确到1℃。(2)能预置加热动态平衡时的温度,使其在误差范围内能实现恒温控制,温度控制误差≤±5%。(3)当采集到的温度与预置温度不同时,PID控制加热。(4)加热超过预置温度的5%时发出报警信号,且关闭电源。48 1.3.2系统功能(1)可以对温度进行自由设定,但必须在0~100℃内,设定时可以显示出设定的温度值。(2)加热由电壶电阻丝来实现,通过PID计算控制PWM,进而电壶加热功率,起到调温的作用。(3)能够保持实时显示采集到的水温。(4)能实现报警功能。1.3.3系统硬件方案分析目前,温度控制器的硬件电路一般由模拟电路和单片机组成。模拟控制电路的各控制环节一般由放大器、比较器、三极管、电容、电阻等外围元器件组成。它的优点是系统响应速度快,实现对系统的实时控制。根据计算机控制理论可知,数字控制系统的采样速率并非越快越好,它还取决于被控系统的响应特性。单片机是大规模集成电路技术发展的产物,其特点是:运算速度快、功能强大、稳定可靠、应用广泛、价格便宜。由此可见,采用单片机设计控制系统,不仅可以降低成本,精简系统结构,而且控制算法由程序实现。这样可以提高系统的兼容性和可移植性。目前,市面上的单片机种类繁多,在性能方面也各有所长。AT89C51是美国ATMEL公司设计的一款低电压,高性能的8位单片机,其内部有4K单元的程序存储器和256字节的数据存储器。本系统是选择AT89C51为核心控制器,搭配一些外围电路组成的控制系统。1.3.4系统软件方案分析目前,单片机的开发语言主要有两种:汇编语言和C语言。与汇编语言相比,C语言具有以下的特点:Ø程序有规范的结构,可分为不同的函数,可使程序结构化;Ø缩短编程及调试时间,提高效率;Ø已编好的程序容易植入新程序,具有方便的模块化编程技术;Ø程序本身不依赖机器硬件系统,有较好的可移值性。由于本系统软件比较复杂,为了便于编写、调试、修改和增删,系统程序的编制适合采用模块化的程序结构。系统软件主要由三大模块组成:主程序模块、功能实现模块和运算控制模块。主程序模块用于实现各个子程序间的跳转。功能实现模块主要由温度采集子程序、键盘输入子程序、显示子程序、报警程序、固态继电器控制程序组成。温度控制算法方面,本温度控制器系统采用了经典的PID控制算法,这是由于PID控制相对来说算法简单、鲁棒性好和可靠性高。此外,在设计PID控制器时,依靠经验和试验的方法在系统调试时确定PID控制器的参数KP、KI、KD,然后用程序实现了算法。48 1.4本文主要工作及章节安排1.4.1本文主要工作(1)在对温度控制器要求进行研究的基础上,选择了整个控制系统的设计方案;(2)完成系统的硬件设计,包括采样电路、控制电路、键盘输入电路、报警电路等的设计;(3)完成系统的软件设计,包括主程序模块、功能实现模块和运算控制模块;(4)在设计的温度控制器系统平台之上研究PID控制并改进PID参数,以达到较好的控制精度;(5)完成了系统的软、硬件调试工作。1.4.2本文章节安排第1章主要分析了温度控制系统意义,介绍了目前国内外温度测控技术的发展与现状。提出系统设计任和需要实现的功能;第2章主要介绍系统总体设计方案及工作原理;第3章主要介绍系统硬件电路原理图及一些主要元件说明;第4章介绍了系统软件各主要功能模块的设计;第5章介绍PID控制算法;第6章系统的软硬件调试48 2.温度控制系统总体设计2.1系统设计方案本系统采用单片机为控制核心,它可以方便的实现液晶屏显示、键盘设定及利用PID算法来控制PWM波形的产生,进而控制电壶电阻丝的加热功率来实现水温控制,其控制精度也大大的得到了提高。加上单片机的软件编程灵活、自由度大,可用软件编程实现各种控制算法和逻辑控制。它可以通过用数字温度传感器采集到的实际水温温度直接进行数码管显示,还能用键盘输入设定值,并且内部含有4KB的EEPROM,不需要外扩展存储器,可使系统整体结构更为简单,其系统框图如图2-1所示。图2-1系统框图2.2控制系统工作原理根据控制系统的设计任务和要求,本设计采用闭环控制结构进行控制的,其具体控制图如图2-2所示。图2-2系统控制原理图本系统是采用闭环反馈的控制方式进行控制的,它通过数字温度传感器检测壶内水温温度,把采集到的数据直接送到单片机进行处理,数字式温度传感器能在极短时间内把采集到的模拟量转换成数字量,并使之与设定值产生偏差信号以控制PWM波形的产生。进而去控制固态继电器控制电路的通断占空比,以采取不同功率进行加热升温。48 3PID温度控制器系统硬件设计本文所研究的温度控制器系统硬件部分大致可以分为以下几个部分:单片机主控制电路、温度采集电路、键盘输入电路、报警电路、固态继电器控制电路及显示电路。3.1单片机主控模块本设计是基于单片机的PID温度控制器,外围电路比较简单,所需I/O不多,且程序也不复杂。故采用AT89C51作为主控制器。3.1.1AT89C51简介AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。该单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[6]。3.1.2AT89C51各管脚说明如图3-1为AT89C51引脚图,下面概述部分引脚功能:图3-1AT89C51引脚图lVCC:电源lGND:地lP0口:P0口是一个8位漏极开路的双向I/O口。既可作地址/数据总线口用,也可作普通I/O口用。lP1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。48 lP2口:P2口是带内部上拉的双向I/O口,向P2口写入1时,P2口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的P2口会因为内部上拉而输出电流。在访问外部程序存储器和外部数据时分别作为地址高位字节和16位地址(MOVX@DPTR),此时通过内部强上拉传送1。当使用8位寻址方式(MOV@Ri)访问外部数据存储器时,P2口发送P2特殊功能寄存器的内容。lP3口:P3口是带内部上拉的双向I/O口,向P3口写入1时,P3口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的P3口会因为内部上拉而输出电流。此外,P3口还具有以下特殊功能,如表3-1所示。表3-1AT89C51引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0外部输出)P3.5T1(定时器1外部输出)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)lRST:复位信号输入端。当晶振在运行中只要复位管脚出现2个机器周期高电平即可复位内部有扩散电阻连接到Vss仅需要外接一个电容到Vcc即可实现上电复位。lEA/VPP:内部和外部程序存储器选择线。3.1.3时钟电路设计时钟电路是单片机的心脏,它控制着单片机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的,其典型值为12MHZ。AT89C51内部有一个反相振荡放大器,XTAL1和XTAL2分别是该反向振荡放大器的输入端和输出端。该反向放大器可配置为片内振荡器,石晶振荡和陶瓷振荡均可采用。时钟可以有两种方式产生,即内部方式和外部方式。本设计采用的晶振频率为11.0592MHZ的内部时钟方式。其时钟电路如图3-2所示。图3-2时钟电路3.1.4复位电路设计48 复位使单片机处于起始状态,并从该起始状态开始运行。RST引脚为复位信号输入端,复位信号高电平有效。其高电平有效的持续时间应为24个振荡周期。单片机的复位方式有上电自动复位和手工复位两种。为了便于运行调试,本设计的复位电路采用按键复位方式。按键复位电路如图3-3所示。图3-3按键复位电路3.2温度采集模块电路设计在传统的模拟信号温度检测系统中,需要解决好引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能达到较好的检测精度。但一般的检测环境都比较差,干扰信号较强。这样采集的模拟信号会有较大误差,从而影响测量精度。美国Dallas半导体公司的DS18B20温度传感器,具有有精度高、体积小、抗干扰能力强等优点,是解决检测误差的有效方案。而且其不需复杂的信号处理电路和A/D转换电路就能直接与单片机完成温度数据采集和处理。因此,在本设计中的温度检测环节中,我选用该温度传感器作为温度检测电路的核心装置。3.2.1DS18B20的特点(1)采用单线接口,仅需一个端口引脚进行通讯;(2)可用数据线供电,电压范围:+3.0~+5.5V;(3)测温范围:-55~+125℃。固有测温分辨率为0.5℃;(4)温度以9到12位数字量读出;(5)用户可自设定非易失性的报警上下限值;(6)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温;(7)温度数字量转换时间200ms(典型值)。3.2.2DS18B20内部结构DS1820采用3脚RP-35封装或8脚SOIC封装。有三个主要数字部件:64位光刻R0M、温度传感器、非易失性的温度报警触发器TH和TL。其内部结构框图如图3-4所示。48 图3-4DS18B20内部结构框图3.2.3DS18B20的内存结构DSI8B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPROM,后者存放高温和低温触发器TH,TL和结构寄存器。高速暂存RAM包含了9个连续字节(0~8),前两个字节是测得的温度信息,字节0的内容是温度的低8位,字节1是温度的高8位,字节2是TH(温度上限报警),字节3是TL(温度下限报警),字节4是配置寄存器,用于确定输出分辨率9到12位。第5、6、7个字节是预留寄存器,用于内部计算。字节8是冗余检验字节,校验前面所有8个字节的CRC码,可用来保证通信正确。DS18B20中的温度传感器对温度的测量结果用16位符号扩展的二进制补码读数形式提供。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位(见图3-5)。图3-5DS18B2012位数据在RAM中的存储温度采集转化后得到的12位数据,存储在DS18B20的两个8位的RAM中,二进制中的前面5位是符号位,如果测得的温度大于或等于0,这5位为0,将测到的数值乘于0.0625便可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。温度转换计算方法举例:例如当DS18B20采集到+125℃的实际温度后,输出为07D0H,则:实际温度=07D0H╳0.0625=2000╳0.0625=125C。例如当DS18B20采集到-55℃的实际温度后,输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作为计算),则:实际温度=370H╳0.0625=880╳0.0625=55C。[8]3.2.4温度传感器DS18B20的测温原理图3-6所示,图中低温度系数振荡器的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数振荡器的振荡频率受温度的影响很大,产生的信号作为减法计数器2的脉冲输入。48 图3-6内部测温电路框图图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,并重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环,直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3-6中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值[8]。3.2.5DS18B20与单片机的接口电路DS18B20的引脚图及与AT89C51的接口电路如图3-7所示,其中DS18B20工作在外部电源供电方式,AT89C51单片机采用P3.0和DS18B20通信。图3-7DS18B20与AT89C51单片机的接口电路3.3键盘输入电路设计48 本次设计中采用独立式按键电路,独立式按键是指用一根I/O口线构成的单个按键电路。每个独立式按键占一个I/O,各按键工作状态互不影响。独立式按键接口电路具有配置灵活,软件结构简单等优点,但缺点是占用大量I/O口。本次在按键模块电路只有3个按键。S2是温度上调按钮,S3是温度下调按钮,S4是输入数据确认按钮,当数据输入完毕后按该按钮进行确认。其硬件电路图如图3-8所示。图3-8按键输入电路3.4报警电路设计该电路主要由三极管和蜂鸣器组成。由单片机的P1.4口输出高低电平信号控制三极管的导通和截止以控制蜂鸣器的发声报警。其电路图如图3-9所示。图3-9蜂鸣器报警电路3.5加热控制电路设计本温度控制系统加热控制电路采用通断控制,通过改变给定控制周期内加热器的导通和关断的时间,,达到调节温度的目。在本次设计中,我采用固态继电器作为控制电路主模块。3.5.1固态继电器工作原理固态继电器是一个双输入端和双输出端的四端器件。工作时只要在A、B上加上一定的控制信号,就可以控制C、D之间的“通”和“断”,实现“开关”的功能,内部有光电耦合器和可控硅。下图为一种典型的交流型固态继电器的电路原理图,其内部结构图如图3-10所示。48 图3-10固态继电器内部结构图3.5.2固态继电器的特点(1)固态继电器成功实现了弱电信号对强电的控制。使控制信号所需的功率极低,而且弱电信号所需的工作电平一般电路都能提供。(2)固态继电器是由全固态电子元件组成,无任何可动的机械部件,工作中也没有任何机械动作;固态继电器由电路的工作状态变换实现“通”和“断”的开关功能,没有电接触点,因此具有工作高可靠、长寿命无噪声,无火花,无电磁干扰,开关速度快,抗干扰能力强,且体积小,耐冲击,耐振荡,防爆、防潮、防腐蚀。(3)固态继电器能承受在数值上可达额定电流十倍左右的浪涌电流。3.5.3加热控制电路下图是一个控制电阻丝加热的电路图,单片机通过P3.2口的输出高低电平控制继电器的开合,当继电器的开关闭合时,晶闸管的门极触发电路导通,即晶闸管导通,220V的交流电压接通,其电路图如图3-11所示。图3-11采用固态继电器的加热控制电路图3.6LCD显示电路设计液晶显示器以其体积小、微功耗、显示内容丰富等诸多优点,在袖珍式仪表和低功耗应用系统中得到广泛的应用。本次设计采用LCD1602液晶屏作为显示模块,LCD1602是一种用2×16点阵图形来显示字符的液晶屏,采用+5v电源供电,外围电路配置简单,价格便宜,具有很高的性价比。48 3.6.1LCD1602各管脚说明LCD1602采用标准16脚接口,各引脚功能如表3-3所示。表3-3LCD1602各引脚功能编号符号引脚功能1VSS电源地2VDD电源+5V3VL对比度控制端4RS寄存器选择5R/W读写操作6E使能信号7-14DB0-DB7数据总线15BLA背光+5V16BLK背光地3.6.2LCD1602与单片机的接口电路LCD1602液晶显示模块可以与AT89C51单片机直接接口,其电路图如3-11所示。图3.11LCD1602与AT89C51单片机的接口电路48 4系统软件设计在单片机控制系统设计中,软件与硬件同样重要。当系统硬件电路设计好之后,系统的主要功能还是要靠软件来实现,而且软件的设计在很大程度上决定了系统的性能。为了满足系统的要求,编制程序时一般要符合以下基本要求:(1)易理解性,(2)准确性准确性,(3)可靠性。4.1程序模块系统软件由主程序、键盘输入子程序、设定温度子程序、温度检测子程序、温度控制子程序、显示子程序和报警子程序组成。4.1.1主程序主程序模块的主要作用是上电后对系统初始化和构建系统整体软件框架,其中初始化包括对单片机的初始化、数字温度传感器初始化和LCD初始化。调用温度采集程序,调用键盘扫描程序,调用显示程序,调用控制程序等。若正常跑完子程序,则返回初始化进入其他的状态,主程序的流程图如4-1所示。图4-1主程序流程框图4.1.2温度传感器子程序根据DS18B20工作过程一般遵循以下协议:初始化——ROM操作命令——存储器操作命令——处理数据。在读写之前,对DS18B20发送约500μ48 s的低电平进行复位;复位成功,发送ROM指令;DS18B20为单总线器件,有严格的时隙概念,因此读/写时序很重要。DS18B20驱动最终能否得以正常运行,获得实时温度值,关键在于能否正确地编写复位程序、位写程序和位读程序。本系统对DS18B20的操作分为3个步骤:初始化、ROM操作命令和DS18B20功能命令。单片机要与DS18B20通信,首先必须完成初始化:单片机产生复位信号,DS18B20返回响应脉冲。ROM命令完成单片机与总线上的某一DS18B20建立联系,有搜寻ROM、读ROM、匹配ROM、忽略ROM、报警查找等命令。这里,单片机只连接1个DS18B20,因此只使用读ROM命令来读取DS18B20的48位ID号。DS18B20功能命令在该步骤中完成温度转换、写暂存寄存器、读暂存寄存器、拷贝暂存寄存器、装载暂存器寄存器、读供电模式命令。所以,本系统对DS18B20进行的操作主要包括两个子过程:(1)读取DS18B20的序列号。主机首先发一复位脉冲,等收到返回的存在脉冲后,发出搜索器件的序列号命令,读取DS18B20的序列号;(2)启动DS18B20作温度转换并读取温度值。主机在收到返回的存在脉冲后,发出跳过器件的序列号命令,跟着发出温度转换命令,再次复位并收到返回的存在脉冲后,发送DS18B20的序列号,读出数据[8]。其程序流程图如图4-2所示。图4-2温度检测程序框图4.1.3键盘输入子程序在改程序模块中,S4是设置确认按钮,S2是温度上调按钮,S3是温度下降按钮。首先是对S4键进行扫描判断其是否按下,对S4设一个标志位,如果标志位为1,表示S4被按下,标志位为0时表示没有按下。其程序流程图如4-3所示。48 图4-3键盘输入程序框图4.1.4温度测控子程序通过DS18B20实时采集数据并与设定值进行比较,在加热过程中每2s没水温做一次检测,并把检测到的温度与设定温度比较,根据比较的结果进行不同方式的加热。其程序流程图如图4-4所示。图4-4温度测控程序框图4.1.5LCD1602显示子程序该程序模块实现显示设定温度和采集到实际的温度,分别存入相应的显示区,并送出显示。显示子程序的流程如图4-5所示。48 图4-5显示子程序的流程图4.1.6报警子程序该程序实现报警功能,当温度超过某一设定值时蜂鸣器报警。其程序流程图如图4-6所示。图4-6报警子程序流程图48 5PID温度控制算法5.1温度控制系统数学模型控制算法即控制器的操作方式,是控制器对实测值与设定值之间的误差信号的响应。在许多温度控制器当中,PID温度控制器性能最为成熟,应用也最为广泛。理论证明,对于“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是种最优控制,其参数整定简单,结构改变灵活。控制框图如图5-1所示。图5-1PID控制框图5.2PID控制器的发展PID控制是较早发展起来的控制策略之一,现今使用的PID控制器产生并发展于1915-1940年期间。自1940年以来,许多先进的控制方法被提出,但由于PID控制方法具有结构简单、鲁棒性好、可靠性高、参数易于整定。因此,PID控制器在控制系统中仍然得到广泛应用。PID控制器的发展经历了气动式、液动式、电动式这几个阶段,目前已经由模拟控制器向数字化和智能化控制器发展。5.3PID控制器算法PID控制器是一种线性控制器,根据给定值r(t)与输出值形成的控制偏差:(5-1)将偏差的比例、积分和微分值通过线性组合构成控制量,对系统进行控制,这种控制方法称为PID控制。PID控制原理如图5-2所示。图5-2PID控制系统原理框图其控制规律为:48 (5-2)式中为比例系数,为积分系数,为微分系数。其各环节在实际控制中作用如下:①比例环节:即时成比例地反应控制系统的偏差信号,偏差一旦产生,调节器立即产生控制作用以减小偏差。比例作用大,可以加快调节,减少误差,但过大比例会使系统稳定性下降。②积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数Ti。Ti越大,积分作用越弱,反之则越强。③微分环节:能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得过大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间[1]。5.4PID参数的算法在计算机控制系统中,控制器是每隔一个周期T进行一次控制量的计算,并输出到执行机构。因此要实现式(5-2)的控制规律,需进行时间的离散化处理。设控制周期为T,在控制器的采样时刻时,对积分和微分运算作如下近似:(5-3)在上述近似中,控制周期T必须足够短,才能保证精度。、分别为和时偏差的离散量。将以上离散化结果代人(5-1),可得离散PID算法为(5-4)或(5-5)式中第k次控制时刻的计算值,即第k个采样周期的控制量;第k次控制时刻的偏差值;第(k-1)次控制时刻的偏差值;积分系数,;微分系数,。式(5-5)通常称为位置式PID数字调节器。上式中令,则得48 (5-6)式(5-5)减去式(5-6),得到增量式PID数字调节器(5-7)与位置式控制算法相比,增量式PID控制算法有如下优点:位置式PID算法的输出与过去状态有关,需要用到过去偏差的累加值,这样容易产生较大的误差。而增量式PID算法中只须计算增量,其增量仅与最近几次偏差采样值有关,对控制量的影响比较小,且较容易通过加权处理获得比较好的控制效果。基于上述原因,本系统采用增量式PID控制算法,其程序流程图如图5-3所示:图5-3增量式PID控制算法程序流程图48 6系统调试6.1硬件调试我对硬件的调试分为以下几步:(1)在水壶中存放0.5L净水,放置在300W的电炉上。系统工程进入准备工作状态,打开加热电源。(2)用温度计测量水温,,观察液晶屏显示采集温度值与实际温度值是否相同,校准系统使测量误差在1℃以内。(3)动态测试:设定温度为60℃,系统开始加热。待系统进入稳定状态时,观察采集温度与设定温度的误差。(4)检验系统的显示和报警功能。6.2软件调试软件调试在KEIL开发平台上进行,由于本系统对误差要求不是非常精确,故该系统参数整定采用经验凑试法。经验凑试法根据各调节参数对系统响应的大体影响,反复凑试参数,以达到满意的控制效果。下面介绍比例、积分、微分参数的对系统的影响。比例系数:增大比例系数会加快系统响应,有利于减小静差。但比例系数过大也会使系统的超调较大,并产生振荡,使稳定性变差。增大积分:增大积分系数有利于减小超调和振荡,使系统更稳定,但会减慢系统静差的消除。微分系数:增大微分系数能加快系统响应,使用权超调减小,增加系统稳定性,但对扰动的抑制能力减弱。在凑试时,可参考以上参数对控制过程的影响趋势,对参数实行下述比例、后积分、再微分的整定步骤:(1)整定比例部分将比例系数由小变大,并观察相应的系统响应,直至得到反应快、超调小的响应曲线。如果系统没有静差或静差已小到允许范围内,并且响应曲线已属满意,那么只需用比例调节器即可,比例系数可由此确定。(2)加入积分环节如果在比例调节的基础上系统的静差不能满足设计要求,则须加入积分环节。整定时首先置积分时间为一较大值,并将经第一步整定得到的比例系数略微缩小(如缩小为原来的0.8倍),然后减小积分时间,使在保持系统良好动态性能的情况下,静差得到消除。在此过程中,可根据响应曲线的好坏反复改变比例系数与保持时间,以期得到满意的控制过程与整定参数。48 (3)加入微分环节若使用比例积分调节器消除了静差,但动态过程经反复调整仍不能满意,则可加入微分环节,构成比例积分微分调节器。在整定时,可先置微分时间为零。在第二步整定的基础上,增大,相应地改变比例系数和积分时间,逐步凑试,以获得满意的调节效果和控制参数[1]。所谓“满意”的调节效果,是随不同的对象和控制要求而异的。因而在整定中参数的先定并不是唯一的。48 参考文献[1]刘士荣等.计算机控制系统[M].机械工业出版社,2007.[2]王兆安,黄俊.电力电子技术[M].机型工业出版社,2001.[3]马忠梅等.单片机的C语言应用程序设计[M].北京航空航天大学出版社,2007.[4]常健生.检测与转换技术[M].机型工业出版社,2009.[5]赵丽娟,邵欣.基于单片机的温度监控系统的设计与实现[M].机型工业出版社,2006.[6]王幸之钟爱琴.AT89系列单片机原理与接口技术[M].北京航空航天大学出版社,2004.[7]孟华.工业过程检测与控制[M].北京航空航天大学出版社,2002.[8]程安宇,孙士民,徐洋.基于DS18B20的单片机温度测量控制系统[D].兵工自动化,2007年第26卷第2期.[9]阎石.数字电子技术基础[M].高等教育出版社,2006.[10]童诗白.模拟电子技术基础[M].高等教育出版社,2006.[11]胡寿松.自动控制原理[M].科学出版社,2006.[12]MZhang,DPAtherton.AutomatictunningofoptimumPIDcontrollers[J].IEEEprocD,1993,140(3):216-244.[13]WuZhiQiao,MasaharuMizumoto.PIDTypeFuzzyControllerandParametersAdaptiveMethod[J].FuzzySetsandSystems,1996,78:23-35.[14]Zhi-WeiWoo,Hung-YuanChung,Jin-JyeLin.APIDtypefuzzycontrollerwithself-tuningscalingfactors[J].FuzzySetsandSystems,2000,115:321-326.[15]T.P.Blanchett,G.C.Kember,R.Dubay.PIDgainschedulingusingfuzzylogic[J].ISATransactions,2000,39:317-325.48 附录1系统硬件原理图系统硬件原理图2部分程序/*************************************************************************温度控制器程序,含PID控制算法byzhangxiaohua*************************************************************************/#include#include#include#include#defineucharunsignedchar#defineuintunsignedintstructPID{uintSetPoint;//设定目标DesiredValueuintProportion;//比例常数ProportionalConstuintIntegral;//积分常数IntegralConst48 uintDerivative;//微分常数DerivativeConstuintLastError;//Error[-1]uintPrevError;//Error[-2]uintSumError;//SumsofErrors};structPIDspid;//PIDControlStructureuintrout;//PIDResponse(Output)uintrin;//PIDFeedback(Input)//sbitdata1=P1^0;sbitclk=P1^1;//不知道什么意思sbitplus=P3^5;sbitsubs=P3^6;sbitstop=P3^7;sbitoutput=P3^2;sbitTMDAT=P3^0;sbitrs=P1^0;sbitrw=P1^1;sbitlcden=P1^2;//1602使能sbitbuzz=P1^4;//蜂鸣器控制端ucharflag,flag_1=0;ucharhigh_time,low_time,count=0;//占空比调节参数ucharset_temper=60;//设置初始温度uchartempint;//估计是采集温度uchari,j=0,f,tempth;inttempdf,c;uints;uchartable2[]="set:";uchartable1[]="dis:";voidset_ds18b20();//初始化DS18B20子程序uintget_temperature();//获得温度子程序uintread_ds18b20();//读DS18B20子程序voidwrite_ds18b20(ucharcommand);//向DS18B20写1字节子程序voiddelayms(ucharcoun);//延时count毫秒子程序voiddisp_temp();//显示温度子程序voidinit();//初始化函数/***********************************************************延时子程序,延时时间以12M晶振为准,延时时间为30us×time***********************************************************/voiddelay(unsignedchartime){ucharm,n;for(n=0;n0;i--)//一个字节分8位读取{temp>>=1;//读取1位右移1位TMDAT=0;//数据线置低电平delay=1;while(--delay);TMDAT=1;//数据线置高电平delay=4;while(--delay);//延时8usif(TMDAT)//读取1位数据temp|=0x80;delay=25;//读取1位数据后延时50uswhile(--delay);}if(j==3)templ=temp;//读取的第一字节存templif(j==2)temph=temp;//读取的第二字节存temphif(j==1)tempth=temp;//读取的第3字节存tempthTH的值}while(--j);48 f=0;if((temph&0xf8)!=0x00)//若温度为负的处理,对二进制补码的处理{f=1;//为负温度f置1temph=~temph;templ=~templ;k=templ+1;templ=k;if(k>255){temph++;}}tempdf=templ&0x0f;//将读取的数据转换成温度值,整数部分存tempint,小数部分存tempdfc=(tempdf*625);tempdf=c;templ>>=4;temph<<=4;tempint=temph|templ;//两字节合并为一个字节returntempint;//********************写DS18B20子程序***************************************//***************************************************************************voidwrite_ds18b20(ucharcommand){uchardela,i;for(i=8;i>0;i--)//将一字节数据一位一位写入{TMDAT=0;//数据线置低电平dela=6;//延时12uswhile(--dela);TMDAT=command&0x01;//将数据放置在数据线上dela=25;//延时50uswhile(--dela);command=command>>1;//准备发送下一位数据TMDAT=1;//发送完一位数据,数据线置高电平}}/***********************************************************************InitializePIDStructure48 ************************************************************************/voidPIDInit(structPID*pp){memset(pp,0,sizeof(structPID));}/*********************PID计算部分********************************************************************************************/unsignedintPIDCalc(structPID*pp,unsignedintNextPoint){unsignedintdError,Error;Error=pp->SetPoint-NextPoint;//偏差pp->SumError+=Error;//积分dError=pp->LastError-pp->PrevError;//当前微分pp->PrevError=pp->LastError;pp->LastError=Error;return(pp->Proportion*Error//比例+pp->Integral*pp->SumError//积分项+pp->Derivative*dError);//微分项}/***********************************************************温度比较处理子程序***********************************************************/voidcompare_temper(){unsignedchari;if(set_temper>tempint){if(set_temper-tempint>1){high_time=100;low_time=0;}else{for(i=0;i<10;i++){uintget_temperature();rin=s;//ReadInputrout=PIDCalc(&spid,rin);//PerformPIDInteration}if(high_time<=100)high_time=(unsignedchar)(rout/800);elsehigh_time=100;low_time=(100-high_time);48 }}elseif(set_temper<=tempint){if(tempint-set_temper>0){high_time=0;low_time=100;}else{for(i=0;i<10;i++){get_temperature();rin=s;//ReadInputrout=PIDCalc(&spid,rin);//PerformPIDInteration}if(high_time<100)high_time=(unsignedchar)(rout/10000);elsehigh_time=0;low_time=(100-high_time);}}//else//{}}/*****************************************************T0中断服务子程序,用于控制电平的翻转,40us*100=4ms周期******************************************************/voidserve_T0()interrupt1using1{if(++count<=(high_time))output=1;elseif(count<=100){output=0;}elsecount=0;TH0=0x2f;TL0=0xe0;}48 voidwrite_com(ucharcom){rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_date(uchardate){delay(5);rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}voidinit(){ucharnum;rw=0;delay(5);//dula=0;//wela=0;//LED=0;//rd=0;lcden=0;write_com(0x01);write_com(0x38);//设置8位数据转换模式write_com(0x0c);//开显示write_com(0x06);write_com(0x01);write_com(0x80);//设置第一位显示地址for(num=0;num<4;num++)//gai{write_date(table2[num]);//设置delay(5);}48 //write_com(0x80+0x04);write_date(0x30+set_temper/100);//write_com(0x80+0x05);write_date(0x30+set_temper/10);//write_com(0x80+0x06);write_date(0x30+set_temper%10);write_com(0x80+0x40);//for(num=0;num<4;num++){write_date(table1[num]);//显示delay(5);}}/*****************************************************显示子程序功能:将占空比温度转化为单个字符,显示占空比和测得到的温度******************************************************/voiddisp_temp(){uchartempinth,tempintl,tempinbai;//shifen,baifen,gefen,mi;tempinbai=tempint/100;tempinth=tempint%100/10;//整数取模tempintl=tempint%10;//整数取模//baifen=tempdf%10000/1000;//shifen=tempdf%1000/100;//gefen=tempdf%100/10;//小数取模//mi=tempdf%10;write_com(0x80+0x44);if(f==0)//正温{write_date(0x30+tempinbai);}else//fuwenwrite_date('-');//新注释的cxvwrite_date(0x30+tempinth);write_date(0x30+tempintl);//write_date('.');//write_date(0x30+baifen);48 //write_date(0x30+shifen);//write_date(0x30+gefen);//write_date(0x30+mi);write_com(0x80+0x44);write_com(0x80+0x04);write_date(0x30+set_temper/100);//显示百位delay(5);write_date(0x30+set_temper/10);//显示十位delay(5);write_date(0x30+set_temper%10);//显示个位delay(5);write_com(0x80+0x00);}/***********************************************************主程序***********************************************************/main(){//uinit();ucharz;uchara,b,flag_2=1,count1=0;//unsignedcharphil[]={2,0xce,0x6e,0x60,0x1c,2};TMOD=0x21;TH0=0x2f;TL0=0x40;//SCON=0x50;//PCON=0x00;TH1=0xfd;TL1=0xfd;//PS=1;EA=1;EX1=0;ET0=1;ES=1;TR0=1;TR1=1;high_time=50;low_time=50;PIDInit(&spid);//InitializeStructure48 spid.Proportion=10;//SetPIDCoefficientsspid.Integral=8;spid.Derivative=6;spid.SetPoint=100;//SetPIDSetpointinit();while(1){if(plus==0){EA=0;for(a=0;a<5;a++)for(b=0;b<102;b++){}if(plus==0){set_temper++;flag=0;}}elseif(subs==0){for(a=0;a<5;a++)for(b=0;a<102;b++){}if(subs==0){set_temper--;flag=0;}}elseif(stop==0){for(a=0;a<5;a++)for(b=0;b<102;b++){}if(stop==0){flag=0;break;}EA=1;}get_temper();b=tempint;if(flag_2==1)a=b;48 if((abs(a-b))>5)tempint=a;elsetempint=b;a=tempint;flag_2=0;if(++count1>30){disp_temp();count1=0;}compare_temper();}TR0=0;z=1;while(1){EA=0;if(stop==0){for(a=0;a<5;a++)for(b=0;b<102;b++){}if(stop==0)disp_temp();//break;}EA=1;}}48

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭