1、(2011届)毕业设计题目一种基于数字PID和单片机的温度控制系统设计姓名专业电子信息工程班级学号指导教师导师职称年月日一种基于数字PID和单片机的温度控制系统设计摘要本次设计采用PROTEUS仿真软件,以AT89C51单片机做为主控单元,运用PID控制算法,仿真实现了一个恒温控制系统。设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制,总体实现了一个恒温控制仿真系统。系统设计中包含硬件设计和软件设计两部分,硬件设计包含温度控制电路、温度检测电路等主要电路、LED显示电路等部分。软件设计的部分,采用模块化结构,主要的模块有键盘扫描、按键处理程序、数码管
2、显示程序、继电器控制程序、温度信号处理程序、超温报警程序。关键词PROTEUS仿真PIDDS18B20温度控制IBASEDONPIDANDAT89C51EMPERATURECONTROLSYSTEMSDESIGNABSTRACTTHISDESIGNUSESPROTEUSSIMULATIONSOFTWAREANDTAKESAT89C51ASMASTERUNIT,USINGPIDCONTROLALGORITHMTOSIMULATIONATEMPERATURECONTROLSYSTEMTHEDESIGNUSESTEMPERATURESENSORDS18B20ACQUISITIONREALTIMETE
3、MPERATURE,THEUSEOFPIDALGORITHMCONTROLFURNACETEMPERATURECONTROLSIMULATIONMODEL,THEOVERALLIMPLEMENTATIONOFATEMPERATURECONTROLSIMULATIONSYSTEMTHESYSTEMDESIGNCONTAINSHARDWAREDESIGNANDSOFTWAREDESIGNTWOPARTSANDTHEHARDWAREDESIGNINCLUDETEMPERATURECONTROLCIRCUIT,TEMPERATUREDETECTIONANDLEDDISPLAYCIRCUITANDSOO
4、NPARTOFTHESOFTWAREDESIGNADOPTSMODULARSTRUCTURETHEMAINMODULEISKEYPADSCANNINGKEYPROCESSINGPROGRAMDIGITALPIPEDISPLAYPROCEDURES,RELAYCONTROLPROCEDURES,TEMPERATURESIGNALPROCESSINGPROGRAMANDSUPERTEMPERATUREALARMINGPROGRAMKEYWORDSPROTEUSSIMULATION;DS18B20TEMPERATURECHIP;TEMPERATURECONTROL;II目录摘要IIIABSTRACT
5、IV第一章绪论111课题的来源112课题的意义113温度控制系统的国内外发展现状3第二章系统总体设计论证及总体设计方案321设计要求322总体设计方案3第三章系统硬件模块设计631系统硬件构成概述632各单元总体说明633按键单元834LED数码管显示单元835温度超、低温与异常情况报警单元936温度测试单元1037温度控制器件单元11第四章恒温控制算法研究(PID)1341PID控制器设计1342PID算法的流程实现方法与具体程序14第五章软件设计实现1851系统软件设计概述1852系统软件各模块介绍及模块构图1853系统软件程序流程及程序流程图20结论25模拟仿真过程26测试分析29参考文
6、献30致谢32附录A33附录B34毕业设计0第一章绪论11课题的来源在现实情况中,由于环境中温度值的滞后现象严重,惯性很大,且存在很多不确定的因素,所以很难建立精确的数学模型,因此常常导致控制系统的性能不佳,有时还会出现控制不稳定和失控现象。本次设计采用PROTEUS仿真软件,以AT89C51单片机做为主控单元,运用PID控制算法,仿真实现了一个恒温控制系统,可以避免一些不确定的影响因素。传统的继电器温控电路虽然运用起来比较简单,但由于继电器运作频繁,可能会因触点不良而影响正常工作。现今在控制领域,一般使用PID算法进行温度控制,不过PID控制对象的数学参数也是难以建立的,并且当扰动因素不确定
7、时,参数调整会比较麻烦,这依然是普遍存在的技术难题。本设计中的温度采集是用数字温度传感器DS18B20,在其内部集成了A/D转换器,可使电路结构更简单,且减少了温度测量转换时的精度损失,从而使测量温度更为精确。数字温度传感器DS18B20只用一个引脚,即可与单片机进行连接了,这样大大的减少了设计中接线麻烦的问题,使得单片机可以节约许多端口。DS18B20芯片的体积又比较小,且还是单线与主控芯片连接,于是在实际运用中,常常把数字温度传感器DS18B20做成小型的测量温度的探头,即使是一些狭小的位置也能很方便的检测到,使温控系统发挥最大的作用1。12课题的意义现在国内外市场用单片机作为为核心的温度
8、控制系统已经越来越广泛了,且设计方案都很灵活,应用起来相当的广泛,应用于工业上的加热炉、热处理炉、反应炉,在我们日常生活中的应用也是比较广的,如热水器,室温控制,农业中的大棚温度控制等等。现在人们的物质生活已经转好,随之而来的就是对生活质量的需求了。在舒适的温度下休息、活动,在不同的季节里都可以吃到各种蔬菜、水果,等等这些都需要对温度的控制。可见不仅在工业生产上温度控制是重点,在人们的日常生活中温度控制领域也潜藏这巨大的前景。如饲养几条鱼儿也成为一种趋势,这也将会带动与之相关的产业也应运发展起来。鱼缸是养鱼的必备用具,型鱼缸也在市场上层出,其中水温的控制是关键。可见本次设计的温度控制系统具有实
9、在的研究意义。一种基于数字PID和单片机的温度控制系统设计113温度控制系统国内外发展现状目前,国外温度控制系统正向着高精度、高智能化发展。温度控制系统在我国各个行业的应用虽然已经很普遍了,可是从国内生产的温度控制器来看,总体发展水平还是落后与先进国家,同先进国家相比,还是有着很大的差距。在高端,高精度的温度控制方面,我国的温度控制技术受到了很大的局限性。在这方面有待与我们这代人的努力,同时在这方面我国还潜藏着巨大的潜力,有许多我们伸展的空间2。由于市场的需求,国内以信息化时代的到来,带动了温度控制产业的迅速发展。温度已成为工业对象控制中一个最重要的参数,特别是在化工工业、冶金工业、机械工业、
10、电力工业、食品工业等等领域,都需要对各种加热炉的温度进行精确的控制。随着信息工业不断的发展,传统的控制方式已满足不来高精度、高速度的控制要求了。必须不断的开发研究创造出新型的信息花的温度控制系统、近几年,国内外对温度控制系统都进行了大量的研究。在各国,温度控制系统技术都已经被列为未来控制领域研究的几大方向之一,具有广阔的应用、市场前景。毕业设计2第二章系统总体设计论证及总体设计方案21设计要求一种基于数字PID和单片机的温度控制系统设计。要求如下1超调量0102温度连续可调,范围为20403人机对话方便4温度误差0522总体设计方案在仿真设计中,先通过按键设置温度,然后通过温度传感器DS18B
11、20,从环境中采集温度,由单片机获取采集的温度值,经过处理后,可得到当前环境温度中一个比较稳定的温度值,并且通过LED数码管显示。再去根据当前设定的温度值的上下限,温度未达到预定的下限温度时,单片机将通过P15口向蜂鸣器发送高电平信号使其发出警报生,同时通过P26口连接的RELAY输出高电平控制信号来驱动RL1,使得加热炉工作,为系统提供热量,来升高温度。温度上升到预定上限温度时,单片机将通过P15口向蜂鸣器发送高电平信号使其发出警报生,同时通过P26口连接的RELAY输出低电平控制信号来驱动RL1,使得加热炉停止加热,让温度慢慢回落3。当因环境温度变化剧烈或因加热、降温设备出现故障时,或者因
12、温度传感头出现故障,导致在一段时间内不能将环境温度调整到温度限内的时,单片机将通过P15口向蜂鸣器发送高电平信号使其发出警报生。一种基于数字PID和单片机的温度控制系统设计3工作原理图如下图21AT89C51导通加热断开降温键盘电路DS18B20温度芯片数据传送LED数据显示超、低温报警继电器图21工作原理图在设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制。DS18B20是DALLAS公司生产的经典的数字温度传感器,具有低功耗、高性能、抗干扰能力、微型化、强易配处理器等等优点,它特别适合用于多点温度测控的系统,它可直接将温度转化成数字信号,交给单片
13、机处理,并且在同一总线上可挂接多个传感器芯片,进行范围性的温度检测。在其内部集成了A/D转换器,可使电路结构更简单,且减少了温度测量转换时的精度损失。数字温度传感DS18B20只用一个引脚,即可与单片机进行连接了,这样大大的减少了设计中接线麻烦的问题,使得单片机可以节约许多端口。DS18B20芯片的体积又比较小,且还是单线与主控芯片连接,于是在实际运用中,常常把数字温度传感器DS18B20做成小型的测量温度的探头,即使是一些狭小的位置也能很方便的检测到,使温控系统发挥最大的作用4。在本仿真设计中DS18B20与51单片机的P34口链接。DS18B20可以仿真设置环境温度,来完成设计要求,设置到
14、20和40摄氏度时蜂鸣器就会发起警报。本次设计采用PROTEUS仿真软件,以AT89C51单片机做为主控单元。51单片机上连接晶振和复位电路,保证单片机的正常运行。P0口与LED数码管连接,显示测量结果。P10,P14P33分别与3个控制按键连接,P15口与报警系统蜂鸣器连接。由AT89C51的端口丰富使得整个系统设计起来方便简单,线路清晰,且AT89C51是一个高性能,低功耗的CMOS8位单片机,AT89C51设计和配置了振荡频率可为0HZ,在实际的应用中性价比很高,是温控系统的不毕业设计4二选择。本设计中选择AT89C51做为主控单位也是考虑到了实际的需求和做此设计的意义的5。一种基于数字
15、PID和单片机的温度控制系统设计5第三章系统硬件模块设计31系统硬件构成概述本章主要介绍本次设计中的硬件设计部分,其中包含显示模块、按键扫描模块、温度采集模块、温度加热模块、,蜂鸣器报警模块。系统电路如下图3131系统电路图32各单元总体说明1显示模块本设计中采用4位LED数码管显示温度值,其中最后一位为小数位。2按键模块本设计中采用3按键设置,第一按键为复位按键,第二、三按键为温度调节按键,连接上拉电阻使其未按键时能够保持高电平。3温度采集模块本次设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制,数字温度传感器DS18B20只需一个引脚,即可与单片
16、机进行通信,在设计中将DS18B20与51单片机的P34口连接,用其来完成温度的测量6。4温度加热模块本设计采用加热炉来进行温度值的控制,其配有功率显示表,以便在仿真中与温度传感器DS18B20相对应,便于统计。加12345毕业设计6热炉与光电耦合器连接,光电耦合器通过RELAY与51单片机的P26口连接。通过51单片机发送信号来控制加热炉的运作。5蜂鸣器报警模块本设计中采用蜂鸣器做为报警系统,当采集到的温度经过处理后,超过规定温度上、下限时,单片机将通过P15口向蜂鸣器发送高电平信号使其发出警报生。33按键单元一般的键盘设计采用的是硬件设计,可是其在仿真设计中连接,线路会比较麻烦。所以在本此
17、设置中我采用的是3按键软件控制,第一个按键为复位按键,其他两个为调节按键,3按键即可完成设计中起始温度设置与复位要求,方便简洁,线路清晰设计起来也较为方便。连接上上拉电阻,使其当未有按键按下时,各各按键位都处于高电平。按键操作说明1号按键为复位设置按键,第一次按下它时,1号按键位将处于低电平,LED数码管将会显示HT(上限温度值),此时,可通过2号键和3好键来调整预设的上限温度值,每次按一下2号按键预设的温度上限值就上升一度,每次按一下3号键时预设的温度上限值就下降一度,此过程都会同过LED数码管显示。设置好上限温度后,再次按下1号按键,同样1号按键位处于了低电平,LED数码管将会显示LT(下
18、限温度值),此时同样此时,可通过2号键和3好键来调整预设的下限温度值,每次按一下2号按键预设的温度下限值就上升一度,每次按一下3号键时预设的温度下限值就下降一度,此过程都会同过LED数码管显示。在设置好预设温度的上、下限时,我们再次按下1号键,此时LED数码管显示的将是温度传感器DS18B20传送的温度值,51单片机将会把此测量值与先前预设的温度上、下限值进行比较处理,然后进行其他功能模块的操作。具体如下,按一下为设置上限,按两下为设置下限,再按一下进入显示状态。按下复位进入上下限设置时,每按一下为上限升高一度。按下复位进入上下限设置时,每按一下为下限降低一度。复位上限下限一种基于数字PID和
19、单片机的温度控制系统设计7真电路如下图3232按键电路图34LED数码管显示单元为使温度显示的更为准确,本次设计中我选择的是8段的供阳的4位LED数码管(其中一段为小数点),LED数码管的8段位分别连接51单片机的P00P07端口,数码管的4位选位分别通过P20P23端口连接。LED数码管在工作时,由于其为供阳的,每个段位只有当输入低电平时此段位被点亮,以显示数字“0”为例,共阳的GFEDCBA相应的为1000000,字型码为C0H。在本设计中将所以LED数码管的8个显示笔划“A,B,C,D,E,F,G,DP”的同名端连接在一起,另外为每个数码管的公共极COM增加位元选通的控制电路,位元选通由
20、它们自己的I/O端口链接控制。当51单片机运作时,所有的数码管都会接收到同样的字符码,我们可以通过51单片机对COM端电路进行控制,来决定那个数码管显示字符,所以只要将需要显示的数码管的选通控制打开,该单元就会显示字形,没选通的就不会点亮。这样通过分时分别控制LED数码管的COM端,可以使每个位轮流显示,每位点亮的时间间隔大概为1MS左右7。毕业设计8LED数码管如下图3333LED数码管电路图35温度超、低温与异常情况报警单元采集到的温度经过处理后,超过规定温度上限时,单片机将通过P15口向蜂鸣器发送高电平信号使其发出警报生,同时通过P26口连接的RELAY输出低电平控制信号来驱动RL1,使
21、得加热炉停止加热,让温度慢慢回落;当采集到的温度经过处理后,低于设定温度下限时,单片机将通过P15口向蜂鸣器发送高电平信号使其发出警报生,同时通过P26口连接的RELAY输出高电平控制信号来驱动RL1,使得加热炉工作,为系统提供热量,来升高温度。要是由于环境温度变化太剧烈或加热、降温设备出现故障,或温度传感头出现故障,而在一定时间内,不能将温度控制到规定的温度限内,单片机也将会通过P15口向蜂鸣器发送高电平信号使其发出警报生8。在实验中设置的下限温度是20摄氏度,当温度达到20摄氏度时,蜂鸣器就虎发出报警。实验中设置的上限温度为40摄氏度,当温度达到所示的40摄氏度时,蜂鸣器就会开始报警。仿真
22、电路如下图34一种基于数字PID和单片机的温度控制系统设计934蜂鸣器电路图36温度测试单元在本设计中温度测试采用温度芯片DS18B20与51单片机的P34口连接。此集成芯片,可以很好的减少外界的干扰。其内部集成A/D转换器,使得电路结构更简单,且减少了温度测量转换时的精度损失,从而使测量的温度值更为精确,具有实在的设计意义。且数字温度传感器DS18B20只用一个引脚,即可与单片机进行通信了,大大的减少了接线麻烦的问题,使得单片机更加具扩展性。由于DS18B20芯片的小型化,通过单条数据线,就可以和主电路连接,在实际应用中,可把数字温度传感器DS18B20做成测温探头,可方便的探入到狭小的地方
23、,从而增加了实用性9。DS18B20的开始运作时,首先要做的是复位工作,即在开始工作前,51单片机将会给DS18B20当总先发送一个不小于480US的低电平信号,对其进行复位。DS18B20在接收到这个信号后的1560US内会回发一个芯片的存在脉冲。为了接收存在脉冲,数据当总线将会被控制器拉高,存在脉冲是一个60240US的低电平信号。接下去将进行51单片机与DS18B20间的通信。51单片机发送控制的指令共有5指令,而每一个工作周期只可以发送一条指令。5条指令分别为读取数据、指定匹配的芯片、跳跃ROM、芯片搜索、报警芯片搜索。接着51单片机发送存储器操作指令(在指令发送给DS18B20后,马
24、上就发送存储器操作指令了)。存储器指令的功能就是控制DS18B20怎么样进行工作。DS18B20同51单片机的接线如下35图35DS18B20电路图毕业设计10见图可知DS18B20只需与单片机的一个端口连接即可,不过当总线为开漏需要外接一个上拉电阻R2,为4、7K。37温度控制器件单元在本次设计中,是采用加热炉通过PID算法来对温度进行控制的,其配有功率显示表,以便在仿真中与温度传感器DS18B20相对应,便于统计。加热炉与光电耦合器连接,光电耦合器通过RELAY与51单片机的P26口连接。当测量到的温度值未达到先前设定的预期温度值下限时,51单片机通过RELAY口向光电耦合器发送高电平时,
25、无电流流过,光电耦合器将不导通,继电器也不能导通,继电器的线圈无电流通过,RL1打向电源处,加热炉通电开始工作加热,可以根据功率表的数据显示看出加热炉提升的温度。当测量到的温度值超出先前设定的预期温度值上限时,51单片机通同过RELAY口向光电耦合器发送低电平时,光电耦合器将导通,有电流流过,使得继电器也导通,继电器的线圈有电流通过,RL1打向继电器线圈,加热炉断开连接,停止工作,使温度慢慢的回落。温控系统连接方法如下36图36温控系统电路图一种基于数字PID和单片机的温度控制系统设计11第四章恒温控制算法研究(PID)41PID控制器的设计ID控制是目前在温度控制中应用最广泛的一种控制算法,
26、其核心思想是按设定值与测量值之间的偏差比例、偏差的积累和偏差变化的趋势来控制输出量,即根据偏差值来计算控制量。数字PID控制律的实现,需采用数值逼近法,当采样的周期相当短时,可以用用差商代替微分,求和代替积分,可以有如下近似变换10。KTTTE0KJKJETED0041KT11式中,K为采样的序号,KL,2,;T为采样的周期。在离散化的过程中,采样时间T须足够的短,不然难以确保精度。在运算时,把表示成等,省去了T。则可推算出离散的PID表达式写成EEK4211KEKJKKUDOJP式中,K为采样的序号,K1,2,;UK是第K次采样时,计算机输出的值;是第K次采样时输入的偏差值;是第次采样时输入
27、的E1E偏差值;是积分系数,;是积分系数。1KIPTK1DTKDPD在实际的应用中,通常采用增量式PID控制算法,即数字控制器输出只是控制量的增量,该算法编程简单,数据可以递推使用,占用存储空间少,运算快。毕业设计12根据递推原理可得432110KEKJEKKEKUDKJIP公式(42)与公式(43)相减,即得到增量式PID控制算法44442121KEKEKEKUDIP本次设计中,控制器的设计采用增量数字PID控制算法的功能,可以比较灵活的调节控制信号的导通时间来控制温度值控制的工作。能够基本满足温度控制的要求。42PID算法的流程实现方法与具体程序本系统设计的温度控制系统是与光电耦合器连接的
28、加热炉。传统的方法是当测量的环境温度达到设定值时,加热炉不在加热状态,可是此时加热炉的温度仍然会高与设定的温度值,加热炉还是会起到加热的作用,使得系统的温度经常继续要升高一会后才能开始下降。当下降到设定的下限温度值时,温控系统会促使加热炉开始工作,对系统进行加热,此过程需要一定的时间,所以往往又会下降一定温度,才能开始上升温度。所以传统的方法往往会出现一定的误差,此误差就是温度的惯性引起的11。PID算法是PID模糊控制技术的核心部分,通过比例、积分、微分三方面的结合与调整构成一个反馈控制,可解由于温度的惯性而产生的误差。经过PID控制器处理后可输出电压的控制信号,从而反,0TNTETU馈调节
29、温度。数字PID的控制示意图如下41T0TEPID控制器系统TN图41数字PID的控制实验中最主要的就是PID参数的选择,它决定着整个温度控制的精确度。我们可以根据具体情况的要求,来调节合适的参数。P为比例系数,当在一定范围内若是调节增加P时,系统的反映将会变的一种基于数字PID和单片机的温度控制系统设计13灵敏,稳态的误差值将会变小,可要是P值过大时的话,同样会时系统变得不稳定。P值过于小了,系统的反映又会变的很慢。可见的,P值要是选取不恰当,测量值就会和设定值的偏差越来越大,要是出现了这样的问题时,可将P值的符号取反12。I为积分系数,I的值越小积分的作用就会越强,积分作用强了就会导致系统
30、的稳定性下降,不过T值小了,稳态所产生的误差将会减小。D为微分控制,微分控制可以改善动态的特性,当D偏大时,超调量随之变大,调节时间会减短;D偏小时,超调量同样变大,不过调节时间就会比较长,只有D合适时,才能使超调量较小,调节时间也较短。调试时,只能参考参数对系统控制过程的变化趋势,来对参数调整来先比例,后积分,再微分的步骤慢慢调试,一直凑到满意的结果为止。数字PID的差分方程001UNETIENEKUDNIIP45UNDIP在上式中,称为比例项;称为积分项;NEPNIIPIETKU0称为微分项。1TKNUDPD得到增量式公式为46210NEAEA在此式中,。TKDIP0TKDP211TKAD
31、P2PID的具体算法程序如下13ENUMY,U,R,TS,KD,KP/Y采集量、U控制量、R设定量、TS采样时间、KD微分、KP比例INTPARA6,PTR,OUT/OUT是从PID得到的控制量INTR,KP,KD,TS,E2,E1,E0,U/VOIDINITPID/初始化PID函数毕业设计14PARAR20PARAKP2PARAKD2PARATS1VOIDPIDPARAYINTAD_DATARPARARE0E1E1E2E2RPARAY/10KPPARAKPKDPARAKDTSPARATSURKPE2KDE2E1,IFU200U200PARAUU/10OUTPARAUVOIDTEM_TIMER
32、0INTERRUPT1/采样时间THOTIM08TL0TIM0IFTMOUTTEM1ELSETEM0IFM200TM0IFOUT8TLITIM1IFDEALCS0WDCTRLPARARIFWDCTRLINTAD_DATA/1010OUT200一种基于数字PID和单片机的温度控制系统设计15ELSEIFINTAD_DATA/10WDCTRL2OUT0ELSEOUTCTRLTABWDCTRL2INTAD_DATA/10ELSEIFTXTSPIDT0毕业设计16第五章软件设计实现51统软件设计概述在恒温PID控制系统中软件是整个系统的核心,在软件设计中采用分层模块化设计,其中主要的模块包含人机交互模
33、块、数据显示模块、PID控制器模块、信号采集模块、超、低温报警模块几部分。52、系统软件各模块介绍及模块结构图系统总体软件构成下图51人机交互模块数据显示模块PID控制器模块信号采集模块超、低温报警模块驱动输出图51系统总体软件构成图人机交互模块,是通过3位按键来实现的。第一个按键为复位按键,其他两个为调节按键,当有键按下时该键位将会处于低电平状态,按键连接了上电阻,使其当未有按键按下时,各各按键位都处于高电平。本设计中的按键具体原理与操作方法,在第三章的按键单元中已经做了详细的说明。数据显示模块,是通过8段的供阳的4位LED数码管(其中一段为小数点)实现的。采用的是通过动态显示法,分时分别控
34、制LED数码管的COM端,使每个位轮流显示,每位点亮的时间间隔大概为1MS左右。PID控制器模块,本设计是运用PID控制算法,仿真实现一个恒温控制系统。在上一章中我们已经描述了电压的控制信号,从而反,0TNTETU馈调节温度。设计中最主要的就是PID参数的选择,它决定着整个温度控制的精确度。我们可以根据具体情况的要求,来调节合适的参数。对PID函数进行初始化时,需设置函数参数,这些参数都是根据实验测定获得的,具体参数在上一章PID算法研究中有详细说明。一种基于数字PID和单片机的温度控制系统设计17信号采集模块,本设计中是运用DS18B20进行温度采集的,在DS18B20开始运作时,首先要做的
35、是复位工作,DS18B20在接收到这个信号后的1560US内会回发一个芯片的存在脉冲。为了接收存在脉冲,数据当总线将会被控制器拉高,存在脉冲是一个60240US的低电平信号。接下去将进行51单片机与DS18B20间的通信。接着51单片机发送存储器操作指令(在指令发送给DS18B20后,马上就发送存储器操作指令了)。控制DS18B20怎么样进行工作16。超、低温报警模块,本设计中采用蜂鸣器,对异常情况进行报警。当出现异常情况,温度过高或是过低时,控制芯片将会向蜂鸣器发送高电平,蜂鸣器在接收高电平时就会发出鸣叫声报警。53系统软件程序流程及程序流程图系统软件流程如下图52开始系统初始化温度采集温度
36、显示按键设置预设温度比较设定的温度与测量温度值的大小PID控制图52系统软件流程图毕业设计18程序流程为在程序开始的时,先设置初始化,通过按键设置预定温度值,然后通过数码管来显示当前的温度,再比较设定的预期温度与测量温度值的大小,将比较的信息通过继电器,去根据当前设定的温度值的上下限,当测量到的温度值未达到先前设定的预期温度值下限时,使单片机向蜂鸣器发送高电平信号使其发出警报生,再通过RELAY口向光电耦合器发送高电平时,无电流流过,光电耦合器将不导通,继电器也不能导通,继电器的线圈无电流通过,RL1打向电源处,加热炉通电开始工作加热,可以根据功率表的数据显示看出加热炉提升的温度。当测量到的温
37、度值超出先前设定的预期温度值上限时,使单片机将向蜂鸣器发送高电平信号使其发出警报生,再通过过RELAY口向光电耦合器发送低电平时,光电耦合器将导通,有电流流过,使得继电器也导通,继电器的线圈有电流通过,RL1打向继电器线圈,加热炉断开连接,停止工作,使温度慢慢的回落。54DS18B20温度传感器分析在本次软件设计中,核心的部分就是PID算法的控制与DS18B20温度采集的实现,PID算法在上文中已经做了详细的介绍,在此再具体的分析下DS18B20。在本次设计我选择了DS18B20来继续温度检测,因为数字温度传感器DS18B20只需一个引脚,即可与单片机进行通信了,大大的减少了接线麻烦的问题,使
38、得单片机更加具扩展性。由于DS18B20芯片的小型化,通过单条数据线,就可以和主电路连接,可把数字温度传感器DS18B20做成测温探头,可方便的探入到狭小的地方,从而增加了实用性。且本次设计采用PROTEUS仿真软件,在PROTEUS仿真软件里DS18B20可以随意设定温度,模仿实际环境温度值,便于实验17。DS18B20数字温度传感器的内部包含了高速暂存RAM与用来存储TH、TL的E2ARM。接受到的数据先是存入RAM,经检验后传送至E2ARM。RAM中的第5个字节用与控制控制温度的数字转换分辨率,此分辨率决定DS18B20工作时温度转换的先对应的数值。其中要注意的是设定的分辨率越高,就需要
39、消耗越多的转换时间。所以在设置分辨率时我们需要有所考虑18。DS18B20在接收到温度转换的命令后,将温度值数据转换成以二进制补码的形式存储在RAM中,然后51单片机再通过单总线接收此数据,以地位在前高位在后的方式来读取数据。接收数据后通过温度计算,将得出的温度值与设定的TH、TL进行比较,51单片机再根据比较的结果做出相应的运行一种基于数字PID和单片机的温度控制系统设计19工作。为此我们在程序设计中设计了下面主要几个子程序。首先对DS18B20进行初始化处理VOIDINIT_DS18B20VOIDUNSIGNEDCHARX0DQ0/单片机将DQ拉低DELAY_18B2080/精确延时大于4
40、80USDQ1/拉高总线DELAY_18B2014XDQ/稍做延时后如果X0则初始化成功X1则初始化失败DELAY_18B2020在初始化后,先让DS18B20读一个字节UNSIGNEDCHARREADONECHARVOIDUNSIGNEDCHARI0UNSIGNEDCHARDAT0FORI8I0IDQ0/给脉冲信号DAT1DQ1/给脉冲信号IFDQDAT|0X80DELAY_18B204RETURNDAT毕业设计20再让其写一个字节,运行子程序如下VOIDWRITEONECHARUNSIGNEDCHARDATUNSIGNEDCHARI0FORI8I0IDQ0DQDATDELAY_18B205
41、DQ1DAT1接下来设计DS18B20的工作状态,设置其上、下限报警温度分别为TH和TL,且设置显示的分辨率为RS,执行的子程序如下VOIDSETDS18B20UNSIGNEDCHARTH,UNSIGNEDCHARTL,UNSIGNEDCHARRSINIT_DS18B20WRITEONECHAR0XCC/跳过读序号列号的操作WRITEONECHAR0X4E/写入“写暂存器“命令,修改TH和TL和分辩率配置寄存器/先写TH,再写TL,最后写配置寄存器WRITEONECHARTH/写入想设定的温度报警上限WRITEONECHARTL/写入想设定的温度报警下限WRITEONECHARRS/写配置寄存
42、器,格式为0R1R01,1111/R1R000分辨率娄9位,R1R011分辨率为12位最后就是读取DS18B20的温度值了,执行子程序如下UNSIGNEDCHARREADTEMPERATUREVOIDUNSIGNEDCHARTT2INIT_DS18B20一种基于数字PID和单片机的温度控制系统设计21WRITEONECHAR0XCC/跳过读序号列号的操作WRITEONECHAR0X44/启动温度转换DELAY_18B2070/温度转化要一段时间INIT_DS18B20WRITEONECHAR0XCC/跳过读序号列号的操作WRITEONECHAR0XBE/读取温度寄存器等(共可读9个寄存器)前两
43、个就是温度/DELAY_18B2070TT0READONECHAR/读取温度值低位TT1READONECHAR/读取温度值高位RETURNTT毕业设计22结论本次设计采用PROTEUS仿真软件,以AT89C51单片机做为主控单元,运用PID控制算法,仿真实现了一个恒温控制系统。设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制,总体实现了一个恒温控制仿真系统。仿真中先通过按键设置温度,然后通过温度传感器DS18B20,从环境中采集温度,由单片机获取采集的温度值,经过处理后,可得到当前环境温度中一个比较稳定的温度值,并且通过LED数码管显示。再去根据当前
44、设定的温度值的上下限,温度未达到预定的下限温度时,单片机将通过P15口向蜂鸣器发送高电平信号使其发出警报生,同时通过P26口连接的RELAY输出高电平控制信号来驱动RL1,使得加热炉工作,为系统提供热量,来升高温度。温度上升到预定上限温度时,单片机将通过P15口向蜂鸣器发送高电平信号使其发出警报生,同时通过P26口连接的RELAY输出低电平控制信号来驱动RL1,使得加热炉停止加热,让温度慢慢回落。本设计可以大体的模拟仿真实现温度检测系统的运行过程,具体的仿真现实如下所述20。一种基于数字PID和单片机的温度控制系统设计23模拟仿真过程在模拟仿真中,当将DS18B20的温度设置为17摄氏度时。5
45、1单片机通过RELAY口向光电耦合器发送高电平时,无电流流过,光电耦合器将不导通,继电器也不能导通,继电器的线圈无电流通过,RL1打向电源处。此时加热炉通电开始工作加热,可以根据功率表的数据显示得出加热炉提升的温度。毕业设计24当将DS18B20的温度设置为41摄氏度时。51单片机通同过RELAY口向光电耦合器发送低电平时,光电耦合器将导通,有电流流过,使得继电器也导通,继电器的线圈有电流通过,RL1打向继电器线圈。此时加热炉断开连接,停止工作,但是加热炉还是会有一定的延迟性,只能让温度慢慢的回落。一种基于数字PID和单片机的温度控制系统设计25测设分析1、测试环境仿真环境温度2040摄氏度2
46、、测试方法用调节DS18B20,来模拟环境温度,通过按键来设置温度的上、下限与复位,根据LED数码管显示来观察结果。3、测试结果设定温度由20摄氏度到40摄氏度标定温差DEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTSBITDQP34/DS18B20与单片机连接口UNSIGNEDCHARCODELED0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XFFUCHARDATADISDATA5UCHARVREF5UCHARA6SBITPINP07一种基于数字PID和单片机的温度控制系统设计29UNSIGNE
47、DINTTVALUE/温度值SIGNEDINTTEMP0UCHARTFLAG/温度正负标志SIGNEDCHARTH40/上线温度SIGNEDCHARTL20/下线温度SBITSPEAKERP15SBITSETP10SBITADDP14SBITSUBP33UNSIGNEDCHARNUMSBITRELAYP26/LCD1602程序/VOIDDELAY1MSUNSIGNEDINTMS/延时1毫秒(不够精确的)UNSIGNEDINTI,JFORI0I0IDQ0/给脉冲信号DAT1DQ1/给脉冲信号IFDQDAT|0X80DELAY_18B2010RETURNDATVOIDDS1820WRUCHARWD
48、ATA/写数据/UNSIGNEDCHARI0FORI8I0IDQ0DQWDATADELAY_18B2010DQ1WDATA1READ_TEMP/读取温度值并转换/UCHARA,BDS1820RSTDS1820WR0XCC/跳过读序列号/DS1820WR0X44/启动温度转换/DS1820RST一种基于数字PID和单片机的温度控制系统设计33DS1820WR0XCC/跳过读序列号/DS1820WR0XBE/读取温度/ADS1820RDBDS1820RDTVALUEBTVALUE0P20X02P0LEDTH/100DELAY1MS10P20X04P0LEDTH100/10DELAY1MS10P20
49、X08P0LEDTH10010DELAY1MS10ELSEP20X02P00XBFDELAY1MS10P20X04P0LEDTH/10DELAY1MS10P20X08P0LEDTH10DELAY1MS10毕业设计36VOIDDISPLAYTLP20X01P00XC7DELAY1MS10IFTL0P20X02P0LEDTL/100DELAY1MS10P20X04P0LEDTL100/10DELAY1MS10P20X08P0LEDTL10010DELAY1MS10ELSEP20X02P00XBFDELAY1MS10P20X04P0LEDTL/10DELAY1MS10P20X08P0LEDTL10DELAY1MS10一种基于数字PID和单片机的温度控制系统设计37/主程序/VOIDMAINFLOA