论文电热恒温水壶.docx
《论文电热恒温水壶.docx》由会员分享,可在线阅读,更多相关《论文电热恒温水壶.docx(23页珍藏版)》请在冰豆网上搜索。
论文电热恒温水壶
作品名称
基于PID控制的电热恒温水壶
作者姓名
叶义成.程海朋.彭俊标
所在学校
湖北师范学院
填表时间
2009.7.19
摘要
在能源日益紧张的今天,电热水器,饮水机和电饭煲之类的家用电器在保温时,由于其简单的温控系统,利用温敏电阻来实现温控,因而会造成很大的能源浪费。
但是利用AT89C51单片机为核心,配合温度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成的控制系统却能解决这个问题。
单片机可将温度传感器检测到的水温模拟量转换成数字量,并显示于1602显示器上。
该系统具有灵活性强,易于操作,可靠性高等优点,将会有更广阔的开发前景。
Abstract
Thegrowingtensionintheenergytoday,electricwaterheaters,drinkingfountainsandhomeapplianceslikericecookersintheinsulation,duetoitssimpletemperaturecontrolsystem,theuseofthermo-sensitiveresistorstoachievetemperaturecontrol,whichmaycausegreatwasteofenergy.However,theuseofAT89C51single-chipmicrocomputerasthecore,withthetemperaturesensor,signalprocessingcircuit,displaycircuit,theoutputcontrolcircuit,faultalarmcircuitryandothercomponentsofthecontrolsystemcansolvethisproblem.Single-chiptemperaturesensorcandetecttemperatureanalogtodigitalvolume,anddisplaymonitorsin1602.Thesystemhasflexibility,easyoperation,highreliability,therewillbeabroaderdevelopmentprospects.
电热恒温系统概述
能源问题已经是当前最为热门的话题,离开能源的日子,世界将失去一切颜色,人们将寸步难行,我们知道虽然电能是可再生能源,但是在今天还是有很多的电能是依靠火力,核电等一系列不可再生的自然资源所产生,一旦这些自然资源耗尽,我们将面临电能资源的巨大的缺口,因而本设计从开源节流的角度出发,节省电能,保护环境。
本设计任务和主要内容
设计并制作一个电热恒温系统控制系统,控制对象为1升净水,容器为搪瓷或塑料器皿。
水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。
本设计主要内容如下:
1.基本要求:
用电热器加热水壶中的水,使用单片机检测壶内温度,使温度恒温于80度,持续10分钟以上。
2.发挥部分:
(1)温度设定范围为:
室温40~90℃,最小区分度为1℃,标定温度≤1℃。
(2)环境温度降低时温度控制的静态误差≤1℃。
(3)用1602液晶显示水的实际温度。
(4)采用适当的控制方法,当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量。
(5)温度控制的静态误差≤0.5℃。
1系统方案
1.1温度传感器的选取
目前市场上温度传感器较多,主要有以下几种方案:
方案一:
选用铂电阻温度传感器。
此类温度传感器线性度、稳定性等方面性能都很好,但其成本较高。
方案二:
采用热敏电阻。
选用此类元器件有价格便宜的优点,但由于热敏电阻的非线性特性会影响系统的精度。
方案三:
采用DS18B20温度传感器。
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出远端引入。
此器件具有体积小、质量轻、线形度好、性能稳定等优点其各方面特性都满足此系统的设计要求。
比较以上三种方案,方案三具有明显的优点,因此选用方案三。
1.2键盘显示部分
控制与显示电路是反映电路性能、外观的最直观部分,所以此部分电路设计的好坏直接影响到电路的好坏。
方案一:
采用可编程控制器8279与数码管及地址译码器74LS138组成,可编程/显示器件8279实现对按键的扫描、消除抖动、提供LED的显示信号,并对LED显示控制。
用8279和键盘组成的人机控制平台,能够方便的进行控制单片机的输出。
方案二:
采用单片机AT89C52与4X4矩阵组成控制和扫描系统,并用89C52的P1口对键盘进行扫描,并用总线的方式在P0口接1602液晶来显示水温和设定值,这种方案既能很好的控制键盘及显示,又为主单片机大大的减少了程序的复杂性,而且具有体积小,价格便宜的特点。
对比两种方案可知,方案一虽然也能很好的实现电路的要求,但考虑到电路设计的成本和电路整体的性能,我们采用方案二。
1.3控制电路部分
方案一:
采用8031芯片,其内部没有程序存储器,需要进行外部扩展,这给电路增加了复杂度。
方案二:
采用2051芯片,其内部有2KB单元的程序存储器,不需外部扩展程序存储器。
但由于系统用到较多的I/O口,因此此芯片资源不够用。
方案三:
采用AT89C52单片机,其内部有4KB单元的程序存储器,不需外部扩展程序存储器,而且它的I/O口也足够本次设计的要求。
比较这三种方案,综合考虑单片机的各部分资源,因此此次设计选用方案
三。
1.4PID过程控制部分:
①过程控制的基本概念
过程控制――对生产过程的某一或某些物理参数进行的自动控制。
一、模拟控制系统
图5-1-1基本模拟反馈控制回路
被控量的值由传感器或变送器来检测,这个值与给定值进行比较,得到偏差,模拟调节器依一定控制规律使操作变量变化,以使偏差趋近于零,其输出通过执行器作用于过程。
控制规律用对应的模拟硬件来实现,控制规律的修改需要更换模拟硬件。
二、微机过程控制系统
图5-1-2微机过程控制系统基本框图
以微型计算机作为控制器。
控制规律的实现,是通过软件来完成的。
改变控制规律,只要改变相应的程序即可。
三、数字控制系统DDC
图5-1-3DDC系统构成框图
DDC(DirectDigitalCongtrol)系统是计算机用于过程控制的最典型的一种系统。
微型计算机通过过程输入通道对一个或多个物理量进行检测,并根据确定的控制规律(算法)进行计算,通过输出通道直接去控制执行机构,使各被控量达到预定的要求。
由于计算机的决策直接作用于过程,故称为直接数字控制。
DDC系统也是计算机在工业应用中最普遍的一种形式。
②模拟PID控制系统组成
图5-1-4模拟PID控制系统原理框图
PID调节器是一种线性调节器,它将给定值r(t)与实际输出值c(t)的偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进行控制。
1、PID调节器的微分方程
式中
2、PID调节器的传输函数
PID调节器各校正环节的作用
1、比例环节:
即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差。
2、积分环节:
主要用于消除静差,提高系统的无差度。
积分作用的强弱取决于积分时间常数TI,TI越大,积分作用越弱,反之则越强。
3、微分环节:
能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。
③数字PID控制器
一、模拟PID控制规律的离散化
模拟形式
离散化形式
二、数字PID控制器的差分方程
式中
称为比例项
称为积分项
称为微分项
2总体方案原理的理论分析
2.1系统模块分为:
DS18B20模块,1602液晶显示模块,继电器模块,键盘输入模块和声光报警模块,DS18B20可以被编程,所以箭头是双向的,CPU(89C52)首先写入命令给DS18B20,然后DS18B20开始转换数据,转换后通89C52来处理数据。
数据处理后的结果就显示到1602液晶上。
2.2系统模块总关系图
本系统的执行方法是循环查询执行的,键盘扫描也是用循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理。
3电路与程序设计
1.继电器模块下图是一个蜂鸣器和一个继电器的图,我们只用到了继电器的图,继电器和单片机的P1.3口进行通讯。
2.液晶显示模块
下图是1602液晶显示模块的图,按照总线接法来连接,1602数据口接单片机的P0口。
3.89C51单片机最小系统模块
89C51单片机最小系统模块如下,P0口接10K的上拉电阻以便与显示模块
通讯。
4.键盘和DS18B20模块
键盘和DS18B20模块如下,采用4X4矩阵键盘接单片机P1口,DS18B20模块对水温进行采样,并与单片机通讯来实现对水温的控制。
4.软件设计说明
本系统采用的是循环查询方式,来显示和控制温度的。
4.1总程序流程图如下
4.2中断函数流程图如下:
4.3主要C程序
(1)主函数如下:
#include
#include
#include"KEYSCAN.H"
#include"DS18B20.H"
#include"XIANSHI.H"
#include"PID.H"
voidPIDBEGIN(void);//PID参数初始化//
voidmain()
{
unsignedcharkey1=0,i,k;
unsignedinttmp;
unsignedcharshu[3]={13,13,0};
unsignedcharcounter=0;
PIDBEGIN();
while
(1)
{
if(counter--==0)
{
tmp=ReadTemperature();
counter=20;
}
view(tmp);//温度显示;
compare_temper();
}
}
(2)PID算法温度控制程序
#ifndef_PID_H__
#define_PID_H__
#include
#include
#include
structPID{
unsignedintSetPoint;//设定目标DesiredValue
unsignedintProportion;//比例常数ProportionalConst
unsignedintIntegral;//积分常数IntegralConst
unsignedintDerivative;//微分常数DerivativeConst
unsignedintLastError;//Error[-1]
unsignedintPrevError;//Error[-2]
unsignedintSumError;//SumsofErrors
}
structPIDspid;//PIDControlStructure
unsignedintrout;//PIDResponse(Output)
unsignedintrin;//PIDFeedback(Input)
sbitoutput=P3^4;
unsignedcharhigh_time,low_time,count=0;//占空比调节参数
unsignedcharset_temper=33;
voidPIDInit(structPID*pp)
{
memset(pp,0,sizeof(structPID));
}
unsignedintPIDCalc(structPID*pp,unsignedintNextPoint)
{
unsignedintdError,Error;
Error=pp->SetPoint-NextPoint;//偏差
pp->SumError+=Error;//积分
dError=pp->LastError-pp->PrevError;//当前微分
pp->PrevError=pp->LastError;
pp->LastError=Error;
return(pp->Proportion*Error//比例
+pp->Integral*pp->SumError//积分项
+pp->Derivative*dError);//微分项
}
/***********************************************************
温度比较处理子程序
***********************************************************/
compare_temper()
{
unsignedchari;
//EA=0;
if(set_temper>temper)
{
if(set_temper-temper>1)
{
high_time=100;
low_time=0;
}
else
{
for(i=0;i<10;i++)
{get_temper();
rin=s;//ReadInput
rout=PIDCalc(&spid,rin);//PerformPIDInteration
}
if(high_time<=100)
high_time=(unsignedchar)(rout/800);
else
high_time=100;
low_time=(100-high_time);
}
}
elseif(set_temper<=temper)
{
if(temper-set_temper>0)
{
high_time=0;
low_time=100;
}
else
{
for(i=0;i<10;i++)
{get_temper();
rin=s;//ReadInput
rout=PIDCalc(&spid,rin);//PerformPIDInteration
}
if(high_time<100)
high_time=(unsignedchar)(rout/10000);
else
high_time=0;
low_time=(100-high_time);
//EA=1;
}
}
}
/*****************************************************
T0中断服务子程序,用于控制电平的翻转,40us*100=4ms周期
******************************************************/
voidserve_T0()interrupt1using1
{
if(++count<=(high_time))
output=1;
elseif(count<=100)
{
output=0;
}
else
count=0;
TH0=0x2f;
TL0=0xe0;
}
voidPIDBEGIN()
{
TMOD=0x01;
TH0=0x2f;
TL0=0x40;
EA=1;
ET0=1;
TR0=1;
high_time=50;
low_time=50;
PIDInit(&spid);//InitializeStructure
spid.Proportion=10;//SetPIDCoefficients
spid.Integral=8;
spid.Derivative=6;
spid.SetPoint=100;//SetPIDSetpoint
}
#endif
(3)DS18B20子程序
#ifndef__DS18B20_H__
#define__DS18B20_H__
sbitDQ=P3^5;//定义通信端口
unsignedints;
unsignedchartemper;
//晶振22MHz
voiddelay_18B20(unsignedinti)
{
while(i--);
}
//初始化函数
Init_DS18B20(void)
{
unsignedcharx=0;
DQ=1;//DQ复位
delay_18B20(4);//稍做延时
DQ=0;//单片机将DQ拉低
delay_18B20(100);//精确延时大于480us
DQ=1;//拉高总线
delay_18B20(40);
}
//读一个字节
ReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(10);
}
return(dat);
}
//写一个字节
WriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay_18B20(10);
DQ=1;
dat>>=1;
}
}
//读取温度
ReadTemperature(void)
{
unsignedchara=0;
unsignedcharb=0;
unsignedintt=0;
//EA=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
//启动下一次温度转换
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0x44);//启动温度转换
t=(b*256+a)*25;
b=(b<<4)&0x7f;
s=(unsignedint)(a&0x0f);
s=(s*100)/16;
a=a>>4;
temper=a|b;
return(t>>2);
}
#endif
5测试方案与测试结果
5.1测试方案如下:
用继电器模块来控制200W“热得快”来对1升水进行加热,用键盘设定需加热温度值,观察1602所显示的稳定时的水温值和环境温度降低时温度控制的静态误差。
多次调试并和设定PID参数来完善该系统。
5.2测试结果如下:
经过多次测试,得到如下数据
由测试结果和上表数据得出:
(1)用电热器加热水壶中的水,使用单片机检测壶内温度,使温度恒温于80度,不仅能持续10分钟以上,还有很高的精度。
(2)温度设定范围为30~90℃(在40~90范围内),最小区分度达到0.1℃(小于1℃)以上,标定温度值也符合设计要求。
(3)由于采用了PID控制,在环境温度降低时温度控制的静态误差小于0.5℃(精度高于设计要求)。
(4)用TS1602-1液晶来显示水的实际温度和设定温度值,显示很稳定。
(5)采用了PID控制,当设定温度突变(由40℃提高到60℃)时,经过多次调试知道,当P=20;I=15;D=6时系统具有最小的调节时间和超调量。
(6)当温度稳定时,温度控制的静态误差≤0.5℃。
(7)经过多次测试和改进,该系统各方面参数都达到和超过设计参数,完成了既定目标(包括基本要求和发挥部分的要求)。
6结束语
首先,通过本次应用系统设计,在很大程度上提高了我们的独立思考能力和单片机的专业知识,也深刻了解写一篇应用系统的步骤和格式,有过这样的一次竞赛经历,相信在接下来的日子我们能在已有的基础上做得更好。
我们所设计的该系统主要根据目前节省能源的发展趋势和国内实际的应用特点和要求,采用了自动化的结构形式,实现对水温的自动检测和控制。
系统以AT89C51单片机为核心部件,单片机系统完成对水温信号的采集、处理、显示等功能;并采用了PID算法,因而提高了控制的准确度。
该系统的主要特点是:
1)适用性强,用户只需对界面参数进行设置并启动系统正常运行便可满足不同用户水温的要求,实现对水温的实时监控。
避免了电力力资源的浪费,节省了能源。
2)将单片机以及温度传感器引入对水温的分析和处理中,单片机控制决策无需建立被控对象的数学模型,系统的适应性强,适合对非线性、时变、滞后系统的控制对水温控制系统进行控制。
3)系统成本低廉,操作非常简单,可扩展性强,只要稍加改变,即可增加其他使用功能。
本系统对现代化的发展具有十分重要的意义:
首先,节省了能源,特别是最近几年,我国东部沿海地区电力资源缺口十分巨大,可以缓解部分电力资源压力。
其次,由于我国大部分电力资源是火力发电,因而从一定程度上节省了自然资源,以及保护了环境。
通过对本设计的思考,更加加深了我们对单片机的认识,熟练了对单片机的控制,更对当前的温度传感器有了更深刻的认识与了解,但是由于此系统依赖温度传感器,因而对温度传感器的稳定性,线性等诸多方面有着严格的要求,但是传感器的性能越好,相对而言其价格也就越高,因而在此设计中,温度传感器我个人觉的还是存在遗憾,由于温度计的使用温度有限所以水温不能达到90℃以上。
最后由于时间紧迫,本设计还有诸多地方需要改进,我们会在接下来的时间里继续完善该设计,以期做的更好。
参考文献
[1]大学生电子设计竞赛组委会.《第五届全国电子设计竞赛获奖作品