全网20万篇优秀素材范文持续更新、一网打尽! 免除会员朋友东奔西跑找材料的后顾之忧!
手机用户可保存上方二维码 到手机中,在微信扫一扫中右上角 选择“从相册选取二维码 ”即可。
其他免费论文优秀范文8 智能化水温控制系统-其他免费论文-免费论文
[标签:标题]
智能化水温控制系统
水温控制系统
摘要
现如今,人们的生活越来越强调智能化以及低碳化,无论是智能化还是低碳化,生活在人们都希望自己的电器越来越智能,即能按照人们的意愿,低功耗的实现功能。水温控制作为人们生活以及工业的重要组成部分,能否实现智能化以及低功耗化十分重要。水温控制系统以 STC89C51 作为核心的温度控制系统,将 DS18B20 作为温度感应器,可直接反馈数字量的温度信息并可以调节精度;以继电器以及螺旋加热管作为加热模块;以发光二级管以及蜂鸣器作为声光告警装置;以数码管作为温度显示模块。程序上利用 PID 调节算法,多次调节其中参数,使得温度控制更加精确。该系统具有简单、成本低、质量安全可靠的特点。相信无论是在生活还是生产中都会有不错的应用前景。
关键词 智能化
温度控制 STC89C51 DS18B20 PID 调节算法
一.任务以及要求
设计并制作一个水温自动控制系统,水温可以在一定范围内由人工设定,可以实现自动报警功能。
1. 基本内容如下:
( 1 )温度设定范围为: 40 ~ 90℃ ,最小区分度为 1℃ ,标定温度 ≤1℃ 。
( 2 )环境温度降低时温度控制的静态误差 ≤1℃ 。
( 3 )用 10 进制数码管显示水的实际温度。
2. 发挥要求:
( 1 )温度控制范围扩大,最小区分度减小。
( 2 )温度控制的静态误差 ≤0.2℃ 。
( 3 )特色与创新。
二.方案设计及其论证
水温的控制,必须先精确地获取温度,所以温度传感器的选择就非常重要。通常,温度所测量的是模拟量,模拟量的转换涉及到 A/D 的转换。温度传感器把温度传送给处理器核心,处理器核心经过分析,判断是否满足处理的条件,进行相关的处理。可实现的动作包括以下几项:达到设定温度,进行声光报警;温度低,进行加热处理。其中温度的设定就要利用到键盘。声光报警就需要用到发光二级管以及蜂鸣器。经以上分析,可以将温度控制系统分为以下几个模块:
1. 温度传感器
温度传感器应具有精度足够高、处理速度足够快、体积小等特点。采用 DS18B20 温度传感器。 DS18B20 是 DALLAS 公司生产的一线式数字温度传感器,具有 3 引脚 TO - 92 小体积封装形式;温度测量范围为- 55℃ ~+ 125℃, 可编程为 9 位~ 12 位 A/D 转换精度,测温分辨率可达 0.0625℃ ,被测温度用符号扩展的 16 位数字量方式串行输出远端引入。此器件具有体积小、质量轻、线形度好、性能稳定等优点其各方面特性都满足此系统的设计要求。更重要的是采用该温度传感器后不用采用 A/D 转换。节省了大量的工作量。
2. 键盘显示
按键主要涉及到温度的调节以及模式的转换。显示部分主要涉及到水温的实时显示,以及功能模式的显示。按任务功能需求采用独立键盘,并且利用 MCU 对键盘进行扫描。这种方案既能很好的控制键盘及显示,又为 MCU 大大的减少了程序的复杂性,而且具有体积小,简单易做的特点。显示部分按照任务要求采用 4 位数码管设计,来显示水温以及工作模式等。也具有简单、可靠的特点。
3.CPU 核心
CPU 主要控制水温以及其他模块的协调工作。是该水温控制系统的核心。根据对方案的分析,采用简单易用的 STC89C52 单片机,其内部有 4KB 单元的程序存储器,不需外部扩展程序存储器,而且它的 I/O 口也足够本次设计的要求。具有简单方便、成本低以及可靠的特点。
经以上分析,只要合理设计电路以及正确编写程序,以上几个模块在 MCU 以及程序的调节下能协调工作,共同完成水温的控制,从而达到任务要求。
三.理论分析与计算
各个模块要在 MCU 的调节下合理有序的工作,那么系统必须采用合理高效的控制系统。这就要涉及到过程控制,过程控制指对生产过程的某一或某些物理参数进行的自动控制。过程控制可分为:模拟控制系统、微机过程控制系统以及数字控制系统 DDC 。模拟控制系统中被控量的值由传感器或变送器来检测,这个值与给定值进行比较,得到偏差,模拟调节器依一定控制规律使操作变量变化,以使偏差趋近于零,其输出通过执行器作用于过程。微机过程控制系统以微型计算机作为控制器。控制规律的实现,是通过软件来完成的。改变控制规律,只要改变相应的程序即可。
现如今在生产以及实践中运用最多的是 DDC(DirectDigitalCongtrol) 系统:
图 3-1DDC 系统构成框图
DDC(DirectDigitalCongtrol) 系统是计算机用于过程控制的最典型的一种系统。微型计算机通过过程输入通道对一个或多个物理量进行检测,并根据确定的控制规律 ( 算法 ) 进行计算,通过输出通道直接去控制执行机构,使各被控量达到预定的要求。由于计算机的决策直接作用于过程,故称为直接数字控制。
其中控制规律即为 PID 调节,本系统中为软件实现。涉及到的理论计算如下:
1. 模拟 PID 控制规律的离散化
表一 . 模拟 PID 控制规律的数字化公式
模拟形式
离散化形式
2. 数字 PID 控制器的差分方程
式中 为比例项
为积分项
为微分项
四.系统设计方案
1. 工作模式
本着智能化以及按照题目要求,将系统设计有以下两个个工作模式: A. 测定水温以及显示水温; B. 设定水温并保温;其中 A 为默认工作状态,即开机工作状态,工作内容为实时测量水温并在数码管上显示。 B 为设定温度并保温。由用户设定一定的温度,系统自动工作,加热到设定温度后声光报警,声光报警装置可独立开关,如果不切断电源或切换模式,系统将自动竟然保温模式。其中温度的设定有键盘控制。不管在那种工作模式,一旦复位键按下,将回到默认工作模式。在 B 工作模式下并且显示实际水温时,按下加键可以显示用户设定温度。根据以上的分析总结如下:
2. 电路设计
根据以上的分析,可以将整个系统分为以下几个部分:单片机最小系统,测温电路,功率电路,交流过零检测电路,显示电路,系统框图如下:
( 1 ) 89C52 最小系统
最小系统采用将 C52MCU 以及独立键盘、数码管集成在一块板上的工作方式。其中 P0 口接数码管。其他包括复位电路、独立键盘、晶振电路。其电路如下图 5-1 所示:
图 5-1 最小系统
( 2 ) 18B20 测温电路
测温电路是使用 DS18b20 数字式温度传感器,它无需其他的外加电路,直接输出数字量,可直接与单片机通信,读取测温数据,电路十分简单。它能够达到 0.5℃ 的固有分辨率,使用读取温度的暂存寄存器的方法还能达到 0.2℃ 以上的精度。 DS18B20 温度传感器只有三根外引线:单线数据传输总线端口 DQ ,外供电源线 VDD ,共用地线 GND 。外部供电方式 (VDD 接 +5V ,且数据传输总线接 4.7k 的上拉电阻,其接口电路如图 5-2 所示:
图 5-2 控制电路
( 3 )功率电路
功率电路主要是继电器模块,包括三极管以及电阻组成控制部分,与 MCU 进行通信。 PNP 管的导通控制着继电器的常闭触点的接通与否。继电器常闭触点连接着外部加热电路。其中继电器的电感部分连接着二极管,起着引流保护 PNP 管的作用。其电路如下图 6-1 :
图 6-1 功率电路
( 4 )声光报警电路
声光报警电路采用蜂鸣器以及二极管串联的形式,通过 PNP 三极管控制电路通断。利用 P3.7 来与 MCU 通信。如下图 6-2 :
图 6-2 声光报警电路
( 5 )红外接收装置
该部分为创新部分,采用红外接收装置来接受红外遥控器的信号,这样就可以通过无线方式进行信息的传递。通过遥控器可以设定温度,切换工作模式等。工作原理为红外遥控器产生红外信号,红外接收头接收到红外信号后,其内部电路把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。交流信号进入带通滤波器,带通滤波器可以通过 30khz 到 60khz 的负载波,通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形。最终将数字信号传输到 MCU , MCU 做出相应的反应。其电路如下图 7-1 :
图 7-1 红外接收装置
五.软件设计说明
( 1 )总流程
本系统是采用查询方式来显示和控制温度的。其中加入了红外以及键盘等的其他控制器件语句。总流程图如下图 7-2 :
图 7-2 总流程图
( 2 )工作时序
工作时序由初始化模块、测温、显示等模块组成。具体工作时序如下图 8-1 :
图 8-1 工作时序
( 3 )主要程序
1. 主函数如下:
#include
#include
unsignedcharchoice;
unsignedcharkey_down;
#include”DS18B20.H”
#include”PID.H”
#include”XIANSHI.H”
#include”KEYSCAN.H”
#include”INFRARED.H”
voidmain()
{
unsignedinttmp;
unsignedcharcounter=0;
P2|=0x07; // 初始化按键
PIDBEGIN(); // 初始化 PID
init_infrared(); // 初始化红外
ReadTemperature(); // 预读一次温度
hello(); // 显示 HELLO ,屏蔽 85°C
while(1)// 检测红外线
{
if(IrOK==1&&Im[0]==0x00)
proc_infrared();
if(counter--==0)
{
tmp=ReadTemperature();
counter=20;
}
key_scan();// 扫描键盘
proc_key();// 刷新显示缓存
if(choice==0)
update_disbuf(tmp);
else
update_disbuf(set_tmpbuf);
if(pid_on)
compare_temper();
else
{
high_time=0;
low_time=100;
}
}
}
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
;
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>2)
{
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/1600);
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/20000);
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;// 定义通信端口
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&0x1f);
s=(s*100)/16;
a=a>>4;
temper=a|b;
return(t>>2);
}
#endif
六.测试方法与数据
测量方式:接上系统的加热装置,装入 25.06 摄氏度室温的水,通过键盘或者红外遥控器设定控温温度。记录调节时间、超调温度、稳态温度波动幅度等。
测量条件:环境温度 26.5℃ (附:加热电炉功率 600W )。
测量结果:如表二所示。在此仅以数值的方式给出测量结果。调节时间按温度进入设定温度 ±0.5℃ 范围时计算。
表二测量结果数据
设定温度 /℃
35
45
65
75
调节时间 /min
1.15
1.12
1.58
1.06
超调温度 /℃
35.06
45.12
64.87
74.87
稳态误差 /℃
0.06
0.12
0.13
0.13
六.测试结果分析
由测试结果和上表数据得出:
( 1 )温度设定范围为 30 ~ 95℃ (在 40~90 范围内),最小区分度达到 0.01℃ (小于 1℃ )以上,标定温度值也符合设计要求。
( 2 )由于采用了 PID 控制,在环境温度降低时温度控制的静态误差小于 0.5℃ (精度高于设计要求)。
( 3 )用数码管来显示水的实际温度和设定温度值,显示很稳定。
( 4 )采用了 PID 控制,当设定温度突变(由 40℃ 提高到 60℃ )时,经过多次调试知道,当 P=10 ; I=8 ; D=6 时系统具有最小的调节时间和超调量。
( 5 )当温度稳定时,温度控制的静态误差 ≤0.5℃ 。
( 6 )创新部分为添加了红外遥控装置。可代替键盘部分功能,且能更方便的调节温度等。
( 7 )经过多次测试和改进,该系统各方面参数都达到和超过设计参数,完成了既定目标。
参考文献:
[1] 李桢、赵宏权,《 PID 调节概念及基本原理》 [J] ,《科技信息(科学教研)》, 07 , 29 期
[2] 郭天祥,《 51 单片机 C 语言教程》 [M] ,北京:电子工业出版社, 2009
范文试看结束后微信扫下方二维码 即可复制完整版《讲话致辞》范文,全网20万篇优秀素材范文持续更新、一网打尽! 免除会员朋友东奔西跑找材料的后顾之忧!
手机用户可保存上方二维码 到手机中,在微信扫一扫中右上角 选择“从相册选取二维码 ”即可。
范文试看结束后微信扫下方二维码 即可复制完整版《其他免费论文》范文,全网20万篇优秀素材范文持续更新、一网打尽! 免除会员朋友东奔西跑找材料的后顾之忧!
手机用户可保存上方二维码 到手机中,在微信扫一扫中右上角 选择“从相册选取二维码 ”即可。
范文试看结束后微信扫下方二维码 即可复制完整版《其他免费论文》范文,全网20万篇优秀素材范文持续更新、一网打尽! 免除会员朋友东奔西跑找材料的后顾之忧!
手机用户可
保存上方二维码 到手机中,在
微信扫一扫中右上角 选择“从
相册选取二维码 ”即可。