基于PID控制算法的温度控制系统的设计与仿真.docx
《基于PID控制算法的温度控制系统的设计与仿真.docx》由会员分享,可在线阅读,更多相关《基于PID控制算法的温度控制系统的设计与仿真.docx(58页珍藏版)》请在冰豆网上搜索。
基于PID控制算法的温度控制系统的设计与仿真
摘要
本设计是一种温度控制系统,温度控制在工业生产和科学研究中具有重要意义。
其控制系统属于一阶纯滞后环节,具有大惯性、纯滞后、非线性等特点,导致传统控制方式超调大、调节时间长、控制精度低。
采用单片机进行炉温控制,具有电路设计简单、精度高、控制效果好等优点,对提高生产效率、促进科技进步等具有重要的现实意义。
PID控制法最为常见,控制输出采用PWM波触发可控硅来控制加热通断。
使系统具有较高的测量精度和控制精度。
单片机控制部分采用AT89S51单片机为核心,采用Keil软件进行编程,同时采用分块的模式,对整个系统的硬件设计进行分析,分别给出了系统的总体框图、温度检测调理电路、A/D转换接口电路,按键输入电路以及显示电路,并对相应电路进行相关的阐述软件采用PID算法进行了建模和编程,在Proteus环境中进行了仿真。
关键词:
PID;单片机;温度控制;Keil;Proteus
Abstract
Thisdesignisakindoftemperaturecontrolsystem,Thetemperaturecontrolinindustrialproductionandscientificresearchisofgreatsignificance.Belongstopurefirst-orderlaglink,thecontrolsystemhasthecharacteristicsofbiginertia,purelagandnonlinear,thetraditionalcontrolovershootandadjustmenttimeislong,lowcontrolprecision.Bysinglechipmicrocomputertemperaturecontrol,hassimplecircuitdesign,highaccuracyandgoodcontroleffect,toimprovetheproductionefficiency,promotetheprogressofscienceandtechnologyhasimportantpracticalsignificance.PIDcontrolisthemostcommon,thecontroloutputPWMwavetriggeringthyristorisusedtocontroltheheatingonandoff.Makethesystemhashighaccuracyofmeasurementandcontrolprecision.Single-chipmicrocomputercontrolpartadoptssinglechipmicrocomputerAT89S51asthecore,UsingKeilsoftwareprogramming,Usingblockpatternatthesametime,analyzesthehardwaredesignofthewholesystem,respectively,oftheoverallsystemblockdiagramisgiven,thetemperaturedetectioncircuit,A/Dconversioninterfacecircuit,keyinputcircuitanddisplaycircuit,andthecorrespondingcircuitarerelatedinthispaper,thesoftware,thePIDalgorithmisusedformodelingandprogrammingintheProteussimulationenvironment.
Keywords:
PID;Singlechipmicrocomputer;Thetemperaturecontrol;Keil;Proteus
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温度测量调理电路
本系统采用恒流工作调理电路,铂电阻选用标称值为100Ω的PT100作为温度传感器。
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)接入相当于0℃的100Ω的电阻,用于R3调零。
(2)接入相当于50℃的119.70Ω的电阻,用于R5调整增益。
(3)接入相当于100℃的139.10Ω的电阻,用于R1或R4调整线性。
反复调整多次,在0到100℃温度范围内适宜为止。
以温度值为横坐标,电压值为纵坐标,由表3-1分析非线性误差可知:
在50℃时,存在最大偏差为0.005℃,故非线性校正后非线性误差变为0.1%(0.1℃),A/D量化及数码管显示不会产生误操作。
表3-1显示对照表
理想温度值
0
10
20
30
40
50
60
70
80
90
100
对应电阻值
100
103.9
107.9
111.8
115.7
119.7
123.9
127.4
131.3
135.2
139.1
实际输出电压
0.002
0.502
1.004
1.502
2.004
2.505
3.001
3.502
4.001
4.498
4.996
显示温度值
0
10
20
30
40
50
60
70
80
90
100
注释1;温度单位/℃;电阻值单位/Ω;电压单位/V。
3.2A/D转换电路
本系统采用5V的电压源,用PT100电阻传感器组成的信号调理电路作为信号的输入装置,当PT100传感器置于温度场时,调理电路将根据PT100的阻值输出相应的电压值。
将该输出电压送到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口,作为AT89S51的输入信号。
A/D转换接口电路如图3-2所示。
图3-2A/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段数码管的位码驱动输入端,三极管的发射极接地,将
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继电器控制电路
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(ProportionalIntegralDerivative)控制是控制工程中技术成熟、应用广泛的一种控制策略,经过长期的工程实践,已形成了一套完整的控制算法和典型的结构。
它不仅适用于数学模型已知的控制系统,而且对于大多数数学模型难以确定的工业过程也可以应用,在众多工业过程控制中取得了满意的应用效果。
(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系数,以及设定值、历史误差的累加和等信息。
TypedefstructPID
{
floatSetPoint;
floatProportion;
floatIntegral;
floatDerivative;
intLastError;
IntSumError;
}PID;
PIDstPID;
下面是PID运算的算法程序,通过PID运算返回fout,fout的值决定是否加热、加热时间是多少。
PID运算的实现代码如下:
FloatPIDCalc(PID*pp,intNextPoint)
{
IntdError,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控制的实现过程:
FloatPIDCalc(PID*pp,intNextPoint)
IntdError,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则将转换好的数字量经ADC0808的8个数据输出端D0~D7送到AT89S51的P0口。
转换流程图如图4-3所示。
图4-3A/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个数码管显示由按键输入的设定值,用于显示对系统的温度设定,在整个系统进行测控的过程中,两个数码管同时显示,显示程序中采样值显示采用了常规的显示程序,不再赘述。
这里只谈编写显示程序中键盘显示时主要注意的一点。
由于最后生成的设定值是有十位或个位的