简易水温控制系统.docx

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

简易水温控制系统.docx

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

简易水温控制系统.docx

简易水温控制系统

Revisedasof23November2020

 

简易水温控制系统

一个简易水温控制系统的设计———控制算法设计

摘要

在工农业生产和日常生活中,对温度的检测与控制始终有着非常重要的实际意义和广泛的实际应用。

为了加深计算机控制理论的理解,故设计一个温度控制系统,该系统主要由温度信号采集与转换模块、主机控制模块、温度控制模块、液晶显示模块四部分组成,控制算法为PID算法。

系统可实现稳态误差小于1℃,最大超调小于1℃,并且调节时间较短,恒定效果好。

温度控制系统的对象存在滞后,它对阶跃信号的响应会推迟一些时间,对自动控制产生不利的影响,因此对温度准确的测量和有效的控制是此类工业控制系统中的重要指标。

温度是一个重要的物理量,也是工业生产过程中的主要工艺参数之一,物体的许多性质和特性都与温度有关,很多重要的过程只有在一定温度范围内才能有效的进行,因此,对温度的精确测量和可靠控制,在工业生产和科学研究中就具有很重要的意义。

本文阐述了过程控制系统的概念,介绍了一个基于数字传感器DS18B20和单片机STC89C52的简单温度控制系统,以电热水壶为被控对象,通过实验的方法建立温度控制系统的数学模型,采用了PID算法进行系统的设计,达到了比较好的控制目的。

该系统可通过液晶显示器LCD1602显示数据或字符,通过按键设定参数;通过DS18B20测温,实现电热杯水温控制;通过PL2303下载端口,实现单机和上位机的通讯。

实验表明该系统能够实现对温度的控制,具有一定的控制精度。

该系统测温电路简单、连接方便,可用于简单温度控制的场合。

关键词:

单片机;温度传感器;液晶显示器;PID算法

 

Abstract

Inindustrialandagriculturalproductionanddailylife,thetestingandcontroloftemperaturehasalwayshadveryimportantpracticalsignificanceandextensivepracticalapplication.Inordertodeepentheunderstandingofthecomputercontroltheory,thedesignofatemperaturecontrolsystem,thesystemismainlycomposedoftemperaturesignalacquisitionandconversionmodule,hostcontrolmodule,temperaturecontrolmodule,liquidcrystaldisplaymodulefourparts,thecontrolalgorithmforPIDalgorithm.Systemcanrealizethesteadystateerrorislessthan1℃,themaximumovershootlessthan1℃,andtheadjustmenttimeisshorter,constanteffectisgood.Laggedtemperaturecontrolsystemoftheobject,itsresponsetothestepsignalwilldelaysometime,produceadverseeffecttotheautomaticcontrol,soeffectiveforaccuratetemperaturemeasurementandcontrolisanimportantindicatorintheindustrialcontrolsystem.Temperatureisanimportantphysicalquantities,itisalsooneofthemainprocessparametersinindustrialproductionprocess,manypropertiesofobjectsandfeaturesarerelatedtotemperature,alotofimportantprocesscanonlybeeffectiveinacertaintemperaturerange,thus,accuratemeasurementandreliablecontroloftemperature,intheindustrialproductionandscientificresearchhastheveryvitalsignificance.Thispaperexpoundstheconceptofprocesscontrolsystem,introducedadigitalsensorDS18B20andsinglechipmicrocomputerbasedSTC89C52simpletemperaturecontrolsystem,electrickettleforcontrolledobject,andthroughtheexperimentthemethodtoestablishthemathematicalmodeloftemperaturecontrolsystem,usingPIDalgorithmtothedesignofthesystem,toachievethebettercontrol.ThroughDS18B20,thetemperaturecontroloftheelectricheatcupisachieved.ThroughthePL2303downloadport,thecommunicationbetweenthesinglemachineandtheabovemachineisachieved.Theexperimentshowsthatthesystemcancontrolthetemperature,andhascertaincontrolaccuracy.Thesystemissimpleandeasytoconnect,whichcanbeusedforsimpletemperaturecontrol.

Keywords:

singlechipmicrocomputer;thetemperaturesensor;Liquidcrystaldisplay;PIDalgorithm

 

一﹑设计任务与要求

1.基本要求

1L水由1kW的电路加热,要求水温可以在一定范围内由人工设定,并能在环境温度变化时实现自动调整,以保持在设定的温度。

2.主要性能指标

(1).温度设定范围:

10℃~100℃,最小分辨率为1℃。

(2).控制精度:

温度控制的稳态误差<0.2℃.

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

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

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

二﹑方案论证

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

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

1.输出开关量控制

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

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

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

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

控制

设计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(瓦)

(kg)

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

β

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

PID控制器的传递函数为:

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

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

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

加入积分作用。

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

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

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

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

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

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

MATLAB仿真结果

图3-7PID控制框图

图3-8仿真结果图

四、实验结果

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

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

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

五、结论

本系统以AT89C51单片机为控制核心,利用DS18B20采集温度并配合PID控制算法提高了水温的控制精度,使用PID控制算法和移相触发可控硅调节方式实施自动控制系统,具有控制参数精度高、反映速度快和稳定性好的特点。

六、心得体会

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

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

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

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

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

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

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

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

附录

#include""

#include<>

#include<>

voidDelay1us(unsignedinty)

{

for(y;y>0;y--)

{

_nop_();

_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;

unsignedintj;

for(j=8;j>0;j--)

{

DSPORT=0;

Delay1us

(1);

DSPORT=1;

Delay1us(6);

bi=DSPORT;

byte=(byte>>1)|(bi<<7);

Delay1us(48);

}

returnbyte;

}

voidDs18b20ChangTemp()

{

Ds18b20Init();

Delay1ms

(1);

Ds18b20WriteByte(0xcc);

Ds18b20WriteByte(0x44);

Delay1ms(100);

voidDs18b20ReadTempCom()

{

Ds18b20Init();

Delay1ms(10);

Ds18b20WriteByte(0xcc);

Ds18b20WriteByte(0xbe);

}

intDs18b20ReadTemp()

{

inttemp=0;

unsignedchartmh,tml;

Ds18b20ChangTemp();

Ds18b20ReadTempCom();

tml=Ds18b20ReadByte();

tmh=Ds18b20ReadByte();

temp=tmh;

temp<<=8;

temp|=tml;

returntemp;

}

#include""

#include<>

#include<>

#include<>

voidDelay1ms(unsignedinty)

{

for(y;y>0;y--)

{

unsignedchari,j;

_nop_();

_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**100+;

}

else

{

tp=temp;

temp=tp**100+;

tp=tp**100+;

}

DisplayWD(2,8,temp);

returntp;

}

voidmain()

{

LcdInit();

Ds18b20Init();

DisplayChar(0,1,"~");

Delay1ms

(1);

DisplayChar(1,1,"zhaoyang");

Delay1ms

(1);

DisplayChar(0,5,"JD:

");

Delay1ms

(1);

DisplayChar(1,5,"WD:

");

Delay1ms

(1);

while

(1)

{

Delay1ms

(1);

LCD_dis_data4(1,8,Ds18b20ReadTemp());

Delay1ms

(1);

Temp_Change(Ds18b20ReadTemp());

}

}

#include""

#include<>

#include<>

voidLcdWriteCom(ucharCMD,ucharAttribc)

{

if(Attribc)WaitForEnable();

LCD1602_RS=0;LCD1602_RW=0;

_nop_();

LCD1602_DATAPINS=CMD;

_nop_();

LCD1602_E=1;

_nop_();_nop_();

LCD1602_E=0;

}

voidLcdWriteData(uchardataW)

{

WaitForEnable();

LCD1602_RS=1;LCD1602_RW=0;

_nop_();

LCD1602_DATAPINS=dataW;

_nop_();

LCD1602_E=1;

_nop_();_nop_();

LCD1602_E=0;

}

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");

Delay1ms

(1);

DisplayChar(1,0,"");

Delay1ms(1000);

LcdWriteCom(0x01,1);

Delay1ms

(1);

DisplayChar(0,0,"MadeIn2A314");

Delay1ms

(1);

DisplayChar(1,0,"");

Delay1ms(2000);

LcdWriteCom(0x01,1);

Delay1ms(300);

}

voidWaitForEnable(void)

{

LCD1602_DATAPINS=0xff;

LCD1602_RS=0;LCD1602_RW=1;

_nop_();

LCD1602_E=1;

_nop_();_nop_();

while(LCD1602_DATAPINS&0x80);

LCD1602_E=0;

}

voidDelays(uchari)

{

while(i--);

}

voidDisplayChar(ucharY,ucharX,uchar*s)

{

Y&=1;

X&=15;

if(Y)X|=0xC0;

elseX|=0x80;

while(*s!

='\0')

{

LcdWriteCom(X++,0);

LcdWriteData(*s);

Delays

(1);

s++;

}

}

 

;

;

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

str[5]=datas%10+0x30;

str[6]=0xDF;

str[7]='C';

str[8]='\0';

while(str[i]!

='\0')

{

LcdWriteData(str[i++]);

}

}

 

参考文献

【1】林敏.计算机控制技术及工程应用(第3版).国防工业出版社.2014年9月第三版.

【2】张毅刚王少军付宁.单片机原理及接口技术(第2版).人民邮电出版社.2015年1月第一版.

【3】俞金寿孙自强.过程控制系统(第2版).机械工业出版社.2015年1月.

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

当前位置:首页 > 高等教育 > 农学

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

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