基于单片机淬火炉温温度控制课程设计_第1页
基于单片机淬火炉温温度控制课程设计_第2页
基于单片机淬火炉温温度控制课程设计_第3页
基于单片机淬火炉温温度控制课程设计_第4页
基于单片机淬火炉温温度控制课程设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、基于PID控制的淬火炉炉温控制系统设计1总体方案设计这次课程设计针对PID控制的淬火炉进行温度控制,设计步骤分为以下儿步。首先进行控制系统的建模和数字控制器设计,设计方案为:选用Zieglei-Nichols方法进行PID参数整定,建立闭环控制系统,用MATLAB仿真,得到达到要求的PLD参数。硬件的设计与实现,单片机选用AT89C52,温度采集用热电偶,配合MAX6675使用,DA转换用DAC0802实现,LCD用來显示温度。系统框图如图1-1。图1-1系统框图软件设计,先编写子程序,包括A/D转换和温度检测子程序,延迟子程序,D/A转换子程序,PID控制程序,最后系统初始化并编写主程序。最

2、后用prouies进行硬件连线和仿真,看能否达到系统要求,对温度进行控制。 2控制系统建模和数字控制器设计2.1设计内容淬火是生产过程中的一道关键工序,其温度控制的精度直接影响到产品的质量。淬火炉温度控制通常由多个温区。本设计针对一个温区进行温度控制,要求控制温度范围600-800C,控制精度在lCo温度探头选用热电偶。输出0-10111A电流信号通过双向可控Ts+1硅控制器控制加热电阻两端的电压,输入电流输出电压线性关系。其对象温控数学模型为:(2-1)其中:时间常数T=400秒,放大系数K=100C/niA,滞后时间t=10秒,控制算法选用PLD控制。2.2PID控制器的原理PLD控制器是

3、按照偏差的比例、积分、微分进行控制的调节器的简称,主要针对控制对象进行参数调节。当被控对象的结构和参数不能被完全掌握,或得不到精确的数学模型时,应用PID控制技术最为方便PID控制器就是根据设定值与实际值的误差,利用比例、积分、微分等基本控制规律,或者把它们适当配合形成有PI,PD和PID等的复合控制规律,使控制系统满足性能指标要求。典型PID控制系统结构图如图2-1,对误差信号分别进行比例、积分、微分、组合控制。图2-1PID控制系统结构图PED控制算法模拟表达式为:TOC o 1-5 h z=Kpe(t)+Let)dt+Td竽(2-2)对应的模拟PID调节器的传递函数为:二器=心(1+4+

4、匚)小、E(s)Tq(2-3)在计算机控制系统中,PID控制规律的实现必须用数值逼近的方法。当采样周期相当短时,用求和代替积分,用后向差分代替微分,是模拟PID离散化变为差分方程。数字PID位置型控制算式为:(約=Kpe(k)+名左+Td心)-;伙-1)(2-4)数字PID增量型控制算式为:/=“(灯=Kpe(k)-e(k-1)+7锹)+KDe(k)-2e(k一1)+e(k-2)(2-5)其中K称为比例增益;ut匕二心亓称为积分系数;Kd=Kp称为微分系数。如果单纯的用数字PID控制器去模仿模拟调节器,不会获得更好的效果。因此必须发挥计算机运算速度快、逻辑判断功能强、编程灵活等优势、才能在控制

5、性能上超过模拟调节器。在单回路控制系统中,由于扰动作用使被控参数偏离给定值,从而产生偏差。自动控制系统的调节单元将來自变送器的测量值与给定值相比较后产生的偏差进行比例、积分、微分(PID)运算,并输出统一标准信号,去控制执行机构的动作,以实现对温度、压力、流量、也为及其他工艺参数的自动控制。比例作用P只与偏差成正比;积分作用I是偏差对时间的积累;微分作用D是偏差的变化率。比例控制能迅速反应误差,从而减少稳态误差。除了系统控制输入为0和系统过程值等于期望值这两种情况,比例控制都能给出稳态误差。当期望值有一个变化时,系统过程值将产生一个稳态误差。但是,比例控制不能消除稳态误差。比例放大系数的加大,

6、会引起系统的不稳定。为了减小稳态误差,在控制器中加入积分项,积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即使误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减少,直到等于零。积分和比例(P)通常一起使用,称为比例十积分(PI)控制器,可以使系统在进入稳态后图2-2不加PID控制器结构图 无稳态误差。如果单独用积分(I)的话,由于积分输出随时间积累而逐渐增大,故调节动作缓慢,这样会造成调节不及时,使系统稳定裕度下降。由于自动控制系统有较大的惯性组件(环节)或有滞后(delay)组件,在调节过程中可能出现过冲英至振荡。解决办法是引入微分(D)控

7、制,即在误差很大的时候,抑制误差的作用也很大;在误差接近零时,抑制误差的作用也应该是零。应用PID控制,必须适当地调整比例放大系数KP,积分时间TI和微分时间TD,使整个控制系统得到良好的性能。本次设计釆用Zieglei-Nichols方法來PID参数整定。2.3Ziegler-Nichols方法Zieglei-Nichols方法是基于系统稳定性分析的PID整定方法.在设计过程中无需考虑任何特性要求,整定方法非常简单,但控制效果却比较理想。传统的PID经验调节大体分为以下儿步:1关闭控制器的I和D元件,加大P元件,使产生振荡。2减小P,使系统找到临界振荡点。3加大I,使系统达到设定值。4重新上

8、电,观察超调、振荡和稳定时间是否符合系统要求。5针对超调和振荡的情况适当增加微分项。以上5个步骤在调节PID控制器时的普遍步骤,但是在寻找合时的I和D参数时,并非易事。JolmZiegle和NathanielNichols发明了著名的凹路整定技术使得PID算法在所有应用在工业领域内的反馈控制策略中是最常用的。Zieglei-Nichols整定技术是1942年第一次发表出来,直到现在还被广泛地应用着。所谓的对PID回路的“整定”就是指调整控制器对实际值与设定值之间的误差产生的反作用的积极程度。如果正巧控制过程是相对缓慢的话,那么PID算法可以设置成只要有一个随机的干扰改变了过程变量或者一个操作改

9、变了设定值时,就能釆取快速和显著的动作。相反地,如果控制过程对执行器是特别地灵敏而控制器是用來操作过程变量的话,那么PID算法必须在比较长的一段时间内应用更为保守的校正力。回路整定的本质就是确定对控制器作用产生的过程反作用的积极程度和PID算法对消除误差可以提供多大的帮助。经过多年的发展,Zieglei-Nichols方法已经发展成为一种在参数设定中,处于经验和计算法之间的中间方法。这种方法可以为控制器确定非常精确的参数,在此之后也可进行微调。Ziegler-Nichols方法分为两步:1构建闭环控制凹路,确定稳定极限。2根据公式计算控制器参数。稳定极限是由P元件决定的。当出现稳态振荡时就达到

10、了这个极限。产生了临界系数Kpcnt和临界振荡周期Tent确定临界系数Kpcnt和临界振荡周期Tc皿后,根据表2-1的公式,计算其他参数:表2-1PLD参数的计算控制器类型计算特征数据T.td&心P0.5KPcritPDO.SKPcrit0.12TcntKJdPI0.45KPcnt0.85TcntK几PLD0.6KPcrit0.5Tcnt0.12TcntK几52.4PID参数的整定首先建立闭环系统,采用阶跃输入,不加入PID控制器,如图2-2,用MATLAB仿真,得到输出如图2-3。Kg145刊caiXiUq龙*、o01fi?LI舍|X心f?匚:二|300k-rslzJ爭巴El莎出1异風JH亍

11、務 图2-4加入PID控制器的结构图 图2-3不加PID控制器的阶跃响应加入PID控制器的结构图如图2-4untitleduj回FileEditViewSimulationFormatToolsHelpDyS黑电念00lllormal三|鸟窗(?)彥幽|*画園今鬱Ready|100%ode45根据Zieglei-Nicliols方法,先使积分和微分系数为0,只用比例控制,比例系数从小到大,使阶跃响应出现稳态振荡,当Kp=0.655时,得到图2-5所示曲线。图2-5Kp=0.655时的曲线由此可知KPcrit二0.655,Tcrit二37,由表2-1可以计算出PID参数:=0.6KPcnt=0.

12、6*0.655=0393(2-6)-Kp=0393_0()21(2-7)0.5Tcnt0.5*37=0.12TcntKp=0.12*37*0.393=1.744(2-8)图26用计算参数得到的曲线用计算的参数进行仿真得到图2-6,发现系统超调较大,将积分系数减小,比例和微分系数进行微调,最后当Kp=0.36、心=0.0006、心=1.8时曲线如图2-7所示。图27参数调整后得到的曲线3硬件的设计与实现3.1完整系统电路图LCD1iioia图3-1完整系统电路图图3-1为本次设计的完整系统电路图。3.2温度检测本系统采用热电偶來采集温度,并使用MAX6675作为热电偶放大器和A/D转换。热电偶是

13、一种感温元件,它把温度信号转换成热电动势信号,通过电气仪表转换成被测介质的温度。热电偶测温的基本原理是两种不同成份的均质导体组成闭合回路,当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在Seebeck电动势:热电动势,这就是所谓的塞贝克效应。两种不同成份的均质导体为热电极,温度较高的一端为工作端,温度较低的一端为自由端,自由端通常处于某个恒定的温度下。根据热电动势与温度的函数关系,制成热电偶分度表,分度表是自由端温度在0C时的条件下得到的,不同的热电偶具有不同的分度表。在热电偶回路中接入第三种金属材料时,只要该材料两个接点的温度相同,热电偶所产生的热电势将保持不变,即不受第三种金

14、属接入回路中的影响。因此,在热电偶测温时,可接入测量仪表,测得热电动势后,即可知道被测介质的温度。Maxim公司新近推出的MAX6675即是一个集成了热电偶放大器、冷端补偿、AQ转换器及SPI串口的热电偶放大器与数字转换器。MAX6675的主要特性如下:简单的SPI串行口温度值输出;0C十1024C的测温范围;12位0.25C的分辨率;片内冷端补偿;高阻抗差动输入;热电偶断线检测;单一+5V的电源电压;低功耗特性;工作温度范围-20C+85C:2000V的ESD信号。MAX6675是一复杂的单片热电偶数字转换器,内部具有信号调节放大器、12位的模拟/数字化热电偶转换器、冷端补偿传感和校正、数字

15、控制器、1个SPI兼容接口和1个相关的逻辑控制。3.3温度显示本次设计的显示部分采用LM016L,可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5Vo没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚)。本次设计用LM016L显示炉温温度和用户设定的温度。3.4D/A转换电路D/A转换采用DAC0832來实现,DAC0832是双列直插式8位D/A转换器。能完成数字量输入到模拟量(电流)输出的转换。分辨率为8位,转换时间为ips,满量程误差为土1LSB,当ILE为高电平,片选信号/CS和写信号八VR1为低电平时,输入寄存器控

16、制信号为1,这种情况下,输入寄存器的输出随输入而变化。此后,当AVR1由低电平变高时,控制信号成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据DB的变化而变化。对第二级锁存来说,传送控制信号/XFER和写信号/WR2同时为低电平时,二级锁存控制信号为高电平,8位的DAC寄存器的输出随输入而变化,此后,当/WR2由低电平变高时,控制信号变为低电,于是将输入寄存器的信息锁存到DAC寄存器中。3.5加热电路加热电路如图3-2o当炉温温度低于设定的温度时,L1进行加热,而由于电容,加热的快慢取决于两个温度值的差值。4软件设计14-1主桎序流根图主程序流程图如图4-1所示

17、。热电偶检测到的温度经MAX6675放大和A/D转换送入单片机,程序首先在液晶显示器上显示开始设定的温度和实际温度,接着一直扫描键盘,如果KSO按下一次,则设定温度加1,并在液晶显示器上显示出來;如果KS1按下一次,则设定温度减1,在液晶显示器上显示出來。将设定值温度与实际值比较,计算差值,如果实际温度小于设定温度,将差值送入DAC转换器,是加热电路进行加热,如果实际温度大于设定温度,因为没有冷却装置,只能不进行加热,是温度自然将下来。运行过程对键盘扫描重复上述过程。参考文献潘新民.单片微型计算机实用系统设计.人民邮电出版社,1992.07沙占友.单片机外围电路设计M.北京:电子工业出版社,2

18、003.01于海生.微型计算机控制技术.清华大学出版社,2007孙育才.ATMEL新型AT89S51系列单片机及其应用.清华大学出版社,2005.01贾金玲.单片机原理及应用.电子科技大学出版社,2004.08附录1主程序include#iiicludeinclude#iiiclude#mclude#iiiclude#mclude#defineucharunsignedchar#defineunitunsignedintuchaim;sbitlcd=P2A0;sbitDOUT=P2A3;sbitSCLK=P2A4;sbitCS=P2A5;sbitle=P2人1;sbitoe=P2A2;sbit

19、RELAY=P2人6;sbitKSO=P1AO;sbitKS1=P1A1;sbitKS2=P1A2;ucharcodeLcdBufl=Settemp:n;ucharcodeLcdBuf2=nReltemp:11;ucharVief=5;uchara6;ucharg6;unsignedcharsumout;umtSET_TEMP=650;unsignedintiead_max6675(void)unsignedchar1;unsignedintAD=0;cs=o;SCLK=0;/*输出数据D15*/SCLK=1;foi(i=12;i0;i-)/*读取转换结果*/SCLK=0;if(DOUT=l)

20、AD十十;AD=AD1;/*数据左移*/SCLK=1;SCLK=0;/flag=SO;/*读取D2断偶标志*7SCLK=1;SCLK=O;严输出数据DI*/SCLK=1;SCLK=O;严输出数据DO*/SCLK=1;CS=1;letuinAD;unsignedADC1()long1;uintq=0;l=read_max6675(j;1=(24489/4100)*l*VieR1;转换为电压值1=1+7500;g0=(l/10000)%10+*0*;取得整数值到数组gl=(l/1000)%10+,0,;g2=(l/100)%10+0,;a3=T;忽略小数/a4=t%10+,0,;q=(g00)*1

21、0Q+(gl0尸10+(g2卜O);letuinq;voidADCQlongt; t=read_max6675(J;t=(24489/4100)*t*VieRl;/转换为电压值t=t+7500;a0=(t/10000)%l0+0;取得整数值到数组al=(t/1000)%10+,0,;a2=(t/100)%10+0,;voidconstant_tempeiatuie()恒温unitb;b=(a0-,0,)*100+(al-,0,)*10+(a2-,0,);if(b=SET_TEMP)RELAY=O;m=SET_TEMP-b;m=(unsignedcha】)(m/256);elseRELAY=1;

22、m=SET_TEMP-b;m=(unsignedcha】)(m/256);voiddelay_ms(ucharms)uniti,j;foi(i=0;ims;i+)foi0=0;jSetPoint-NextPoint;/*计算当前偏差*/pp-SuniEnoi+=Enoi;/*积分总偏差*/dEnoi=pp-LastEnoi-pp-PrevEnor;pp-PievEnoi=pp-LastEnor;/*当前微分*/pp-LastEnoi=Enor;retuni(NextPomt+pp-Pioponionpp-Deiivative*dEnoi);/*三个误差值移位*/Enoi十pp-Integral

23、*pp-SumEnor十/*返回总的误差值*/voidpid(void)PLDsPID;doublelOut;unsignedchariln;doublex;sPID.Pioportion=0.36;sPID.hitegial=0.0006;sPID.Deiivative=1.8;sPID.SetPoint=2.0;unsignedchaisumout;进入循环检测状态中*/unsignedchari;rLi=ADC10;fbr(i=0;i50;i+)x=5.0*(double)ihi/256.0;lOut=PIDCalc(&sPID,x);sumout=iOut*256/5;voiddac0

24、832(out)/*定义PID结构体变量*/*PID响应输出*/*PLD反馈(Input)*/*设置PED比例系数*/*设置PID积分系数*/*设置PID微分系数*/*设置PID输出值*/*PID/*读传感器输出*/*计算PID输出*/RELAY=O;P3=out;delav(lOO);RELAY=1;voidkey(void)if(KSO=O)delay_ms(l);if(KSO=O)SET_TEMP卄;while(!KS0);if(KSl=0)delay_ms(l);if(KSl=0)SET_TEMP-;while(!KSl);display_onechar(0,9,SET_TEMP/10

25、0+,0,);display_onechar(0,i0,(SET_TEMP%100)/10十O);display_onechai(0,ll,SET_TEMP%10十O);mainQlcd_init();display_stiing(O,O,LcdBufl);display_string(1,0,LcdBuf2);Wnte_CGRAM(LcdBuf);向CGRAM写入自定义的摄氏度符号display_onechai(0,12,0);显示自定义的摄氏度符号display_onechar(0,13,1);显示自定义的摄氏度符号displav_onechai(1,12,0);display_onech

26、ar(1,13,1);while(l)key();ADCO;constaiit_teniperanue();display_stfing(1、9,a);P】d();dac0832(sumout);delay_ms(100);附录2LCD程序#ifndefLCD_1602_#deflneLCD_1602_#iiiclude#iiicludesbitLCD_RS=P2A0;sbitLCD_RW=P2A1;sbitLCD_E=P2人2;#defineLCD_DATAPOunsignedchaicodeLcdBuf=自定义汉字5X7;最大能存储64个字节OxOc.Ox12,0 x12,OxOc.OxO

27、O,0 x00.0 x00,0 x00,0 x0f,0 x10,0 x10,0 x10.Ox10,0 x10.OxOfOxOO,;voiddelay(unsignedmtms)unsignedchaiy;fbi(;ms0;ms)for(y=120;y0;y-);bitlcd_busy()测试LCD忙碌状态bitresult;LCD_RS=0;LCD_RW=1;LCD_E=1;_nop_0;_nop_0;_nop_0;_nop_0;lesult=(LCD_DATA&0 x80);LCD_E=0;retuinresult;voidWnteCommand(unsignedchaiwdata)while(lcd_

温馨提示

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

评论

0/150

提交评论