简易水温控制系统方案Word文件下载.docx

上传人:b****6 文档编号:19126153 上传时间:2023-01-04 格式:DOCX 页数:23 大小:273.71KB
下载 相关 举报
简易水温控制系统方案Word文件下载.docx_第1页
第1页 / 共23页
简易水温控制系统方案Word文件下载.docx_第2页
第2页 / 共23页
简易水温控制系统方案Word文件下载.docx_第3页
第3页 / 共23页
简易水温控制系统方案Word文件下载.docx_第4页
第4页 / 共23页
简易水温控制系统方案Word文件下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

简易水温控制系统方案Word文件下载.docx

《简易水温控制系统方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《简易水温控制系统方案Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。

简易水温控制系统方案Word文件下载.docx

温度控制的稳态误差<

0.2℃.

(3).能够实时显示当前水温

(4).具有通信能力,可通过RS-232串口输出当前温度值至上位机。

(5).采用适当的控制方法,当设定温度或环境温度突变时减小系统的调节时间和超调量。

二﹑方案论证

由于水温控制系统的控制对象具有热储存能力大,惯性也较大的特点,水在容器的流动或热量传递都存在一定的阻力,因而可以将被控对象归于具有纯滞后的一阶惯性环节。

该系统可以采用以下几种控制方案:

1.输出开关量控制

对于惯性较大的过程可简单地采用输出开关量控制的方法。

这种方法通过比较给定值与被控参数来控制输出的状态:

通过控制加热回路的晶闸管的导通或关断来控制加热时间,控制过程简单易行,但容易引起反馈回路产生振荡。

因此这种控制方案一般在大惯性系统对控制精度和动态特性要求不高的情况下采用。

2.PID控制

设计PID控制算法(常规PID﹑微分先行PID﹑中间反馈PID等),对给定值与被控参数的偏差进行PID运算,输出控制量来控制加热回路。

三﹑系统设计

1.硬件设计

⑴控制系统框图

图3-1水温控制系统结构图

⑵系统硬件总体设计框图

图3-2水温控制系统硬件总体设计框图

⑶单元电路设计

①单片机最小系统

②温度传感器信号调理及A/D转换电路

③键盘接口电路

④LCD1602液晶显示电路

⑤驱动电路

⑥串口通信电路

图3-3水温控制系统主程序流程

图3-4水温控制系统运行子程序流程图

2.软件设计

(1)算法

一个受控系统的被控过程一般是一个衰减振荡的过渡过程,该过程可用曲线描述如下:

图3-

图3-1-1衰减震荡曲线

5衰减振荡曲线

PID控制系统原理框图如下图所示:

R(S)C(S)

-

图3-6PID控制系统原理框图

系统由PID控制器和被控对象组成。

PID控制器是一种线性控制器,它根据给定值r(t)与实际输出值c(t)构成控制偏差:

e(t)=r(t)-c(t)

将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID控制器。

PID控制算法设计

其控制规律表达式为:

(3-1)

由上式可得PID控制器的传递函数为:

(3-2)

其中,Kp为比例增益,Ti为积分时间,Td为微分时间。

(2)控制系统模型分析

建立微分方程:

M*C*dT/dt=W0*k(t)-β*M*C*(T(s)-T0)

将上式经拉普拉斯变换得:

在假设室温为0℃的条件下,将上式经拉普拉斯变换推导出被控对象(即水温)的数学模型为:

G(s)=T(s)/K(s)=W0/MC*s+-β*MC=W0/MC/s/β+1(3-3)

各项参数为:

W0——900(瓦)

M-------1.5(kg)

C--------4200(J/kg*C)

β-------0.001

所以,G(s)=0.14/1000s+1

PID控制器的传递函数为:

采用试凑法进行参数整定,控制器的参数按先比例、再积分、后微分的顺序进行,步骤如下:

令PID调节器的Ti=∞,Td=0,使其成为纯比例调节器。

比例度按经验数据设置,整定纯比例控制系统的比例度。

加入积分作用。

在加积分作用之前,应将比例度加大为原来的1.2倍。

将积分时间IT由大到小调整。

加入微分作用,这时可将比例度调到原来的数值或者更小一些。

再将微分时间由小到达调整,直到过渡过程曲线达到满意为止。

通过试凑法得到PID参数为:

Kp=20000,Ti=30000,Td=5000.

MATLAB仿真结果

图3-7PID控制框图

图3-8仿真结果图

四、实验结果

实验中烧水高度为6.3cm,设定温度为83度。

PID参数调节结果是P=70,I=4,D=0,超调量为3.5℃,上升时间为626s,稳态误差2℃,扰动加水0.5cm,加水后温度降落9.87℃,恢复时间200S。

电热水杯温度上升曲线如下图:

五、结论

本系统以AT89C51单片机为控制核心,利用DS18B20采集温度并配合PID 

控制算法提高了水温的控制精度,使用PID 

控制算法和移相触发可控硅调节方式实施自动控制系统,具有控制参数精度高、反映速度快和稳定性好的特点。

六、心得体会

在拿到一个课题时首先要做的事就是对课题的任务,要求和条件进行仔细的分析和研究,找出关键问题,根据关键问题提出实现的原理和方法,并画出原理框图。

提出原理方案是一个关系到设计全局的问题,应广泛收集与查阅有关资料,广开思路,利用已有的各种理论知识,提出尽可能多的方案,以便做出更合理的选择。

所提出的方案中,对关键部分的可行性,一般应通过实验加以确认。

根据整个课题的技术要求,明确该功能框对单元电路的技术要求,必要时应详细拟定单元电路的性能指标,然后进行单元电路结构形式的选择或设计,但满足功能的单元电路可能不止一个,因此必须进行分析比较,择优选择。

我通过实验课的综合练习,课程设计的实际操作,将课堂理论学习贯穿其中,全面系统的把单片机课程的知识联系在一起,做到融会贯通,使我真正感受到理论应用于实践的乐趣。

这次设计是一次锻炼的好机会,使我在学习和巩固新、老知识的同时,训练了自己综合运用知识的能力、分析解决问题的能力,同时也提高了自己的工程实践能力。

在设计过程中,我与同学们一同学习、一同讨论,大家集思广益,发扬了团队协作精神。

在课程设计过程中,我发现了自己的不足,今后应加强学习,并且加强理论与实践的相结合,把所学的知识应用于实际当中。

附录

temp.c

#include"

STC12C5A60S2.h"

#include<

temp.h>

intrins.h>

voidDelay1us(unsignedinty)

{

for(y;

y>

0;

y--)

{

_nop_();

}

}

unsignedcharDs18b20Init()

unsignedinti;

DSPORT=0;

Delay1us(600);

DSPORT=1;

i=0;

while(DSPORT)

i++;

if(i>

5000)

return0;

return1;

}

voidDs18b20WriteByte(unsignedchardat)

unsignedintj;

for(j=0;

j<

8;

j++)

DSPORT=0;

Delay1us

(1);

DSPORT=dat&

0x01;

Delay1us(70);

DSPORT=1;

Delay1us

(2);

dat>

>

=1;

unsignedcharDs18b20ReadByte()

unsignedcharbyte,bi;

for(j=8;

j>

j--)

Delay1us(6);

bi=DSPORT;

byte=(byte>

1)|(bi<

<

7);

Delay1us(48);

}

returnbyte;

voidDs18b20ChangTemp()

Ds18b20Init();

Delay1ms

(1);

Ds18b20WriteByte(0xcc);

Ds18b20WriteByte(0x44);

Delay1ms(100);

voidDs18b20ReadTempCom()

{

Delay1ms(10);

Ds18b20WriteByte(0xbe);

intDs18b20ReadTemp()

inttemp=0;

unsignedchartmh,tml;

Ds18b20ChangTemp();

Ds18b20ReadTempCom();

tml=Ds18b20ReadByte();

tmh=Ds18b20ReadByte();

temp=tmh;

temp<

=8;

temp|=tml;

returntemp;

Main.c

lcd.h>

voidDelay1ms(unsignedinty)

unsignedchari,j;

_nop_();

i=12;

j=168;

do

{

while(--j);

}while(--i);

floatTemp_Change(inttemp)

unsignedchardatas[]={0,0,0,0,0,0,0,0};

floattp;

if(temp<

0)

temp=temp-1;

temp=~temp;

tp=temp;

temp=tp*0.0625*100+0.5;

else

{

tp=tp*0.0625*100+0.5;

DisplayWD(2,8,temp);

returntp;

voidmain()

LcdInit();

DisplayChar(0,1,"

~"

);

DisplayChar(1,1,"

zhaoyang"

DisplayChar(0,5,"

JD:

"

DisplayChar(1,5,"

WD:

while

(1)

{

Delay1ms

(1);

LCD_dis_data4(1,8,Ds18b20ReadTemp());

Temp_Change(Ds18b20ReadTemp());

kd.c

INTRINS.H>

voidLcdWriteCom(ucharCMD,ucharAttribc)

if(Attribc)WaitForEnable();

LCD1602_RS=0;

LCD1602_RW=0;

LCD1602_DATAPINS=CMD;

LCD1602_E=1;

_nop_();

LCD1602_E=0;

voidLcdWriteData(uchardataW)

WaitForEnable();

LCD1602_RS=1;

LCD1602_DATAPINS=dataW;

voidLcdInit()

LcdWriteCom(0x32,1);

LcdWriteCom(0x38,1);

LcdWriteCom(0x08,1);

LcdWriteCom(0x01,1);

LcdWriteCom(0x06,1);

LcdWriteCom(0x0c,1);

Delay1ms(30);

DisplayChar(0,0,"

WelcomeToSUST"

DisplayChar(1,0,"

ML---2016.12.27"

Delay1ms(1000);

MadeIn2A314"

Delay1ms(2000);

Delay1ms(300);

voidWaitForEnable(void)

{

LCD1602_DATAPINS=0xff;

LCD1602_RW=1;

while(LCD1602_DATAPINS&

0x80);

voidDelays(uchari)

while(i--);

voidDisplayChar(ucharY,ucharX,uchar*s)

{

Y&

X&

=15;

if(Y)X|=0xC0;

elseX|=0x80;

while(*s!

='

\0'

LcdWriteCom(X++,0);

LcdWriteData(*s);

Delays

(1);

s++;

}

//voidLCD_dis_data5(ucharx,uchary,uintdata5)

//{

//ucharpos,i=0,str[6];

//switch(x%2)

//{

//case1:

pos=0x80+y;

break;

//case0:

pos=0xc0+y;

//}

//LcdWriteCom(pos,0);

//str[0]=data5/10000%10+0x30;

//str[1]=data5/1000%10+0x30;

//str[2]=data5/100%10+0x30;

//str[3]=data5/10%10+0x30;

//str[4]=data5%10+0x30;

//str[5]='

;

//while(str[i]!

='

//LcdWriteData(str[i++]);

//}

voidLCD_dis_data4(ucharx,uchary,uintdata4)

ucharpos,i=0,str[5];

switch(x%2)

case1:

case0:

LcdWriteCom(pos,0);

str[0]=data4/1000%10+0x30;

str[1]=data4/100%10+0x30;

str[2]=data4/10%10+0x30;

str[3]=data4%10+0x30;

str[4]='

while(str[i]!

LcdWriteData(str[i++]);

//voidLCD_dis_data3(ucharx,uchary,uintdata4)

//ucha

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

当前位置:首页 > 自然科学

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

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