《基于PID控制算法的温度控制系统的设计及仿真.doc》由会员分享,可在线阅读,更多相关《基于PID控制算法的温度控制系统的设计及仿真.doc(75页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、. . .word. .摘 要本设计是一种温度控制系统,温度控制在工业生产和科学研究中具有重要意义。其控制系统属于一阶纯滞后环节,具有大惯性、纯滞后、非线性等特点,导致传统控制方式超调大、调节时间长、控制精度低。采用单片机进展炉温控制,具有电路设计简单、精度高、控制效果好等优点,对提高生产效率、促进科技进步等具有重要的现实意义。PID控制法最为常见,控制输出采用PWM波触发可控硅来控制加热通断。使系统具有较高的测量精度和控制精度。单片机控制局部采用AT89S51单片机为核心,采用Keil软件进展编程,同时采用分块的模式,对整个系统的硬件设计进展分析,分别给出了系统的总体框图、温度检测调理电路、
2、A/D转换接口电路,按键输入电路以及显示电路,并对相应电路进展相关的阐述软件采用PID算法进展了建模和编程,在Proteus环境中进展了仿真。关键词:PID;单片机;温度控制;Keil;Proteus. .word. .AbstractThis design is a kind of temperature control system,The temperature control in industrial production and scientific research is of great significance.Belongs to pure first-order lag
3、link, the control system has the characteristics of big inertia, pure lag and nonlinear, the traditional control overshoot and adjustment time is long, low control precision.By single chip microputer temperature control, has simple circuit design, high accuracy and good control effect, to improve th
4、e production efficiency, promote the progress of science and technology has important practical significance.PID control is the most mon, the control output PWM wave triggering thyristor is used to control the heating on and off.Make the system has high accuracy of measurement and control precision.
5、Single-chip microputer control part adopts single chip microputer AT89S51 as the core,Using Keil software programming,Using block pattern at the same time, analyzes the hardware design of the whole system, respectively, of the overall system block diagram is given, the temperature detection circuit,
6、 A/D conversion interface circuit, key input circuit and display circuit, and the corresponding circuit are related in this paper, the software, the PID algorithm is used for modeling and programming in the Proteus simulation environment.Key words:PID;Single chip microputer;The temperature control;K
7、eil;Proteus. .word. .目 录 1绪论12设计方案23系统硬件仿真电路33.1 温度测量调理电路33.2 A/D转换电路43.3 按键输入电路53.4 数码管显示电路63.5 温度控制电路74 程序设计94.1 程序整体设计94.2 子程序设计114.3源程序设计195 软件调试与运行结果41结论42致谢43参考文献44. .word. .1绪论 现代工业生产过程中,用于热处理的加热炉,需要消耗大量的电能,而且温度控制是纯滞后的一阶大惯性环节。现有企业多采用常规仪表加接触器的断续控制,随着科技进步和生产的开展,这类设备对温度的控制要求越来越高,除控温精度外,对温度上升速度及下
8、降速度也提出了可控要求,显而易见常规控制难于满足这些工艺要求。随着微电子技术的开展,采用功能强、体积小、价格低的智能化温度控制装置控制加热炉已成为现实。 采用单片机来对温度进展控制不仅具有控制方便、简单灵活性等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量,比过去单纯采用电子线路进展PID调节的控制效果要好的多。 微机控制系统的快速计算、灵活多样的逻辑判断和高效的信息加工能力使自动控制进入了更高一级的领域,提高了生产过程的自动化程度,减少了人工干预,并不断地完善和满足工农业生产和国防科技日益增长的需要。微机控制系统由于具有本钱低、体积小、功耗小、可靠性高和使用灵活
9、等特点,因而广泛的应用于工农业生产、交通运输、国防建立和空间技术等各个领域。其控制对象已从单一的工厂流程扩展到企业生产过程的管理和控制。随着微机和单片机的推广使用,实现信息自动化与过程控制相结合的分级分布式计算机控制,使计算机控制技术的水平开展到一个崭新的阶段。 现在,许多常规的控制仪表和调节器已经为计算机所取代。计算机不断地监视整个生产过程,对生产中的各个参数进展采样,迅速进展复杂的数据处理,打印和显示工艺过程的统计数字和参数,并发出各种控制命令。 温度控制是工业生产过程中经常遇到的过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的
10、。. .word. .2设计方案在温度测量控制系统中,实际温度值由PT100恒流工作调理电路进展测量。为了克制PT100线性度不好的缺点,在信号调理电路中参加负反响非线性校正网络;调理电路的输出电压经ADC0808转换后送入单片机AT89S51;对采样数据进展滤涉及标定处理后,由3位7段数码管显示。输入的设定值由4位独立按键电路进展设定,可分别对设定值的十位和个位进展加1、减1操作。设定值送入单片机后,由另外一组3位7段数码管显示。数码管的段码由74HC05驱动,位码由三极管2N2222A驱动。为了使两组数码管实时显示,对两组数码管进展动态扫描。整体的电路原理框图如图1-1所示。图1-1整体电
11、路原理框图系统采用PID闭环控制方案。如图1-2所示,将预置初值与温度传感器反响信号比拟得到偏差(e)进展PID运算处理得到控制量(u),通过此量来控制加热器的加热时间,从而控制加热功率。由于水本身具有很大的热惯性,所以必须对水温的变化趋势作出预测,并且根据需要及时反方向抑制,以防止出现较大的超调量的波动。在PID控制中,积分环节I具有很强的滞后效应,而微分环节D具有预见性,所以该方案最终采用PD算法,能够很好的控制超调,并且稳态误差也很小。图1-2 系统控制方案3系统硬件仿真电路3.1 温度测量调理电路图3-1温度测量调理电路本系统采用恒流工作调理电路,铂电阻选用标称值为100的PT100作
12、为温度传感器。A1、A2、A3采用低漂移运放OP07C,由于有电流经PT100传感器,所以当温度为0时,在PT100传感器上有电压降,这个电压为PT100传感器的偏置电压,是运放A1输出电压的一局部,使恒流工作调理电路的输出实际不为零。所以需要对这个偏置电压调零,R3为调零电阻,其作用为当温度为0时,将恒流工作调理电路的输出调到零。又因为PT100的电阻特性为非线性,PT100在0到100变化X围内非线性误差为0.4%0.4,由于本系统无小数显示,0.4的误差本身不会对A/D量化和数码管显示造成影响,但由于软件编制中,对标度变化程序中的变换系数做了近似处理,使得非线性误差接近0.79%0.79
13、,就有可能对A/D量化和数码管显示造成影响,所以加进了线性化电路,运放A3及电阻R1、R4和R6一同构成了负反响非线性校正网络。R5用于调整运放A2的增益。电路的调整方法如下用普通电阻代替PT100进展调整:(1) 接入相当于0的100的电阻,用于R3调零。(2) 接入相当于50的119.70的电阻,用于R5调整增益。(3) 接入相当于100的139.10的电阻,用于R1或R4调整线性。 反复调整屡次,在0到100温度X围内适宜为止。以温度值为横坐标,电压值为纵坐标,由表3-1分析非线性误差可知:在50时,存在最大偏差为0.005,故非线性校正后非线性误差变为0.1%0.1,A/D量化及数码管
14、显示不会产生误操作。表3-1 显示对照表理想温度值0102030405060708090100对应电阻值100103.9107.9111.8115.7119.7123.9127.4131.3135.2139.1实际输出电压0.0020.5021.0041.5022.0042.5053.0013.5024.0014.4984.996显示温度值0102030405060708090100注释1;温度单位/;电阻值单位/;电压单位/V。3.2 A/D转换电路本系统采用5V的电压源,用PT100电阻传感器组成的信号调理电路作为信号的输入装置,当PT100传感器置于温度场时,调理电路将根据PT100的阻
15、值输出相应的电压值。将该输出电压送到ADC0808的模拟量输入通道IN0,经ADC0808进展模数转换,将标准的模拟信号转换为等价的数字信号。本设计选用IN0作为模拟量输入通道,那么将ADC0808的A、B、C三条地址线均置为低电平。转换启动信号START接到AT89S51的P2.0口,转换完毕状态信号EOC接P3.7口,输出允许信号OE接P3.6口,地址锁存允许信号ALE接P3.3口,由于ADC0808内部没有时钟电路,所以用AT89S51的ALE经二分频接ADC0808的CLK端,VREF-接地,VREF+接+5V电压。ADC0808的转换结果输出到AT89S51的P0.0到P0.7口,作
16、为AT89S51的输入信号。A/D转换接口电路如图3-2所示。 图3-2 A/D转换接口电路3.3 按键输入电路 本系统采用4个按键搭建键盘电路,如图3-3所示。第一个按键用来判断是转入控制处理程序运行,还是转入键盘处理子程序运行;假设未按下那么转入控制处理子程序运行,按下那么转入键盘处理子程序运行;假设第一个按键按下,那么第二个按键开场起作用,用第二个按键来判断是十位进展加减操作。假设第二个按键未按下,转十位进展加减操作,否那么转个位进展加减操作;第三个按键为减一操作,第四个按键为加一操作。为了方便按键操作,将个位和十位的设定值均设置为5,如果加一操作结果等于11,给加一单元重新赋值5,如果
17、减一操作结果等于0FFH,给减一单元重新赋值5。这样考虑最坏情况,即用键盘设置离初始设定值最远的值,第三个按键最多按5次,第四个按键最多按5次。从而大大减少了按键次数,且更方便地给出设定值。第一个键和第二个键的参加,也充分考虑了总程序的整体调度。图3-3 按键输入电路3.4 数码管显示电路显示电路采用两个4位LED显示数码管,共阴极接法。第一个数码管显示A/D转换数据采集的采样值,选用3位显示采样值,显示X围为0到100;第二个数码管显示由键盘输入的设定值,用于显示对系统的温度设定,也选用3位显示设定值,显示X围为0到100。由于LED显示电路较多项选择用动态扫描方式,为了实现LED显示器的动
18、态扫描,除了要给显示器提供段的输入外,还要对显示器的位进展控制,即段控和位控。所以需要用P1口输出8条段控线;位控线由挑选的P2.1、P2.2、P2.3、P3.0、P3.1和P3.2输出,其中P2.1、P2.2和P2.3用于驱动键盘输入的设定值和数码管位控线,其余用于驱动显示A/D转换数码管的数据码位控线,位控线的数目等于数码管显示的位数。P1接口最多可连接8个LED显示器。为提高显示亮度,通常加74HC05进展段控输出驱动,与7段数码管的段码驱动输入端相连,由于位控的驱动电流较大,8段全亮需40到60mA,所以用三极管9012提高驱动能力,其集电极接到7段数码管的位码驱动输入端,三极管的发射
19、极接地,将AT89S51的P3.0、P3.1、P3.2分别与一个2k的电阻连接到三极管的基极,用于驱动采样值显示数码管,将AT89S51的P2.0、P2.1和P2.2口分别与一个2k的电阻连接到三极管的基极,用于驱动设定值显示数码管。显示电路如图3-4所示。图3-4 显示电路3.5 温度控制电路系统的电阻丝和风扇均采用如图3-5所示的电路形式。此电路采用晶体管驱动固态继电器。当P3.4为低电平,继电器RL1吸合;当P3.4或P3.5为高电平时,继电器RL1释放。采用这种控制逻辑可以使继电器在上电复位或单片机复位时不吸合。继电器由晶体管2N2222A驱动,它可以提供所需的驱动电流。图3-5 继电
20、器控制电路PT100温度测控系统的完整电路如图3-6所示。图3-6 温度测控系统电路图4 程序设计4.1 程序整体设计程序的控制思想:设置目标温度后,系统采样水温,并通过预设温度、当前温度、历史偏差等进展PID运算产生fout输出参数,通过该参数控制加热时间,从而调节加热器的平均功率,实现系统的PID控制。整体功能通过主程序和中断效劳程序配合实现。主程序流程:系统首先初始化I/O、定时器,之后进入主循环,进展温度采样和相关处理。在系统运行过程中通过按键重新设置目标温度值。PT100温度测控系统的主程序流程图如图4-1所示。图4-1 温度测控系统主程序4.2 子程序设计 1.PID控制的实现 1
21、PID简介。PIDProportional Integral Derivative控制是控制工程中技术成熟、应用广泛的一种控制策略,经过长期的工程实践,已形成了一套完整的控制算法和典型的构造。它不仅适用于数学模型的控制系统,而且对于大多数数学模型难以确定的工业过程也可以应用,在众多工业过程控制中取得了满意的应用效果。 2PID工作原理。由于来自外界的各种扰动不断产生,要想到达现场控制对象值保持恒定的目的控制作用就必须不断地进展。假设扰动出现使得现场控制对象以下简称被控参数发生变化,现场检测元件就会将这种变化采集后经变送器送到PID控制器的输入端,并与其给定值以下简称SP值进展比拟得到偏差值以下
22、简称e值,调节器按此偏差并以预先设定的整定参数控制规律发出控制信号,去改变调节器的开度,使调节器的开度增加或减小,从而使现场控制对象值发生改变,并趋向于给定值SP值,以到达控制的目的,如图4-2所示。其实PID的实质就是对偏差(e)值进展比例、积分、微分运算,根据运算结果控制执行部件的过程。图4-2 模拟PID控制系统原理图 PID控制器的控制规律可以描述为: (4-1)比例P控制能迅速反响误差,从而减小稳态误差。但是,比例控制不能消除稳态误差。比例放大系数的放大,会引起系统的不稳定。积分I控制的作用是:只要系统有误差存在,积分控制器就不断的积累,输出控制量,以消除误差。因而,只要有足够的时间
23、,积分控制就能完全消除误差,使系统误差为零,从而消除稳态误差。积分作用太强会使系统超调加大,甚至使系统出现震荡。微分D控制可以减小超调量,克制振荡,使系统的稳定性提高,同时加快系统的动态响应速度,减小调整时间,从而改善系统的动态性能。根据不同被控对象的控制特性,又可以分为P、PI、PD、PID等不同的控制模型。 3数字PID的实现。在连续时间控制系统模拟PID控制系统中,PID控制器的应用非常广泛。其设计技术成熟,长期以来形成了典型的构造,参数整定方便,构造更改灵活,能满足一般的控制要求。随着计算机的快速开展,人们将计算机引入到PID控制领域,也就出现了数字式PID控制。由于计算机基于采样控制
24、理论,计算方法也不能沿袭传统的模拟PID控制算法,所以必须将控制模型离散化。离散化的方法为:以T为采样周期,k为采样序号,用求和的形式代替积分,用增量的形式求差代替微分,这样就可以将连续的PID计算公式离散: (4-2)式中4-1就可以离散为: (4-3)或者: (4-4) 这样就可以让计算机或单片机通过采样的方式实现PID控制。具体的PID控制又分为位置式PID控制和增量式PID控制,4-4给出了控制量的全部大小,所以称为全量式或位置式控制。如果计算机只对相邻的两次做计算,只考虑在前一次根底上计算机输出量的大小变化,而不是全部输出信息的计算,这种控制叫做增量式PID控制算法,其实质就是求的大
25、小。而,所示将式4-4作自减变换有: 4-5式中:2.温度控制PID算法设计本系统利用上面所介绍的位置式PID算法,将温度传感器采样输入作为当前输入,与设定值进展相减得到偏差ek,然后再对其进展PID运算产生输出结果fout,最后让fout控制继电器的时间进而控制加热器。为了方便PID运算,首先建立一个PID的构造体数据类型。该数据类型用于保护PID运算所需要的P、I、D系数,以及设定值、历史误差的累加和等信息。Typedef struct PID float SetPoint; float Proportion; float Integral; float Derivative; int L
26、astError; Int SumError;PID;PIDstPID; 下面是PID运算的算法程序,通过PID运算返回fout,fout的值决定是否加热、加热时间是多少。PID运算的实现代码如下:Float PIDCalcPID *pp,int NextPoint Int dError,Error; Error=pp-SetPoint*10-NextPoint; pp-SumError + =Error; dError =Error - pp -LastError; pp-PrevError =pp-LastError; pp-LastError = Error; returnpp-Prop
27、ortion*Error +pp-Integral*pp-SumError -pp-Derivative*dError);在实际运算时,由于水具有很大的热惯性,而且PID运算中的1积分项具有非常明显的延迟效应,不能保存,所以必须把积分项去掉。相反,D微分项有很强的预见性,能够加快反响速度,抑制超调量,因此微分作用应该适当加强才能到达较佳的控制效果,系统最终选择PD控制方案。下面是PD控制的实现过程:Float PIDCalc(PID*pp,int NextPoint) Int dError,Error; Error=pp-SetPoint*10-NextPoint; dError=Error-
28、pp-LastError; pp-PrevError=pp-LastError; pp-LastError=Error return(pp-Proportion*Error -pp-Derivative*dError );3.温度控制的实现 通过温度的PID运算,产生结果fmin,该参数决定是否加热。加热时间多长。 stPID.Proportion=2; stPID.Integral=0; stPID.Derivative=5; fOut=PIDCalc(&stPID,(int)(fT*10); if(fOut=0) *p_IOA_Buffer&=0ff7f; Else *p_IOA_Buff
29、er=00080;加热时间由主函数计算。主程序中通过PIDCalc函数得到fmin参数。假设该参数大于零,那么开启加热器。如果PIDCalc计算结果比拟大说明离目标温度相差较大,那么加热时间比拟长;如果计算结果比拟小,说明离目标温度相差较小,加热时间相对较短。 4.PID参数的整定 由PID控制原理知:比例P控制能迅速反映误差,减小稳态误差;比例作用的加大会引起系统的稳定。积分1控制的作用,只要系统有偏差存在,积分作用就不断地积累,输出控制量以消除误差;积分作用太强会使系统超调加大,甚至使系统出现震荡。微分D控制可以减小超调量,克制震荡,使系统的稳定性提高。同时加快系统的动态响应速度,减小调整
30、时间,从而改善系统的动态性能。控制的目标就是:反响速度尽可能快,超调量尽可能小,稳态误差趋近于零。5.A/D转换子程序 先送地址锁存允许信号ALE一个上升沿,是A.B.C地址状态送入地址锁存器中,然后送START一个上升沿是内部存放器清0,再给其一个下降沿,开场进展A/D转换。之后判断转换完毕状态信号EOC是否为1,为0那么继续等待转换,为1那么将转换好的数字量经ADC0808的8个数据输出端D0D7送到AT89S51的P0口。转换流程图如图4-3所示。 图4-3 A/D转换子程序流程图6.键盘处理子程序 按键处理子程序流程图如图4-4所示。7.温度标定转换模块 控制系统在读入被测模拟信号并转
31、换成数字量后,需要转换成人们所熟悉的物理量,这种转换就是标度变换。线性标度变换公式为: Y=(Ymax-Ymin)X-Nmin/Nmax-Nmin+Ymin式中,Y为参数测量值;Ymax为测量X围最大值;Ymin为测量X围最小值;Nmin为对应的A/D转换值;Nmin为Ymin对应的A/D转换值;X为测量值Y对应的A/D转换值。 本系统中,Ymin=0,Ymax=100,Nmin=0,Nmax=255,那么 Y=100-0X-0/(255-0)+0=a1X+a0式中,a1=0.39,a0=0。由于x的系数为小数,在单片机中编制像0.39这样的小数的乘法程序很难实现,如果将其取近似值0.4,那么
32、乘以最大A/D转换值后,会产生0.01255=2.55的误差。所以设线性系数为a1,最终转化的结果为100,通过a1=100256/255=100.39可确定系数。是四舍五入取100时,显示最高只能显示99,所以选用101。 8.显示子程序 显示模块的功能为:使第1个数码管显示A/D转换数据采集的采样值,而第2个数码管显示由按键输入的设定值,用于显示对系统的温度设定,在整个系统进展测控的过程中,两个数码管同时显示,显示程序中采样值显示采用了常规的显示程序,不再赘述。这里只谈编写显示程序中键盘显示时主要注意的一点。由于最后生成的设定值是有十位或个位的加一和十位或个位的减一键输入,须严格区分才可以
33、编制其显示程序,此处采用的方法是将个位的加一、减一键输入的值存放在28H,而十位的加一、减一键输入的值存放在34H,然后驱动不同的位码即可正常显示。流程图如图4-5所示。图4-4 按键处理子程序流程图图4-5 显示处理子程序流程图4.3源程序设计ORG 0000HJMP STARTORG 0040HSTART:LCALL ZHUANHUAN SETB P3.0 SETB P3.1 SETB P3.2 SETB P2.0 SETB P2.1 SETB P2.2 LCALL DELAY1 MOV 34H,#05 MOV 35H,#05 MOV 28H,#05 MOV 29H,#05LLL:LCAL
34、L ZHUANHUAN MOV 31H,A LCALL DELAY4 LCALL ZHUANHUAN MOV 32H,A LCALL DELAY4 LCALL ZHUANHUAN MOV 33H,A LCALL FILTER LCALL CHNTER LCALL SHOW P2.4,KONGZHI1KEY0: P2.4,LLL LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4KEY1: P2.5,KEY51 LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW
35、LCALL DELAY4KEY2: P2.7,KEY3 LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL SHOW LCALL SHOW LCALL SHOW LCALL SHOW LCALL SHOW LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW DEC 34H MOV A,34H MOV 35H,34H CJNE A,#0FFH,KEY22 MOV 34H,#
36、05H LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4KEY22: LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW AJMP KEY2KONGZHI1: LJMP KONGZHIKEY51: LJMP KEY5KEY3: P2.6,KEY02 LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL SHOW LCALL SHOW LCALL SHOW LCALL SHOW LCALL SHOW LCALL DELAY4 LCALL ZHUANH
37、UAN LCALL CHNTER LCALL SHOW LCALL DELAY4 INC 35H MOV A,35H MOV 34H,35H LCALL DELAY4 CJNE A,#0AH,KEY33 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4 MOV 35H,#04 LCALL DELAY4KEY33: LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW AJMP KEY3KEY02: LJMP KEY0KEY5: P2.7,KEY6 LCALL DELAY4 LCALL ZHUANHUAN LCAL
38、L CHNTER LCALL SHOW LCALL SHOW LCALL SHOW LCALL SHOW LCALL SHOW LCALL SHOW LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW DEC 28H MOV A,28H MOV 29H,28H CJNE A,#0FFH,KEY55 MOV 28H,#05 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4KEY55: LCALL ZHUANHUAN