基于PID算法水温控制系统设计报告Word格式.docx

上传人:b****7 文档编号:22404717 上传时间:2023-02-03 格式:DOCX 页数:36 大小:306.29KB
下载 相关 举报
基于PID算法水温控制系统设计报告Word格式.docx_第1页
第1页 / 共36页
基于PID算法水温控制系统设计报告Word格式.docx_第2页
第2页 / 共36页
基于PID算法水温控制系统设计报告Word格式.docx_第3页
第3页 / 共36页
基于PID算法水温控制系统设计报告Word格式.docx_第4页
第4页 / 共36页
基于PID算法水温控制系统设计报告Word格式.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

基于PID算法水温控制系统设计报告Word格式.docx

《基于PID算法水温控制系统设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《基于PID算法水温控制系统设计报告Word格式.docx(36页珍藏版)》请在冰豆网上搜索。

基于PID算法水温控制系统设计报告Word格式.docx

在本仿真设计中DS18B20与51单片机的P3.4口链接。

DS18B20可以仿真设置环境温度,来完成设计要求。

本次设计采用proteus仿真软件,以AT89C51单片机做为主控单元。

51单片机上连接晶振和复位电路,保证单片机的正常运行。

P0口与LCD液晶连接,显示测量结果。

P1.0,P1.4,P3.3,P3.4分别与4个控制按键连接。

由AT89C51的端口丰富使得整个系统设计起来方便简单,线路清晰,且AT89C51是一个高性能,低功耗的CMOS8位单片机,AT89C51设计和配置了振荡频率可为0Hz,在实际的应用中性价比很高,是温控系统的不二选择。

本设计中选择AT89C51做为主控单位也是考虑到了实际的需求和做此设计的意义的[5]。

2系统的硬件设计

2.1系统硬件构成概述

本章主要介绍本次设计中的硬件设计部分,其中包含:

显示模块、按键扫描模块、温度采集模块、温度加热模块。

2.2各单元总体说明

1、显示模块:

本设计中采用LCD液晶显示温度值,其中最后一位为小数位。

2、按键模块:

本设计中采用5按键设置,第一按键为复位按键,第2、3、4、5按键为温度档位按键,连接上拉电阻使其未按键时能够保持高电平。

3、温度采集模块:

本次设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制,数字温度传感器DS18B20只需一个引脚,即可与单片机进行通信,在设计中将DS18B20与51单片机的P3.4口连接,用其来完成温度的测量[6]。

4、温度加热模块:

本设计采用加热棒来进行温度值的控制,其配有功率显示表,以便在仿真中与温度传感器DS18B20相对应,便于统计。

加热棒与光电耦合器连接,光电耦合器通过RELAY与51单片机的P2.6口连接。

通过51单片机发送信号来控制加热棒的运作。

2.3按键单元

一般的键盘设计采用的是硬件设计,可是其在仿真设计中连接,线路会比较麻烦。

所以在本此设置中我采用的是5按键软件控制,第一个按键为复位按键,其他两个为档位调节按键,K1为50度、K2为60度、K3为70度、K4为80度,方便简洁,线路清晰设计起来也较为方便。

连接上上拉电阻,使其当未有按键按下时,各各按键位都处于高电平。

按键操作说明:

1号按键为复位设置按键,第一次按下它时,1号按键位将处于低电平,LCD液晶将会显示未加热时的温度,此时,可通过档位按键设置温度,然后进行其他功能模块的操作。

电路如图3.1所示:

图3.1按键电路

3.6温度测试单元

在本设计中温度测试采用温度芯片DS18B20与51单片机的P3.4口连接。

此集成芯片,可以很好的减少外界的干扰。

其内部集成A/D转换器,使得电路结构更简单,且减少了温度测量转换时的精度损失,从而使测量的温度值更为精确,具有实在的设计意义。

且数字温度传感器DS18B20只用一个引脚,即可与单片机进行通信了,大大的减少了接线麻烦的问题,使得单片机更加具扩展性。

由于DS18B20芯片的小型化,通过单条数据线,就可以和主电路连接,在实际应用中,可把数字温度传感器DS18B20做成测温探头,可方便的探入到狭小的地方,从而增加了实用性[9]。

DS18B20的开始运作时,首先要做的是复位工作,即在开始工作前,51单片机将会给DS18B20当总先发送一个不小于480us的低电平信号,对其进行复位。

DS18B20在接收到这个信号后的15~60us内会回发一个芯片的存在脉冲。

为了接收存在脉冲,数据当总线将会被控制器拉高,存在脉冲是一个60~240us的低电平信号。

接下去将进行51单片机与DS18B20间的通信。

51单片机发送控制的指令共有5指令,而每一个工作周期只可以发送一条指令。

5条指令分别为:

读取数据、指定匹配的芯片、跳跃ROM、芯片搜索、报警芯片搜索。

接着51单片机发送存储器操作指令(在指令发送给DS18B20后,马上就发送存储器操作指令了)。

存储器指令的功能就是控制DS18B20怎么样进行工作。

DS18B20同51单片机的接线如图3.4所示:

见图可知DS18B20只需与单片机的一个端口连接即可,不过当总线为开漏需要外接一个上拉电阻

,为4.7KΩ。

3.7温度控制器件单元

在本次设计中,是采用加热棒通过PID算法来对温度进行控制的,以便在仿真中与温度传感器DS18B20相对应,便于统计。

51单片机通过RELAY口向光电耦合器发送高电平时,无电流流过,光电耦合器将不导通,继电器也不能导通,继电器的线圈无电流通过,RL1打向电源处,加热棒通电开始工作加热,可以看出加热棒提升的温度。

当测量到的温度值超出先前设定的预期温度值上限时,51单片机通同过RELAY口向光电耦合器发送低电平时,光电耦合器将导通,有电流流过,使得继电器也导通,继电器的线圈有电流通过,RL1打向继电器线圈,加热棒断开连接,停止工作,使温度慢慢的回落。

温控系统连接方法如图3.5所示:

图3.5温控系统电路

4恒温控制算法研究(PID)

4.1PID控制器的设计

PID控制是目前在温度控制中应用最广泛的一种控制算法,其核心思想是按设定值与测量值之间的偏差比例、偏差的积累和偏差变化的趋势来控制输出量,即根据偏差值来计算控制量。

数字PID控制律的实现,需采用数值逼近法,当采样的周期相当短时,可以用用差商代替微分,求和代替积分,可以有如下近似变换[10]。

(4.1)

式中,k为采样的序号,k=l,2,…;

T为采样的周期。

在离散化的过程中,采样时间T须足够的短,不然难以确保精度。

在运算时,把

表示成

等,省去了T。

则可推算出离散的PID表达式写成:

(4.2)

式中,k为采样的序号,k=1,2,…;

是第k次采样时,计算机输出的值;

是第k次采样时输入的偏差值;

是第

次采样时输入的偏差值;

是积分系数,

在实际的应用中,通常采用增量式PID控制算法,即数字控制器输出只是控制量的增量,该算法编程简单,数据可以递推使用,占用存储空间少,运算快。

根据递推原理可得:

(4.3)

公式(4.2)与公式(4.3)相减,即得到增量式PID控制算法(4.4):

(4.4)

本次设计中,控制器的设计采用增量数字PID控制算法的功能,可以比较灵活的调节控制信号的导通时间来控制温度值控制的工作。

能够基本满足温度控制的要求。

4.2PID算法的流程实现方法与具体程序

本系统设计的温度控制系统是与光电耦合器连接的加热炉。

传统的方法是:

当测量的环境温度达到设定值时,加热炉不在加热状态,可是此时加热炉的温度仍然会高与设定的温度值,加热炉还是会起到加热的作用,使得系统的温度经常继续要升高一会后才能开始下降。

当下降到设定的下限温度值时,温控系统会促使加热炉开始工作,对系统进行加热,此过程需要一定的时间,所以往往又会下降一定温度,才能开始上升温度。

所以传统的方法往往会出现一定的误差,此误差就是温度的惯性引起的[11]。

PID算法是PID模糊控制技术的核心部分,通过比例、积分、微分三方面的结合与调整构成一个反馈控制,可解由于温度的惯性而产生的误差。

经过PID控制器处理后可输出电压的控制信号

,从而反馈调节温度。

数字PID的控制示意图如图4.1所示:

图4.1数字PID的控制

实验中最主要的就是PID参数的选择,它决定着整个温度控制的精确度。

我们可以根据具体情况的要求,来调节合适的参数。

P为比例系数,当在一定范围内若是调节增加P时,系统的反映将会变的灵敏,稳态的误差值将会变小,可要是P值过大时的话,同样会时系统变得不稳定。

P值过于小了,系统的反映又会变的很慢。

可见的,P值要是选取不恰当,测量值就会和设定值的偏差越来越大,要是出现了这样的问题时,可将P值的符号取反[12]。

I为积分系数,I的值越小积分的作用就会越强,积分作用强了就会导致系统的稳定性下降,不过T值小了,稳态所产生的误差将会减小。

D为微分控制,微分控制可以改善动态的特性,当D偏大时,超调量随之变大,调节时间会减短;

D偏小时,超调量同样变大,不过调节时间就会比较长,只有D合适时,才能使超调量较小,调节时间也较短。

调试时,只能参考参数对系统控制过程的变化趋势,来对参数调整来先比例,后积分,再微分的步骤慢慢调试,一直凑到满意的结果为止。

数字PID的差分方程:

(4.5)

在上式中,

称为比例项;

称为积分项;

称为微分项。

得到增量式公式为:

(4.6)

在此式中,

PID的具体算法程序如下[13]:

Enum{Y,U,R,

};

//Y采集量、U控制量、R设定量、

采样时间、

微分、

比例

intpara[6],ptr,out;

//out是从PID()得到的控制量

intr,

Ts,e2,e1,e0,u;

/************************************************************************/

VoidinitPID()//初始化PID函数

{para[R]=20;

para[

]=2;

para[

]=1

}

VoidPID()

{para[Y]=(int)(ad_data);

r=para[R];

e0=e1;

e1=e2;

e2=r-para[Y]/10;

=para[

];

Kd=para[

ts=para[

u=r+

*[e2+

*(e2-e1)];

if(u<

0)u=0;

//控制量限制

if(u>

200)u=200;

para[u[=u/10;

out=para[u];

}

VoidTem_timer0()interrupt1//采样时间

{THO=tim0>

>

8;

TL0=tim0;

If(tm++>

out)TEM=1;

elseTEM=0;

if(m>

200)tm=0;

if(out<

10)TEM=1;

if(timecnt++==100)timecnt=0;

Voidtimer1()interrupt3

{TH1=timer1()>

TLI=tim1;

If(dealCS==0)

{

wdCtrl=para[R];

if((wdCtrl-(int)(ad_data)/10)>

10)out=200;

elseif(((int)(ad_data)/10-wdCtrl)>

2)out=0;

elseout=Ctrltab[wdCtrl+2-(int)(ad_data)/10];

Elseif(tx++>

=ts)

{PID();

t=0;

5系统的软件设计

5.1统软件设计概述

在恒温PID控制系统中软件是整个系统的核心,在软件设计中采用分层模块化设计,其中主要的模块包含:

人机交互模块、数据显示模块、PID控制器模块、信号采集模块、超、低温报警模块几部分[14]。

1、人机交互模块,是通过3位按键来实现的。

第一个按键为复位按键,其他两个为调节按键,当有键按下时该键位将会处于低电平状态,按键连接上了电阻,使其当未有按键按下时,各各按键位都处于高电平[15]。

本设计中的按键具体原理与操作方法,在第三章的按键单元中已经做了详细的说明。

2、数据显示模块,是通过LCD液晶实现的。

采用的是通过动态显示法,分时分别控制LCD液晶的COM端,使每个位轮流显示,每位点亮的时间间隔大概为1ms左右。

3、PID控制器模块,本设计是运用PID控制算法,仿真实现一个恒温控制系统。

在上一章中我们已经描述了

,电压的控制信号

设计中最主要的就是PID参数的选择,它决定着整个温度控制的精确度。

对PID函数进行初始化时,需设置函数参数,这些参数都是根据实验测定获得的,具体参数在上一章PID算法研究中有详细说明。

4、信号采集模块,本设计中是运用DS18B20进行温度采集的,在DS18B20开始运作时,首先要做的是复位工作,DS18B20在接收到这个信号后的15~60us内会回发一个芯片的存在脉冲。

控制DS18B20怎么样进行工作[16]。

5.2系统软件程序流程及程序流程图

系统软件流程如图5.2所示:

图5.2系统软件流程图

程序流程为:

在程序开始的时,先设置初始化,通过按键设置预定温度值,然后通过数码管来显示当前的温度,再比较设定的预期温度与测量温度值的大小,将比较的信息通过继电器,去根据当前设定的温度值的上下限,当测量到的温度值未达到先前设定的预期温度值下限时,使单片机向蜂鸣器发送高电平信号使其发出警报生,再通过RELAY口向光电耦合器发送高电平时,无电流流过,光电耦合器将不导通,继电器也不能导通,继电器的线圈无电流通过,RL1打向电源处,加热棒通电开始工作加热,可以根据功率表的数据显示看出加热棒提升的温度。

当测量到的温度值超出先前设定的预期温度值上限时,使单片机将向蜂鸣器发送高电平信号使其发出警报生,再通过过RELAY口向光电耦合器发送低电平时,光电耦合器将导通,有电流流过,使得继电器也导通,继电器的线圈有电流通过,RL1打向继电器线圈,加热棒断开连接,停止工作,使温度慢慢的回落。

5.3温度数据显示模块分析

在本次软件设计中,核心的部分就是PID算法的控制与DS18B20温度采集的实现,PID算法在上文中已经做了详细的介绍,在此再具体的分析下DS18B20。

在本次设计我选择了DS18B20来继续温度检测,因为数字温度传感器DS18B20只需一个引脚,即可与单片机进行通信了,大大的减少了接线麻烦的问题,使得单片机更加具扩展性。

由于DS18B20芯片的小型化,通过单条数据线,就可以和主电路连接,可把数字温度传感器DS18B20做成测温探头,可方便的探入到狭小的地方,从而增加了实用性。

且本次设计采用proteus仿真软件,在proteus仿真软件里DS18B20可以随意设定温度,模仿实际环境温度值,便于实验[17]。

DS18B20数字温度传感器的内部包含了高速暂存RAM与用来存储TH、TL的E2ARM。

接受到的数据先是存入RAM,经检验后传送至E2ARM。

RAM中的第5个字节用与控制温度的数字转换分辨率,此分辨率决定DS18B20工作时温度转换的先对应的数值。

其中要注意的是设定的分辨率越高,就需要消耗越多的转换时间。

所以在设置分辨率时我们需要有所考虑[18]。

DS18B20在接收到温度转换的命令后,将温度值数据转换成以二进制补码的形式存储在RAM中,然后51单片机再通过单总线接收此数据,以地位在前高位在后的方式来读取数据。

接收数据后通过温度计算,将得出的温度值与设定的TH、TL进行比较,51单片机再根据比较的结果做出相应的运行工作。

为此我们在程序设计中设计了下面主要几个子程序。

首先对DS18B20进行初始化处理

voidInit_DS18B20(void)

unsignedcharx=0;

DQ=0;

//单片机将DQ拉低

delay_18B20(80);

//精确延时大于480us

DQ=1;

//拉高总线

delay_18B20(14);

x=DQ;

//稍做延时后,如果x=0则初始化成功x=1则初始化失败

delay_18B20(20);

在初始化后,先让DS18B20读一个字节

unsignedcharReadOneChar(void)

unsignedchari=0;

unsignedchardat=0;

for(i=8;

i>

0;

i--)

{

DQ=0;

//给脉冲信号

dat>

=1;

DQ=1;

if(DQ)

dat|=0x80;

delay_18B20(4);

return(dat);

再让其写一个字节,运行子程序如下:

voidWriteOneChar(unsignedchardat)

unsignedchari=0;

for(i=8;

i>

i--)

{

DQ=0;

DQ=dat&

0x01;

delay_18B20(5);

DQ=1;

接下来设计DS18B20的工作状态,设置其上、下限报警温度分别为TH和TL,且设置显示的分辨率为RS,执行的子程序如下[18]:

voidsetds18b20(unsignedcharTH,unsignedcharTL,unsignedcharRS)

Init_DS18B20();

WriteOneChar(0xCC);

//跳过读序号列号的操作

WriteOneChar(0x4E);

////写入“写暂存器”命令,修改TH和TL和分辩率配置寄存器

//先写TH,再写TL,最后写配置寄存器

WriteOneChar(TH);

//写入想设定的温度报警上限

WriteOneChar(TL);

//写入想设定的温度报警下限

WriteOneChar(RS);

//写配置寄存器,格式为0R1R01,1111

//R1R0=00分辨率娄9位,R1R0=11分辨率为12位

最后就是读取DS18B20的温度值了,执行子程序如下:

unsignedchar*ReadTemperature(void)

{unsignedchartt[2];

WriteOneChar(0x44);

//启动温度转换

delay_18B20(70);

//温度转化要一段时间

//跳过读序号列号的操作

WriteOneChar(0xBE);

//读取温度寄存器等(共可读9个寄存器)前两个就是温度

//delay_18B20(70);

tt[0]=ReadOneChar();

//读取温度值低位

tt[1]=ReadOneChar();

//读取温度值高位

return(tt);

5.4测试分析

1、测试环境

仿真环境温度20—90摄氏度。

2、测试方法

用调节DS18B20,来模拟环境温度,通过按键来设置温度的上、下限与复位,根据LCD液晶显示来观察结果。

3、测试结果

(1)设定温度由20摄氏度到90摄氏度。

(2)标定温差≦1摄氏度调节时间15s(具体情况随实际情况)。

(3)静态误差≦0.5摄氏度最大超调量1摄氏度。

4、通过仿真测试分析,对于实际的室内的温度控制,可以再得出以下2点方法:

(1)我们可以通

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1