基于PID控制算法的温度控制综合系统的设计与仿真.doc
摘 要本设计是一个温度控制系统,温度控制在工业生产和科学研究中含相关键意义。其控制系统属于一阶纯滞后步骤,含有大惯性、纯滞后、非线性等特点,造成传统控制方法超调大、调整时间长、控制精度低。采取单片机进行炉温控制,含有电路设计简单、精度高、控制效果好等优点,对提升生产效率、促进科技进步等含相关键现实意义。PID控制法最为常见,控制输出采取PWM波触发可控硅来控制加热通断。使系统含有较高测量精度和控制精度。单片机控制部分采取AT89S51单片机为关键,采取Keil软件进行编程,同时采取分块模式,对整个系统硬件设计进行分析,分别给出了系统总体框图、温度检测调理电路、A/D转换接口电路,按键输入电路和显示电路,并对对应电路进行相关叙述软件采取PID算法进行了建模和编程,在Proteus环境中进行了仿真。关键词:PID;单片机;温度控制;Keil;Proteus Abstract This 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 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 microcomputer temperature control, has simple circuit design, high accuracy and good control effect, to improve the production efficiency, promote the progress of science and technology has important practical significance.PID control is the most common, 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.Single-chip microcomputer control part adopts single chip microcomputer 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, 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 microcomputer;The temperature control;Keil;Proteus目 录 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 1绪论 现代工业生产过程中,用于热处理加热炉,需要消耗大量电能,而且温度控制是纯滞后一阶大惯性步骤。现有企业多采取常规仪表加接触器断续控制,伴随科技进步和生产发展,这类设备对温度控制要求越来越高,除控温精度外,对温度上升速度及下降速度也提出了可控要求,显而易见常规控制难于满足这些工艺要求。伴随微电子技术发展,采取功效强、体积小、价格低智能化温度控制装置控制加热炉已成为现实。 采取单片机来对温度进行控制不仅含有控制方便、简单灵活性等优点,而且能够大幅度提升被控温度技术指标,从而能够大大提升产品质量和数量,比过去单纯采取电子线路进行PID调整控制效果要好多。 微机控制系统快速计算、灵活多样逻辑判定和高效信息加工能力使自动控制进入了更高一级领域,提升了生产过程自动化程度,降低了人工干预,并不停地完善和满足工农业生产和国防科技日益增加需要。微机控制系统因为含有成本低、体积小、功耗小、可靠性高和使用灵活等特点,所以广泛应用于工农业生产、交通运输、国防建设和空间技术等各个领域。其控制对象已从单一工厂步骤扩展到企业生产过程管理和控制。伴随微机和单片机推广使用,实现信息自动化和过程控制相结合分级分布式计算机控制,使计算机控制技术水平发展到一个崭新阶段。 现在,很多常规控制仪表和调整器已经为计算机所替换。计算机不停地监视整个生产过程,对生产中各个参数进行采样,快速进行复杂数据处理,打印和显示工艺过程统计数字和参数,并发出多种控制命令。 温度控制是工业生产过程中常常碰到过程控制,有些工艺过程对其温度控制效果直接影响着产品质量,所以设计一个较为理想温度控制系统是很有价值。2设计方案 在温度测量控制系统中,实际温度值由PT100恒流工作调理电路进行测量。为了克服PT100线性度不好缺点,在信号调理电路中加入负反馈非线性校正网络;调理电路输出电压经ADC0808转换后送入单片机AT89S51;对采样数据进行滤波及标定处理后,由3位7段数码管显示。输入设定值由4位独立按键电路进行设定,可分别对设定值十位和个位进行加1、减1操作。设定值送入单片机后,由另外一组3位7段数码管显示。数码管段码由74HC05驱动,位码由三极管2N2222A驱动。为了使两组数码管实时显示,对两组数码管进行动态扫描。整体电路原理框图图1-1所表示。图1-1整体电路原理框图系统采取PID闭环控制方案。图1-2所表示,将预置初值和温度传感器反馈信号比较得到偏差(e)进行PID运算处理得到控制量(u),经过此量来控制加热器加热时间,从而控制加热功率。因为水本身含有很大热惯性,所以必需对水温改变趋势作出估计,而且依据需要立即反方向抑制,以预防出现较大超调量波动。在PID控制中,积分步骤(I)含有很强滞后效应,而微分步骤(D)含有预见性,所以该方案最终采取PD算法,能够很好控制超调,而且稳态误差也很小。图1-2 系统控制方案 3系统硬件仿真电路3.1 温度测量调理电路图3-1温度测量调理电路本系统采取恒流工作调理电路,铂电阻选择标称值为100PT100作为温度传感器。A1、A2、A3采取低漂移运放OP07C,因为有电流经PT100传感器,所以当温度为0时,在PT100传感器上有电压降,这个电压为PT100传感器偏置电压,是运放A1输出电压一部分,使恒流工作调理电路输出实际不为零。所以需要对这个偏置电压调零,R3为调零电阻,其作用为当温度为0时,将恒流工作调理电路输出调到零。又因为PT100电阻特征为非线性,PT100在0到100改变范围内非线性误差为0.4%(0.4),因为本系统无小数显示,0.4误差本身不会对A/D量化和数码管显示造成影响,但因为软件编制中,对标度改变程序中变换系数做了近似处理,使得非线性误差靠近0.79%(0.79),就有可能对A/D量化和数码管显示造成影响,所以加进了线性化电路,运放A3及电阻R1、R4和R6一同组成了负反馈非线性校正网络。R5用于调整运放A2增益。电路调整方法以下(用一般电阻替换PT100进行调整):(1) 接入相当于0100电阻,用于R3调零。(2) 接入相当于50119.70电阻,用于R5调整增益。(3) 接入相当于100139.10电阻,用于R1或R4调整线性。 反复调整数次,在0到100温度范围内适宜为止。以温度值为横坐标,电压值为纵坐标,由表3-1分析非线性误差可知:在50时,存在最大偏差为0.005,故非线性校正后非线性误差变为0.1%(0.1),A/D量化及数码管显示不会产生误操作。表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阻值输出对应电压值。将该输出电压送到ADC0808模拟量输入通道IN0,经ADC0808进行模数转换,将标准模拟信号转换为等价数字信号。本设计选择IN0作为模拟量输入通道,则将ADC0808A、B、C三条地址线均置为低电平。转换开启信号START接到AT89S51P2.0口,转换结束状态信号EOC接P3.7口,输出许可信号OE接P3.6口,地址锁存许可信号ALE接P3.3口,因为ADC0808内部没有时钟电路,所以用AT89S51ALE经二分频接ADC0808CLK端,VREF-接地,VREF+接+5V电压。ADC0808转换结果输出到AT89S51P0.0到P0.7口,作为AT89S51输入信号。A/D转换接口电路图3-2所表示。 图3-2 A/D转换接口电路3.3 按键输入电路 本系统采取4个按键搭建键盘电路,图3-3所表示。第一个按键用来判定是转入控制处理程序运行,还是转入键盘处理子程序运行;若未按下则转入控制处理子程序运行,按下则转入键盘处理子程序运行;若第一个按键按下,则第二个按键开始起作用,用第二个按键来判定是十位进行加减操作。若第二个按键未按下,转十位进行加减操作,不然转个位进行加减操作;第三个按键为减一操作,第四个按键为加一操作。为了方便按键操作,将个位和十位设定值均设置为5,假如加一操作结果等于11,给加一单元重新赋值5,假如减一操作结果等于0FFH,给减一单元重新赋值5。这么考虑最坏情况,即用键盘设置离初始设定值最远值,第三个按键最多按5次,第四个按键最多按5次。从而大大降低了按键次数,且更方便地给出设定值。第一个键和第二个键加入,也充足考虑了总程序整体调度。图3-3 按键输入电路3.4 数码管显示电路显示电路采取两个4位LED显示数码管,共阴极接法。第一个数码管显示A/D转换数据采集采样值,选择3位显示采样值,显示范围为0到100;第二个数码管显示由键盘输入设定值,用于显示对系统温度设定,也选择3位显示设定值,显示范围为0到100。因为LED显示电路较多选择动态扫描方法,为了实现LED显示器动态扫描,除了要给显示器提供段输入外,还要对显示器位进行控制,即段控和位控。所以需要用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段数码管位码驱动输入端,三极管发射极接地,将AT89S51P3.0、P3.1、P3.2分别和一个2k电阻连接到三极管基极,用于驱动采样值显示数码管,将AT89S51P2.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 继电器控制电路 PT100温度测控系统完整电路图3-6所表示。图3-6 温度测控系统电路图4 程序设计4.1 程序整体设计程序控制思想:设置目标温度后,系统采样水温,并经过预设温度、目前温度、历史偏差等进行PID运算产生fout输出参数,经过该参数控制加热时间,从而调整加热器平均功率,实现系统PID控制。整体功效经过主程序和中止服务程序配合实现。主程序步骤:系统首先初始化I/O、定时器,以后进入主循环,进行温度采样和相关处理。在系统运行过程中经过按键重新设置目标温度值。PT100温度测控系统主程序步骤图图4-1所表示。图4-1 温度测控系统主程序4.2 子程序设计 1.PID控制实现 (1)PID介绍。PID(Proportional Integral Derivative)控制是控制工程中技术成熟、应用广泛一个控制策略,经过长久工程实践,已形成了一套完整控制算法和经典结构。它不仅适适用于数学模型已知控制系统,而且对于大多数数学模型难以确定工业过程也能够应用,在众多工业过程控制中取得了满意应用效果。 (2)PID工作原理。因为来自外界多种扰动不停产生,要想达成现场控制对象值保持恒定目标控制作用就必需不停地进行。若扰动出现使得现场控制对象(以下简称被控参数)发生改变,现场检测元件就会将这种改变采集后经变送器送到PID控制器输入端,并和其给定值(以下简称SP值)进行比较得到偏差值(以下简称e值),调整器按此偏差并以预先设定整定参数控制规律发出控制信号,去改变调整器开度,使调整器开度增加或减小,从而使现场控制对象值发生改变,并趋向于给定值(SP值),以达成控制目标,图4-2所表示。其实PID实质就是对偏差(e)值进行百分比、积分、微分运算,依据运算结果控制实施部件过程。图4-2 模拟PID控制系统原理图 PID控制器控制规律能够描述为: (4-1)百分比(P)控制能快速反应误差,从而减小稳态误差。不过,百分比控制不能消除稳态误差。百分比放大系数放大,会引发系统不稳定。积分(I)控制作用是:只要系统有误差存在,积分控制器就不停积累,输出控制量,以消除误差。所以,只要有足够时间,积分控制就能完全消除误差,使系统误差为零,从而消除稳态误差。积分作用太强会使系统超调加大,甚至使系统出现震荡。微分(D)控制能够减小超调量,克服振荡,使系统稳定性提升,同时加紧系统动态响应速度,减小调整时间,从而改善系统动态性能。依据不一样被控对象控制特征,又能够分为P、PI、PD、PID等不一样控制模型。 (3)数字PID实现。在连续时间控制系统(模拟PID控制系统)中,PID控制器应用很广泛。其设计技术成熟,长久以来形成了经典结构,参数整定方便,结构更改灵活,能满足通常控制要求。伴随计算机快速发展,大家将计算机引入到PID控制领域,也就出现了数字式PID控制。因为计算机基于采样控制理论,计算方法也不能沿袭传统模拟PID控制算法,所以必需将控制模型离散化。离散化方法为:以T为采样周期,k为采样序号,用求和形式替换积分,用增量形式(求差)替换微分,这么就能够将连续PID计算公式离散: (4-2) 式中(4-1)就能够离散为: (4-3)或: (4-4) 这么就能够让计算机或单片机经过采样方法实现PID控制。具体PID控制又分为位置式PID控制和增量式PID控制,(4-4)给出了控制量全部大小,所以称为全量式或位置式控制。假如计算机只对相邻两次做计算,只考虑在前一次基础上计算机输出量大小改变,而不是全部输出信息计算,这种控制叫做增量式PID控制算法,其实质就是求大小。而,所表示将式(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 LastError; Int SumError;PID;PIDstPID; 下面是PID运算算法程序,经过PID运算返回fout,fout值决定是否加热、加热时间是多少。PID运算实现代码以下:Float PIDCalc(PID *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; return(pp-Proportion*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-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&=0×ff7f; Else *p_IOA_Buffer=0×0080;加热时间由主函数计算。主程序中经过PIDCalc函数得到fmin参数。若该参数大于零,则开启加热器。假如PIDCalc计算结果比较大说明离目标温度相差较大,则加热时间比较长;假如计算结果比较小,说明离目标温度相差较小,加热时间相对较短。 4.PID参数整定 由PID控制原理知:百分比(P)控制能快速反应误差,减小稳态误差;百分比作用加大会引发系统稳定。积分(1)控制作用,只要系统有偏差存在,积分作用就不停地积累,输出控制量以消除误差;积分作用太强会使系统超调加大,甚至使系统出现震荡。微分(D)控制能够减小超调量,克服震荡,使系统稳定性提升。同时加紧系统动态响应速度,减小调整时间,从而改善系统动态性能。控制目标就是:反应速度尽可能快,超调量尽可能小,稳态误差趋近于零。5.A/D转换子程序 先送地址锁存许可信号ALE一个上升沿,是A.B.C地址状态送入地址锁存器中,然后送START一个上升沿是内部寄存器清0,再给其一个下降沿,开始进行A/D转换。以后判定转换结束状态信号EOC是否为1,为0则继续等候转换,为1则将转换好数字量经ADC08088个数据输出端D0D7送到AT89S51P0口。转换步骤图图4-3所表示。 图4-3 A/D转换子程序步骤图6.键盘处理子程序 按键处理子程序步骤图图4-4所表示。7.温度标定转换模块 控制系统在读入被测模拟信号并转换成数字量后,需要转换成大家所熟悉物理量,这种转换就是标度变换。线性标度变换公式为: Y=(Ymax-Ymin)(X-Nmin)/(Nmax-Nmin)+Ymin式中,Y为参数测量值;Ymax为测量范围最大值;Ymin为测量范围最小值;Nmin为对应A/D转换值;Nmin为Ymin对应A/D转换值;X为测量值Y对应A/D转换值。 本系统中,Ymin=0,Ymax=100,Nmin=0,Nmax=255,则 Y=(100-0)(X-0)/(255-0)+0=a1X+a0式中,a1=0.39,a0=0。因为x系数为小数,在单片机中编制像0.39这么小数乘法程序极难实现,假如将其取近似值0.4,则乘以最大A/D转换值后,会产生0.01×255=2.55误差。所以设线性系数为a1,最终转化结果为100,经过a1=100×256/255=100.39可确定系数。是四舍五入取100时,显示最高只能显示99,所以选择101。 8.显示子程序 显示模块功效为:使第1个数码管显示A/D转换数据采集采样值,而第2个数码管显示由按键输入设定值,用于显示对系统温度设定,在整个系统进行测控过程中,两个数码管同时显示,显示程序中采样值显示采取了常规显示程序,不再赘述。这里只谈编写显示程序中键盘显示时关键注意一点。因为最终生成设定值是有十位或个位加一和十位或个位减一键输入,须严格区分才能够编制其显示程序,此处采取方法是将个位加一、减一键输入值存放在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:LCALL ZHUANHUAN MOV 31H,A LCALL DELAY4 LCALL ZHUANHUAN MOV 32H,A LCALL DELAY4 LCALL ZHUANHUAN MOV 33H,A LCALL FILTER LCALL CHNTER LCALL SHOW JB P2.4,KONGZHI1KEY0: JB P2.4,LLL LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4KEY1: JB P2.5,KEY51 LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4KEY2: JB 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,#05H LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4KEY22: LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW AJMP KEY2KONGZHI1: LJMP KONGZHIKEY51: LJMP KEY5KEY3: JB P2.6,KEY02 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 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: JB P2.7,KEY6 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 28H MOV A,28H MOV 29H,28H CJNE A,#0FFH,KEY55 MOV 28H,#05 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4KEY55: LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW AJMP KEY5KEY6: JB P2.6,KEY01 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 LCALL DELAY4 INC 29H MOV A,29H MOV 28H,29H LCALL DELAY4 CJNE A,#9,KEY66 MOV 29H,#04 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4 LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW LCALL DELAY4 KEY66: LCALL ZHUANHUAN LCALL CHNTER LCALL SHOW AJMP KEY6 KEY01: LJMP KEY0 KONGZHI: LCALL ZHUANHUAN LCALL CHNTER LCALL WUCHA MOV A,2EH MOV 39H,A LCALL MULT1 LCALL DELAY1 LCALL DELAY1 LCALL SHOW LCALL DELAY1 LCALL DELAY1 LCALL ZHUANHUAN LCALL FILTER LCALL CHNTER LCALL WUCHA MOV 3AH,A MOV A,39H MOV B,3AH CLR