基于大林算法的温度控制系统设计_第1页
基于大林算法的温度控制系统设计_第2页
基于大林算法的温度控制系统设计_第3页
基于大林算法的温度控制系统设计_第4页
基于大林算法的温度控制系统设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机控制技术课程设计2023/2023学年第二学期设计课题:基于大林算法的电路温度控制系统的设计专业:____班级:___学号:__________姓名:_____________2023年5月目录第一章课题简介 11.1课题的目的 11.1.1本机实现的功能 11.1.2扩展功能: 11.2课题的任务及规定 1第二章系统方案设计 22.1水温控制系统的总体介绍 22.2系统框图 22.3闭环系统的工作原理 2第三章系统硬件设计 33.1系统原理图 33.2单片机最小系统设计 3第四章大林控制算法设计 54.1大林控制算法原理: 54.2控制器的设计及公式推导过程 64.3采样周期的选择: 7第五章水温控制系统的仿真 75.1振铃现象 75.2Matlab仿真 95.2大林算法控制系统编程设计: 105.3各模块子程序设计 115.3.1主程序设计 115.3.2读出温度子程序 125.5.3数码管显示模块 135.5.4温度解决程序 14第六章小结与体会 15第七章参考文献 16第八章附录 17第一章课题简介1.1课题的目的1.1.1本机实现的功能(1)运用温度传感器采集到当前的温度,通过AT89S52单片机进行控制,最后通过LED数码管以串行口传送数据实现温度显示。(2)可以通过按键任意设定一个恒定的温度。(3)将水环境数据与所设立的数据进行比较,当水温低于设定值时,启动加热设备,进行加热;当水温高于设定温度时,停止加热,从而实现对水温的自动控制。(4)当系统出现故障,超过控制温度范围时,自动蜂鸣报警。1.1.2扩展功能:(1)具有通信能力,可接受其他数据设备发来的命令,或将结果传送到其他数据设备。(2)采用适当的控制方法实现当设定温度或环境温度突变时,减小系统的调节时间和超调量。温度控制的静态误差。1.2课题的任务及规定一升水由800W的电热设备加热,规定水温可以在一定范围内由人工设定,并能在环境温度减少时实现自动调整,以保持设定的温度基本不变。(1)温度测量范围:10~100℃,最社区分度不大于1℃。(2)控制精度在0.2℃以内,温度控制的静态误差小于1℃。(3)用十进制数码管显示实际水温。 第二章系统方案设计2.1水温控制系统的总体介绍本次设计采用采样值和键盘设定值进行比较运算的方法来简朴精确地控制温度。先通过键盘输入设定温度,保存在AT89S52单片机的指定单元中,再运用温度传感器DS18B20进行信号的采集,送入单片机中,保存在采样值单元。然后把采样值与设定值进行比较运算,得出控制量,从而调节继电器触发端的通断,来实现将水温控制在一定的范围内。当水温超过单片机预存温度时,蜂鸣器进行报警。单片机控制系统是一个完整的智能化的集数据采集、显示、解决、控制于一体的系统。由传感器、LED显示单片机及执行机构控制部分等组成。2.2系统框图DS18B20DS18B20温度传感器LED显示指示灯蜂鸣器AT89S52单片机加热继电器按键2.3闭环系统的工作原理本设计以AT89S52单片机系统进行温度采集与控制。温度信号由模拟温度传感器DS18B20采集输入AT89S52,运用温度传感器采集到当前的温度,通过AT89S52单片机进行控制,最后通过LED数码管以串行口传送数据实现温度显示。可以通过按键任意设定一个恒定的温度。将水环境数据与所设立的数据进行比较,当水温低于设定值时,启动加热设备,进行加热;当水温高于设定温度时,停止加热,从而实现对水温的自动控制。当系统出现故障,超过控制温度范围时,自动蜂鸣报警。用单片机控制水温可以在一定范围内设定,并能在环境温度变化时保持温度不变。第三章系统硬件设计3.1系统原理图在温度测量控制系统中,实际温度值由PT100恒流工作调理电路进行测量。为了克服PT100线性度不好的缺陷,在信号调理电路中加入负反馈非线性校正网络;调理电路的输出电压经ADC0808转换后送入单片机AT89S51;对采样数据进行滤波及标定解决后,由3位7段数码管显示。输入的设定值由4位独立按键电路进行设定,可分别对设定值的十位和个位进行加1、减1操作。设定值送入单片机后,由此外一组3位7段数码管显示。数码管的段码由74HC05驱动,位码由三极管2N2222A驱动。系统采用PID闭环控制方案。将预置初值与温度传感器反馈信号比较得到偏差(e)进行PID运算解决得到控制量(u),通过此量来控制加热器的加热时间,从而控制加热功率。由于水自身具有很大的热惯性,所以必须对水温的变化趋势作出预测,并且根据需要及时反方向克制,以防止出现较大的超调量的波动。在PID控制中,积分环节(I)具有很强的滞后效应,而微分环节(D)具有预见性,所以该方案最终采用PD算法,可以很好的控制超调,并且稳态误差也很小。图3-1系统原理图3.2单片机最小系统设计基本的AVR硬件线路,涉及以下几部分:(1)复位线路的设计AT89S52已经内置了上电复位设计。并且在熔丝位里,可以控制复位时的额外时间,故AVR外部的复位线路在上电时,可以设计得很简朴:直接拉一只10K的电阻到VCC即可(R6)。为了可靠,再加上一只0.1uF的电容(C0)以消除干扰、杂波。D3(1N4148)的作用有两个:作用一是将复位输入的最高电压钳在Vcc+0.5V左右,另一作用是系统断电时,将R1(10K)电阻短路,让C0快速放电,让下一次来电时,能产生有效的复位。当AVR在工作时,按下S0开关时,复位脚变成低电平,触发AVR芯片复位。重要说明:实际应用时,假如你不需要复位按钮,复位脚可以不接任何的零件,AVR芯片也能稳定工作。即这部分不需要任何的外围零件。图3-2复位电路设计(2)晶振电路的设计Mega16已经内置RC振荡线路,可以产生1M、2M、4M、8M的振荡频率。但是,内置的毕竟是RC振荡,在一些规定较高的场合,比如要与RS232通信需要比较精确的波特率时,建议使用外部的晶振线路。初期的90S系列,晶振两端均需要接22pF左右的电容。Mega系列实际使用时,这两只小电容不接也能正常工作。但是为了线路的规范化,我们仍建议接上。重要说明:实际应用时,假如你不需要太高精度的频率,可以使用内部RC振荡。即这部分不需要任何的外围零件。图3-3晶振电路设计(3)电源设计AVR单片机最常用的是5V与3.3V两种电压。本线路以转换成5V直流电压,电路需要变压器把220交流电压转换成28V交流电,再通过整流器,把交流电转化成直流电,通过7809和7805三端正电源稳压电路转化成直流5V。电源如图3-4。图3-4电源电路设计图第四章大林控制算法设计4.1大林控制算法原理:在许多工业过程中,被控对象一般都有纯滞后特性,并且经常碰到纯滞后较大的对象。美国IBM公司的大林,在1968年提出了一种针对工业生产过程中,具有纯滞后对象的控制算法,具有较好的效果。假设带有纯滞后的一阶、二阶惯性环节的对象为: 式中,为纯滞后时间,、为时间常数,K为放大系数。为简朴起见,设=NT,N为正整数。大林算法的设计目的是设计合适的数字控制器,使整个闭环系统的传递函数为具有时间纯滞后的一阶惯性环节,并且规定闭环系统的纯滞后时间等于对象的纯滞后时间。4.2控制器的设计及公式推导过程--电炉温度传感器D/AA/D被控对象的传递函数:采样周期T=1s,盼望闭环传递函数的惯性时间常数:设盼望闭环传递函数为:系统的广义对象传递函数:系统广义对象的脉冲传递函数为:系统的闭环脉冲传递函数为:数字控制器的脉冲传递函数为:当输入为单位阶跃时,输出为: 控制量的输出为: 4.3采样周期的选择:在本实验中,定期中断间隔选取100ms,采样周期T规定既是采样中断间隔的整数倍,又要满足,而由被控对象的表达式可知,所以取N=1,=T,=1s,取T=1s。由于,,由于采样周期T=1s,定期中断为1s,就是说1个定期中断后进行采样。第五章水温控制系统的仿真5.1振铃现象直接用上述控制算法构成闭环控制系统时,人们发现数字控制器输出U(z)会以1/2采样频率大幅度上下摆动。这种现象称为振铃现象。振铃现象与被控对象的特性、闭环时间常数、采样周期、纯滞后时间的大小等都有关系。振铃现象中的振荡是衰减的,并且于由被控对象中惯性环节的低通特性,使得这种振荡对系统的输出几乎无任何影响,但是振铃现象却会增长执行机构的磨损。在交互作用的多参数控制系统中,振铃现象尚有也许影响到系统的稳定性,所以,在系统设计中,应设法消除振铃现象。可引入振铃幅度RA来衡量振荡的强烈限度。振铃幅度RA的定义为:在单位阶跃信号的作用下,数字控制器D(z)的第0次输出与第1次输出之差值。设数字控制器D(z)可以表达为:(5-1)其中(5-2)那么,数字控制器D(z)输出幅度的变化完全取决于Q(z),则在单位阶跃信号的作用下的输出为:(5-3)根据振铃的定义,可得:(5-4)上述表白,产生振铃现象的因素是数字控制器D(z)在z平面上位于z=-1附近有极点。当z=-1时,振铃现象最严重。在单位圆内离z=-1越远,振铃现象越弱。在单位圆内右半平面的极点会减弱振铃现象,而在单位圆内右半平面的零点会加剧振铃现象。由于振铃现象容易损坏系统的执行机构,因此,应设法消除振铃现象。大林提出了一个消除振铃的简朴可行的方法,就是先找导致振铃现象的因子,然后令该因子中的z=1.这样就相称于取消了该因子产生振铃的也许性。根据终值定理,这样解决后,不会影响输出的稳态值。本设计的被控对象是具有纯滞后的一阶惯性环节,大林算法求得的数字控制器为式:(5-5)有可表达为式3-14所示:(5-6)也许引起振铃现象的因子是式3-15所示:(5-7)其振铃的幅度为:(5-8)根据r值的不同,有一下几种情况:(1)当r=0时,不存在振铃极点因子,此时不产生振铃现象(2)当r=1时,存在一个极点z=-();当τ<=时,z≈-1,存在严重的振铃。当r=2时,存在极点Z=当τ<<T时,z≈,Z≈1时,存在振铃现象。对于r=2时的振铃极点,令Z=1代入式中可得:= 此时就求得的消除振铃的数字控制器D(z)表达式为5.2Matlab仿真Matlab仿真图(无振铃现象)5.2大林算法控制系统编程设计:根据系统的总体功能和键盘设立选择一种最合适的监控程序结构,然后根据实时性的规定,合理地安排监控软件和各执行模块之间地调度关系。本部分具体介绍了基于AT89S52单片机的多路温度采集控制系统的软件设计。根据系统功能,可以将系统设计分为若干个子程序进行设计,如温度采集子程序,数据解决子程序、显示子程序、执行子程序。采用KeiluVision3集成编译环境和C语言来进行系统软件的设计。本章从设计思绪、软件系统框图出发,先介绍整体的思绪后,再逐个分析各模块程序算法的实现,最终编写出满足任务需求的程序。采集到当前的温度,通过LED数码管实现温度显示。通过按键任意设定一个恒定的温度将水环境数据与所设立的数据进行比较。当水温低于设定值时,启动加热设备,进行加热;当水温高于设定温度时,停止加热。当系统出现故障,超过控制温度范围时,自动蜂鸣报警并对温度进行实时显示。采用C语言编写代码,鉴于篇幅限制及DS18B20的应用已经规范和成熟,本文仅就主程序流程图和显示子程序流程图及其代码进行说明。通过定期器T0P3.4口的定期来实现,在此不再赘述。有关DS18B20的读写程序,编程时序分析等请见附录三。功能主程序流程图主程序通过调用温度采集子程序完毕温度数据采集,然后调用温度转换子程序转换读取温度数据,调用显示子程序进行温度显示和判断温度数据。主程序(见附录二)调用四个子程序,分别是温度采集程序、数码管显示程序、温度解决程序和数据存储程序。温度采集程序:对温度芯片送过来的数据进行解决,进行判断和显示。数码管显示程序:向数码的显示送数,控制系统的显示部分。温度解决程序:对采集到的温度和设立的上、下限进行比较,做出判断,向继电器输出关断或闭合指令。数据存储程序:对键盘的设立的数据进行存储。设定温度值设定温度值显示当前温度判断当前温度值超过设定1℃低于设定1℃报警报警是否否是图1系统总流程图5.3各模块子程序设计5.3.1主程序设计主程序的重要功能是负责温度的实时显示、读出并解决DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图2所示。通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同的两个单元中,然后通过调用显示子程序显示出来。开始开始调用读温度子程序数字变换程序显示子程序图2主程序流程图5.3.2读出温度子程序读出温度子程序的重要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。DS18B20的各个命令对时序的规定特别严格,所以必须按照所规定的时序才干达成预期的目的,同时,要注意读进来的是高位在后低位在前,共有12位数,小数4位,整数7位,尚有一位符号位。DS18B20的数据读写是通过时序解决位来确认信息互换的。当总线控制器发起读时序时,DS18B20仅被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令[BEh]或读电源模式指令[B4H]后必须立刻开始读时序,DS18B20可以提供请求信息。所有读时序必须最少60us,涉及两个读周期间至少1us的恢复时间。当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持1us,然后总线被释放在总线控制器发出读时序后,DS18B20通过拉高或拉低总线上来传输1或0。当传输逻辑0结束后,总线将被释放,通过上拉电阻回到上升沿状态。从DS18B20输出的数据在读时序的下降沿出现后15us内有效。因此,总线控制器在读时序开始后必须停止把I/O脚驱动为低电平15us,以读取I/O脚状态。DS18B20复位、应答子程序DS18B20复位、应答子程序跳过ROM匹配命令写入子程序温度转移命令写入子程序延时显示子程序DS18B20复位、应答子程序跳过ROM匹配命令写入子程序读温度命令子程序终止图3读出温度子程序5.5.3数码管显示模块本系统采用八位共阳极数码管,用模拟串口的动态显示数据。其流程图如图4所示:子程序入口子程序入口初始化查表取段码位码送译码器选通低位数码管数字是否显示亮关显示返回段码送驱动显示显示缓冲区左移YN图4数码管显示流程图5.5.4温度解决程序基于单片机水温控制系统通过DS18B20温度传感器采集到的温度和设立的温度上、下限进行比较得出结果。假如低于下限温度或是高于上限温度,则报警器进行进行报警。第六章小结与体会这次的课程设计分派到两个人一组完毕,虽然只有短短的两周时间,但是通过这些天的学习使我收获巨大,让我更加深刻的复习了课本知识,使得自己在专业技能和动手能力方面有了很大的提高,为以后自己进入社会打下了一个良好的基础。在这次的课程设计过程中,我与周航一组,我很感谢老师对我的指导及同学的帮助,我重要负责软件的仿真,周航负责硬件系统的设计。在大林控制算法的设计中,碰到了许多的难题,对于原理概念十分模糊,一些公式也忘了如何去使用,拿出了以前的课本对遗忘的知识进行了回顾,在同学的帮助下,与周航的讨论中一步一步的完毕了控制器的设计和大林算法公式的推导。使得我可以顺利的完毕本次的课程设计,通过完毕这次的课程设计,使我深刻的体会到了团队的重要性,这次的课程设计很,但两人一组的团队的合作使课程设计简朴了许多,每个人都有明确的分工,这样,再加上自己的努力终能取得成功。感谢本次的课程设计让我收获良多!第七章参考文献[1]于海生主编,微型计算机控制技术[M],北京:清华大学出版社,2023[2]李小坚,赵山林,冯晓军,龙怀冰.ProtelDXP电路设计与制版实用教程(第2版).北京:人民邮电出版社.2023[3]全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品选编(第一届-第五届).北京:北京理工大学出版社.2023[4]张琳娜,刘武发.传感检测技术及应用.北京:中国计量出版社.1999[5]沈德金,陈粤初.MCS-51系列单片机接口电路与应用程序实例.北京:北京航空航天大学出版社.1990[6]周立功等.增强型80C51单片机速成与实战.北京:北京航空航天大学出版社.2023.7[7]马忠梅等.单片机的C语言应用程序设计.北京:北京航空航天大学出版社社.1998.10[8]胡汉才.单片机原理及接口技术.北京:清华大学出版社社.1996[9]李志全等.智能仪表设计原理及应用.北京:国防工业出版社.1998.6[10]何立民.MCS-51系列单片机应用系统设计.北京:北京航空航天大学出版社.1990.1第八章附录附录一:系统程序#include<reg52.h> //52系列头文献#include<stdio.h>#defineucharunsignedchar#defineuintunsignedintsbitds=P3^4;sbitdula=P2^6;sbitbeep=P1^4; //定义蜂鸣器sbitled=P1^1;sbitjdq=P1^0;uinttemp,t,w; //定义整型的温度数据ucharflag;floatf_temp; //定义浮点型的温度数据uintlow; //定义温度下限值是温度乘以10后的结果uinthigh; //定义温度的上限值sbitled1=P1^0; //控制发光二极管sbitled2=P1^1; //控制发光二极管sbits1=P3^5;sbits2=P3^6;sbits3=P3^7;ucharflag1,flag2,flag3,flag4,s1num,qian,bai,shi,ge;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6}; //共阳数码管段码表ucharcodetable1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点的编码voiddelay(ucharz) //延时函数{uchara,b;for(a=z;a>0;a--)for(b=100;b>0;b--);}voidinit(){EA=1;ET1=1;TR1=1;TMOD=0x10;TH1=(65536-4000)/256;TL1=(65536-4000)%256;flag=0;high=100;jdq=1;}voiddidi(){beep=0;led=0;delay(500);beep=1;led=1;delay(500);}voiddsreset(void) //DS18b20复位,初始化函数{uinti;ds=0;i=103; //延时最短480uswhile(i>0)i--;ds=1; //等待16-60us,收到低电平一个约60-240us则复位成功i=4;while(i>0)i--;}bittempreadbit(void) //读1位数据函数{uinti;bitdat;ds=0;i++;ds=1;i++;i++; //i++起到延时作用dat=ds;i=8;while(i>0)i--;return(dat);}uchartempread(void) //读1字节的数据函数{uinti,j,dat;dat=0;for(i=1;i<=8;i++){j=tempreadbit();dat=(j<<7)|(dat>>1);//读出的数据最低位在最前面,这样刚好一个字节在dat里}return(dat);}voidtempwritebyte(uchardat)//向DS18B20写一个字节的数据函数{uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb) //写1 { ds=0; i++;i++; ds=1; i=8; while(i>0) i--; }else //写0{ ds=0; i=8; while(i>0)i--; ds=1; i++;i++; }}}voidtempchange(void) //DS18B20开始获取温度并转换{dsreset();delay(1);tempwritebyte(0xcc); //写跳过读ROM指令tempwritebyte(0x44); //写温度转换指令}uintget_temp() //读取寄存器中存储的温度数据{uchara,b;dsreset();delay(1);tempwritebyte(0xcc); //写跳过读ROM指令tempwritebyte(0xbe); //写温度转换指令a=tempread(); //读低8位b=tempread(); //读高8位temp=256*b+a;f_temp=temp*0.0625; //温度在寄存器中为12位,分辨率为0.0625temp=f_temp*10+0.5; //乘以10表达小数点后面只取一位returntemp; //temp是整型}voidkeyscan(){ if(s1==0) {P2=0xff; delay(5); if(s1==0) { while(!s1); s1num++; if(s1num==1) { flag=1; } if(s1num==2) { s1num=0; flag=0; } } } if(s1num==1) { flag=1; if(s2==0) { delay(5); if(s2==0) { wh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论