电热杯恒温控制系统设计.docx
《电热杯恒温控制系统设计.docx》由会员分享,可在线阅读,更多相关《电热杯恒温控制系统设计.docx(20页珍藏版)》请在冰豆网上搜索。
![电热杯恒温控制系统设计.docx](https://file1.bdocx.com/fileroot1/2023-1/31/4e9fd3b0-bbed-4716-a227-7379fdaa1f18/4e9fd3b0-bbed-4716-a227-7379fdaa1f181.gif)
电热杯恒温控制系统设计
计算机控制系统课程设计
计算机课程设计(电热杯的恒温控制)
前言
1.1温度控制系统的背景
温度是工业上常见的被控参数之一,恒温控制系统被广泛应用于加热炉,热处理炉,反应炉等。
在一些温控系统电路中广泛采用的是通过热电偶,热电阻或PN结测温电路经过相应的信号调理电路,转换成A/D转换器能接收的模拟量,再经过采样保持电路进行A/D,最终送入单片机及其相应的外围电路,完成监控。
但是由于传统的信号调理电路实现复杂,易受干扰,不易控制且精度不高。
本次设计的单片机控制系统采用温度传感器(DS18B20)检测外部温度对水温进行恒温控制,精度保持在0、1摄氏度,范围保持在0、2摄氏度,不需要复杂的信号调理电路和A/D转换电路就能直接与单片机完成数据采集和处理,实现方便、高精度、适应性强的控制。
也经常用到电烤箱、微波炉、电热水器、烘干箱等需要进行温度控制与检测控制的家用电器。
采用单片机实现温度控制不仅具有温度控制方便、简单、灵活等优点,而且可以大幅提高被控温度的技术指标,从而大大提高了产品的质量。
1
王运动104-自动化-陕西科技大学
计算机控制系统课程设计
总体设计方案2.
2.1系统的总体框图
模量温度测单片机最小51键盘模块块
(添加复位系统电路)
模出度输温
LCD1602块显示模块
串口通信
机PC
2
王运动104-自动化-陕西科技大学
计算机控制系统课程设计
2.2总电路图
3.硬件电路设计
3.1温度测量与控制模块
U5
P00DS18B20
DCP01NCO/VGI
VCC123VCC
P02R1K4.7P14
P033
王运动104-自动化-陕西科技大学
计算机控制系统课程设计
温度传感半导体公司的DS18B20温度测量模块采用的是ASLLAS
器。
该传感器与传统的热敏电阻相比,他能直接读出被测温度。
这一数字温度传感部分主要完成对温度的采集和转换工作,有DS18B20数字温度传感器把采集到的温度通过数器与其单片机接口部分组成。
,该模块由温度传感器,双向可控硅,光I/O据引脚传送到单片机的。
温度传感器负责温度的采集传送,由单片机程序判断处理耦组成口的高低电平变换控制经过光耦的隔离传输控制可控0后通过P22、电源进行加热。
BAT06的开关,可控硅导通则电热杯接通220V硅
键盘模块3.2分别由程序定义为控制目标接上拉电阻,键盘模块设置有六个按键,1.温度的十位个位与十分位的加减
串口通信3.3
机进行通信方便程序的烧制,尽管单片机有串行通信功PC单片机与的标准不一样,因此要通过能,但单片机提供的信号电平和RS232是一种双组驱动这种类似的芯片进行电平转换。
MAX232MAX232电源供电接收器,片内含有一个电容性电压发生器以便在单5V器/EIA/TIA-232-E电平。
液晶显示模块3.4
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
4
王运动104-自动化-陕西科技大学
计算机控制系统课程设计
控制原理是HD44780市面上字符液晶大多数是基于液晶芯片的,写的控制程序可以很方便地应用于完全相同的,因此基于HD44780116脚接口,其中:
第市面上大部分的字符型液晶。
1602采用标准的为液晶显脚:
V0接5V电源正极第3脚:
VSS为电源地第2脚:
VCC接地电源时对比度最高示器对比度调整端,接正电源时对比度最弱,的电位10K(对比度过高时会产生“鬼影”,使用时可以通过一个时选择数据寄14脚:
RS为寄存器选择,高电平器调整对比度)。
第为读写信号线,高电RW0时选择指令寄存器。
第5脚:
存器、低电平端为EN)脚:
E(或平
(1)时进行读操作,低电平(0)时进行写操作。
第6~1)时读取信息,负跳变时执行指令。
第7(enable)使能端,高电平(背脚:
空脚或背灯电1515为8位双向数据端。
第~1614脚:
D0~D716脚背光负极。
光正极,
PID控制4
基本公式4.1PID灵可以根据受控对象的特性和控制的性能要求,在实际应用中,
活地采用不同的控制组合,构成控制器比例(P)
控制器比例+积分(PI)
5
王运动104-自动化-陕西科技大学
计算机控制系统课程设计
控制器比例+积分+微分(PID)
式中或
式中
控制系统中的应用4.2
从在单回路控制系统中,由于扰动作用使被控参数偏离给定值,自动控制系统的调节单元将来自变送器的测量值与给定而产生偏差。
运算,并输出统(PID)值相比较后产生的偏差进行比例、积分、微分一标准信号,去控制执行机构的动作,以实现对温度、压力、流量、也为及其他工艺参数的自动控制。
是偏差对时间的积累;只与偏差成正比;积分作用PI比例作用D是偏差的变化率;微分作用的独立介绍PID4.3
(P)比例控制除了系统控制输从而减少稳态误差。
比例控制能迅速反应误差,
比例控制都能给出稳态0和系统过程值等于期望值这两种情况,入为误差。
当期望值有一个变化时,系统过程值将产生一个稳态误差。
但6
王运动104-自动化-陕西科技大学
计算机控制系统课程设计
是,比例控制不能消除稳态误差。
比例放大系数的加大,会引起系统的不稳定。
控制阶跃响应图2比例(P)
控制积分(I)在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
积分项对误差取决为了减小稳态误差,在控制器中加入积分项,于时间的积分,随着时间的增加,积分项会增大。
这样,即使误差很它推动控制器的输出增大使小,积分项也会随着时间的增加而加大,稳态误差进一步减少,直到等于零。
控制器,可积分(PI)通常一起使用,称为比例积分(I)和比例(P)+由于积(I)的话,以使系统在进入稳态后无稳态误差。
如果单独用积分7
王运动104-自动化-陕西科技大学
计算机控制系统课程设计
这样会造成调节不分输出随时间积累而逐渐增大,故调节动作缓慢,及时,使系统稳定裕度下降。
(I)控制和比例积分(PI)控制阶跃相应图3积分
微分(D)控制在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
)由于自动控制系统有较大的惯性组件(环节)或有滞后(delay(D)在调节过程中可能出现过冲甚至振荡。
解决办法是引入微分组件,控制,即在误差很大的时候,抑制误差的作用也很大;在误差接近零8
王运动104-自动化-陕西科技大学
计算机控制系统课程设计
时,抑制误差的作用也应该是零。
控制和比例微分(PD)控制阶跃相应图4微分(D)
建立时间过冲上升时间稳态误差增益常数(系数)减少增大减小很小变化Kp
增加增大减少消除KI减小减少很小变化很小变化KD
PID算法原理5.增量式
2-4)(9
王运动104-自动化-陕西科技大学
计算机控制系统课程设计
个采k-1增量式PID控制算法可以通过(2-4)推导得到控制器的第样时刻的输出值为:
(2-5)
控制算2-4)与(2-5)相减并整理,就可以得到增量式PID将(法公式为:
(2-6)其中
)可以看出,如果计算机控制系统采用恒定的采样由(2-6
,只要使用前后三次测量的偏差值,就、C,一旦确定A、B周期T)求出控制量。
可以由(2-601王运动104-自动化-陕西科技大学
计算机控制系统课程设计
)相比,计算量小算法(2-4增量式PID控制算法与位置式PID得多,因此在实际中得到广泛的应用。
控制算法也可以通过增量式控制算法推出递推计算公PID位置式式:
(2-7)控制(2-7)就是目前在计算机控制中广泛应用的数字递推PID算法。
6.软件设计程序/*********************************************************************************
标题;基于单片机的温度控制实验*
*
*
*
描述:
*1.用温度传感器DS18B20测得温度值;
*
1
1王运动104-自动化-陕西科技大学
计算机控制系统课程设计
*2.用LCD1602液晶显示器作为人机界面,其可以显示当前温度值,设定温度值等;*
3.使用PID控制算法,控制水温,从而达到恒温。
*
*
*
*
*目的:
1.学会DS18B20的驱动;
*
*2.学会LCD1602的驱动;
*
*3.理解PID控制原理;
*
*********************************************************************************/
#include//包含51单片机头文件
#include//包含数学计算头文件
//包含用户头文件delay.h,#includeDelay.h
作用:
延时
//包含用户头文件#includeLCD1602.h
LCD_1602.h,作用:
驱动1602液晶显示器显示
#includeDS18B20.h//包含用户头文件ds18b20.h,作用:
驱动温度传感器测量当前温度
21王运动104-自动化-陕西科技大学
计算机控制系统课程设计
#includeKeyScan.h//包含用户头文件Keyscan.h,作用:
键盘扫描,获取按键值
#defineucharunsignedchar//用uchar代替unsignedchar
#defineuintunsignedint//用uint代替unsignedint
//定义电热杯开通关断引脚sbitkaitong=P2^0;
//定义上上一次偏差值intPrevError=0;
定义上一次偏差值intLastError=0;//intError=0;//定义当前偏差值intPError,IError,DError;中间变量//intLastValue;上一次的输出值//
本次的输出值intNowValue;////intFull,Part;加热占空比调节参数intSetValue=610;
度60初始化温度值//floatProportion=0.44;
floatIntegral=0.005;//定义积分参数
floatDerivative=5;定义微分参数//
/**************************************************************************************
31王运动104-自动化-陕西科技大学
计算机控制系统课程设计
*名称:
增量式PID计算函数
*
*
*
*描述:
增量式PID表达式如下
*
*datau(k)=Kc*[e(k)-e(k-1)]+Ki*e(k)+Kd*[e(k)-2*e(k-1)+e(k-2)]
*
*或datau(k)=Kc*{e(t)-e(k-1)}+Kc*T*e(k)/Ti+Kd*Td*[e(t)-2*e(t-1)+e(t-2)]/T**
*
*
为设定值与实际值之差,*说明:
e(t)
*
Kc*为比例系数
*
积分系数*Ki=Kc*T/Ti
*
微分系数*Kd=Kc*Td/T
*
为采用周期T*
14王运动104-自动化-陕西科技大学
计算机控制系统课程设计
*
*Ti为积分时间
*
为微分时间*Td
*
**************************************************************************************/
计算部分PID//intPIDCalc(intNextValue)增量式{
赋LastError将上一次偏差PrevError=LastError;//
给上上一次偏差PrevError
LastError=Error;//将当前偏差Error赋给上一次偏差LastError
Error=keyscan()-NextValue;//将新的偏差赋给当前偏差Error偏差是绝对值,有错
LastValue=NowValue;//将本次输出值赋给上一次输出值
if(Error>=100)
{
return(20);
}
elseif((Error<100)&&(Error>=50))
15王运动104-自动化-陕西科技大学
计算机控制系统课程设计
{
return(14);
}
elseif((Error<50)&&(Error>=20))
{
return(10);
}
elseif((Error<20)&&(Error>0))
{
PError=Proportion*(Error-LastError);
IError=Integral*Error;
DError=Derivative*(Error-2*LastError+PrevError);
NowValue=PError+IError+DError+LastValue;
//计算PID控制值returnNowValue;
}
else
{
PError=Proportion*(Error-LastError);
IError=Integral*Error;
DError=Derivative*(Error-2*LastError+PrevError);
NowValue=PError+IError+DError+LastValue;
return0;
61王运动104-自动化-陕西科技大学
计算机控制系统课程设计
}
}
/****************************************************************
**
*
*主函数
**
****************************************************************/
voidmain()
{
uintccc=100;
LCD_init();
//从第1行第2个字符位开始显setPosition(1,2);
示“Welcomto”
prints(Welcomto);
setPosition(2,5);//从第1行第2个字符位开始显
示“SUST”
prints(SUST);
17王运动104-自动化-陕西科技大学
计算机控制系统课程设计
delayl(1000);//延时,使欢迎界面在屏幕上停留片刻
write_com(0x01);//初始化LCD
while
(1)
{
if(ccc==0)
{
Part=PIDCalc(readtemp());
ccc=100;
}
for(;ccc>0;ccc--)
{
dd=dd+1
Full++;
,相当于1//加
1
if(Full>20),则复位为大于如果//dd20
{
Full=1;
}
Fullif(Full<=Part)
计算值,如果PID//判断小于等于该值,则开通发热管;否则关断
81王运动104-自动化-陕西科技大学
计算机控制系统课程设计
kaitong=0;
else
kaitong=1;
/*从第2行第2字符位开始显示设定温度值*/
setPosition(1,0);
IntToStr(keyscan(),buffer,3);//处理温度值,以便显示
prints(S:
);//显示SET:
//显示十位printc(buffer[0]);
printc(buffer[1]);//显示个位
printc('.');//显示小数点
//显示十分位printc(buffer[2]);
printc(0xDF);//显示摄氏度符号右上角的小
圆圈
printc('C');
//显示摄氏度符号“C”
/*2字符位开始显示当前温度值*/从第1行第setPosition(1,8);
IntToStr(readtemp(),buffer,3);处理温度值,以便显示//prints(P:
);//显示CUR:
//显示十位printc(buffer[0]);
printc(buffer[1]);显示个位//19王运动104-自动化-陕西科技大学
计算机控制系统课程设计
printc('.');//显示小数点
//显示十分位printc(buffer[2]);
printc(0xDF);//显示摄氏度符号右上角的小圆圈
printc('C');
//显示摄氏度符号“C”
setPosition(2,0);
//处理温度值,以便显示IntToStr(NowValue,buffer,3);
//显示十位printc(buffer[0]);
//显示个位printc(buffer[1]);
printc(buffer[2]);
setPosition(2,4);
//处理温度值,以便显示IntToStr(PError,buffer,3);
//显示十位printc(buffer[0]);
显示个位printc(buffer[1]);//printc(buffer[2]);
setPosition(2,8);
//IntToStr(IError,buffer,3);处理温度值,以便显示显示十位//printc(buffer[0]);
printc(buffer[1]);//显示个位
printc(buffer[2]);
setPosition(2,12);
02王运动104-自动化-陕西科技大学
计算机控制系统课程设计
IntToStr(DError,buffer,3);//处理温度值,以便显示
printc(buffer[0]);//显示十位
//显示个位printc(buffer[1]);
printc(buffer[2]);
}
}
}
7.总结
这次是在老师的带领下完成的,但自己上学期就接触到相关资料,也进行过焊接与测试,所以这次课程设计显得比较轻松。
由于板子是布好线的PCB,大大降低了设计的难度,主要的困难便落在了程序的编写与PID参数的调试。
这次试验的很多时间也耗在了参数的调试,自己也总结了一定的经验,很好的完成了本次课程设计。
参考资料
1.林敏计算机控制技术及工程应用国防工业出版社,2005年出版
2.朱玉玺等编.计算机控制技术.电子工业出版社.2005年出版
12王运动104-自动化-陕西科技大学
计算机控制系统课程设计
1前言………………………………………………………………………………1
2总体设计方案……………………………………………………………………2
2.1系统的总体框图……………………………………………………………2
2.2总电路图……………………………………………………3
3硬件电路设计……………………………………………………………………3
3.1温度与测量模块…………………………………………………………3
3.2键盘……………………………………………………………….4
3.3串口通信……………………………………………………………………4
3.4液晶显示模块……………………………………………………………4
4.PID控制……………………………………………………………….……5
4.1PID基本公式…………………………………………………………5
4.2控制系统中的应用…………………………………………………………6
4.3PID独立介绍…………………………………………………………6
5增量式PID算法…………………………………………………………………9
6软件设计…………………………………………………………………………10
参考文献……………………………………………………………………………21
王运动104-自动化-陕西科技大学