室内温度控制系统设计.docx
《室内温度控制系统设计.docx》由会员分享,可在线阅读,更多相关《室内温度控制系统设计.docx(44页珍藏版)》请在冰豆网上搜索。
室内温度控制系统设计
室内温度自动控制系统
摘要
在现代人类的生活环境中,温度扮演着极其重要的角色。
在人们的生产生活中,无论生活在哪里,从事什么工作,都要时时刻刻与温度打着交道。
尤其是在18世纪工业革命以来,工业发展与农业生产都与能否掌握温度,有着密不可分的联系。
因此,温度的监测与控制与人类的生产生活有着十分重要的意义。
我们通过STC12C5A60S2单片机和DALLAS公司DS18B20温度传感器对室内温度进行实时监测与控制实现温度的相对稳定具有极其重要的现实意义。
通过该系统的设计制作实践对电子系统设计运动控制理论应用,研究新技术学习知识增强动手能力具有重要的现实意义。
关键字:
温度控制DS18B20单片机控制系统设计
论文共45页
1引言
1.1项目概述
我们的项目开发针对的对象是收入水平不高,买不起空调,有希望能不受热受冷舒适的生活。
并且本系统操作简单,成本低廉。
本系统包括:
温度采集、无线人机交互、自动控制、异常报警等四部分。
1、温度采集
温度采集通过DS18B20将环境温度采集反馈回单片机并在显示界面上显示出来。
2、无线人机交互
使用者可以通过遥控器设置风速,温度等模式。
3、自动控制
通过使用者设置的风速、温度和采回来的环境温度通过单片机自动对加热和风速进行控制,起到自动控制环境温度的作用。
4、异常报警
对于在使用时产生异常,比如温度过高时,系统发起声光报警提示出现问题。
1.2设计目的
人们在日常的生活中,烈日炎炎的夏季会使人们感觉酷暑难耐,在白雪皑皑的冬季又会冷的瑟瑟发抖;于是人们就想买台空调,可是空调又太昂贵,对于大部分低收入阶层来说很难能承担起着部分费用。
而夏日买的电风扇又在冬天又不能使用,冬日的电热炉有不能在热天使用;季节一交替就要将其封存起来,不利于设备的有效使用,在存储时候又要占据多余的空间,带来了不少麻烦。
而在这种情况下我们发现为什么不将风扇和电热炉有效结合起来再加上一些传感器和控制器组成一个温度自动控制系统,这样价格便宜而且一年四季都能使用。
还能自动调节不用过多的人为干预,为人们营造一个舒适的环境。
同时我们还发现我们发现这样一个控制系统也可以推广到大棚种植等一些对温度有要求的环境。
这样有很好的市场前景和研究意义。
1.3设计任务
从生物学角度室内温度一般冬天不应低于12℃,夏天以不高于26℃为宜。
同时,还要尽量做到各点温度均匀并保持时间上的恒定。
平均温差(外墙内壁的温度与室内任何一处的温度差)不天于2℃,垂直温差(高差每米相差的度数)不大于3℃。
在这种情况下才是健康的温度。
为了能够人们身体健康,又能满足价格低廉、操作简单、适合任何人群使用的原则本设计将采用红外无线遥控,和单片机自动控制采用风扇和发热丝来实现温度的调节。
1.4研究思路和方法
通过温度传感器DS18B20对室内温度进行采集,并实时显示在1602的液晶界面上,通过红外遥控器来调节模式和调节温度。
并通过电机和电热丝冰块来实现对于室内温度的调节。
在检测系统的执行性能,我们采用对其功耗进行测量,了解在各个模式下功耗进行测量。
设置不同的温度记录系统调节到相应温度需要的时间,和系统在保持这个温度时候的振荡情况。
2项目总体方案设计
2.1系统原理框图与工作原理
2.1.1国内外室温控制技术研究
从国内外温室控制技术的主流方式来看,室内温度控制技术大致有三种方式。
(1)手动控制。
通过人对室内温度的观测,凭借长期积累的经验和直觉推测及判
断,手动调节温室内环境。
但这种控制方式的劳动生产率较低,并不能实现室内温度的自动控制。
(2)自动控制。
这种控制系统需要计算机根据传感器的实际测量值与温控系统事
先设定的目标值进行比较,有计算机完成室内温度的控制过程。
计算机自动控制的温室控制技术实现了自动化控制。
但由于计算机自动控制的实现方式有很多种形式,所以要根据设计要求及经费预算选择适合的计算机自动控制。
(3)智能化控制。
这是在温室自动控制技术和生产实践的基础上,构建专家系统,的温室信息自动采集及智能控制。
这种控制方式相对前两种控制方式成本较高。
2.1.2系统原理框图设计
根据室内温度控制系统设计要求,温控自动控制系统,本系统由温度采集模块、电源模块以及人机交互模块、控制系统模块、升温模块、电机驱动模块六个部分组成。
图1.系统框图
3.系统硬件设计
3.1电源模块
本系统电源部份共分为三个模块5V直流、12V直流和220V交流,12V直流为风扇模块供电,220V交流为发热丝供电,5V为其与控制系统供电。
12V由电源适配器产生,12V直流电经LM7805稳压后得到5V直流为控制系统供电。
LM7805稳压模块电路如图:
图2.LM7805稳压模块
3.2控制系统模块
控制系统主要由STC公司生产的12C5A60S2作为主控制芯片,STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
控制系统的最小系统如图二,
图3:
单片机最小系统
3.3温度检测
3.3.1常用温度检测传感器
(1)热敏电阻式温度传感器
热敏电阻是开发早、种类多、发展较成熟的敏感元器件.热敏电阻由半导体陶瓷材料组成,热敏电阻是用半导体材料,大多为负温度系数,即阻值随温度增加而降低。
温度变化会造成大的阻值改变,因此它是最灵敏的温度传感器。
但热敏电阻的线性度极差,并且与生产工艺有很大关系。
制造商给不出标准化的热敏电阻曲线。
热敏电阻体积非常小,对温度变化的响应也快。
但热敏电阻需要使用电流源,小尺寸也使它对自热误差极为敏感。
利用的原理是温度引起电阻变化.若电子和空穴的浓度分别为n、p,迁移率分别为μn、μp,则半导体的电导为:
σ=q(nμn+pμp)。
因为n、p、μn、μp都是依赖温度T的函数,所以电导是温度的函数,因此可由测量电导而推算出温度的高低,并能做出电阻-温度特性曲线.这就是半导体热敏电阻的工作原理.热敏电阻包括正温度系数(PTC)和负温度系数(NTC)热敏电阻,以及临界温度热敏电阻(CTR)。
图4.热敏电阻
(2)热电阻式温度传感器
热电阻(thermalresistor)是中低温区最常用的一种温度检测器。
热电阻测温是基于金属导体的电阻值随温度的增加而增加这一特性来进行温度测量的。
它的主要特点是测量精度高,性能稳定。
其中铂热电阻的测量精确度是最高的,它不仅广泛应用于工业测温,而且被制成标准的基准仪。
热电阻大都由纯金属材料制成,目前应用最多的是铂和铜,此外,现在已开始采用镍、锰和铑等材料制造热电阻。
金属热电阻常用的感温材料种类较多,最常用的是铂丝。
工业测量用金属热电阻材料除铂丝外,还有铜、镍、铁、铁—镍等。
图5.Pt100热电阻式温度传感器
(3)热电偶式温度传感器
热电偶(thermocouple)是温度测量仪表中常用的测温元件,它直接测量温度,并把温度信号转换成热电动势信号,通过电气仪表(二次仪表)转换成被测介质的温度。
各种热电偶的外形常因需要而极不相同,但是它们的基本结构却大致相同,通常由热电极、绝缘套保护管和接线盒等主要部分组成,通常和显示仪表、记录仪表及电子调节器配套使用。
图6.热电偶
(4)数字式温度传感器
数字式温度传感器具有体积小、价格便宜操作方便的优点。
本系统采用了美国DALLAS公司生产的单总线数字温度传感器,一线制器件——独特的接口,使分布式温度检测得以简化。
每片DS18B20都有唯一的产品号能够实现温度的多点检测。
测量范围为-55度——+125度,12位的数字值分辨率为0.0625度,完全能够满足我们日常所需温度值。
图7.数字式温度传感器DS18B20
3.3.2DS18B20温度传感器电路
我们温度检测部分采用了DS18B20进行温度采集,传感器采集电路如下图
图8.DS18B20温度采集电路
3.4驱动模块
3.4.1半桥驱动原理
制冷风扇为12V直流电机我们采用MOS管制作半桥进行驱动,
图9.半桥驱动电路原理
图10.IRF3205
3.5升温模块
升温模块我们采用了电吹风发热丝采用220V交流供电,功率达到750W,可以升高到300度左右,我们通过电吹风将温度吹到空气中到达升高周围温度的作用。
图11.发热丝
3.6人机交互模块
3.6.11602液晶显示
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。
通过1602液晶能够将我们采集的温度进行实时显示,并对其中的参数进行设置。
图12.1602液晶显示电路
图13.1602液晶
3.6.2红外遥控操作原理
我们使用红外遥控器对系统进行设置。
专用遥控器作为控制信号发出装置,当按下遥控器的设置键后,红外接收探头,接收红外信号频率为38kHz,周期约26μs,一体化红外接收装置接收到遥控器发出的设置控制信号,然后将信号送到专用的解码芯片中进行解码,解码后将信号送到单片机,由单片机查表判断这个信号是不是设置信号,当确认是设置信号后,启动设置子程序,那么以后接收到的红外信号就可以对系统进行设置了。
图14.红外一体式接收头HS0038
3.6.3红外接收电路
红外接收电路连接到单片机中断口,当红外接收头接收到红外信号后引发中断对系统参数进行设置
图15.红外接收电路
4.系统软件设计
4.1程序流程图
图16.程序设计流程图
4.2温度采集
4.2.1DS18B20软件定义
指令的宏定义定义
#defineskip_ROM0xcc//跳过,允许总线控制器不用提供64位ROM编码就使用储存器操作命令
#defineread_ROM0x33//只有在总线上存在单只DS18B20时候才能使用,允许读出8位系列编码、唯一的序列号和8位CRC吗
#definematch_ROM0x55//匹配命令,后跟64位ROM序列,让总线控制器在多点上定位一只特定的DS1820
#definesearch_ROM0xf0//初次启动系统不知道有多少只DS1820,搜索从机的64位编码
#definealarm_searh0xec//只有最近一次测温后遇到符合报警条件的情况,DS1820才响应这条命令,报警条件在高于TH或低于TL
//只要不掉电,警报一直保持,直到不为报警条件为止
#definew_scrat0x4e//写暂存存储器
#definer_scrat0xbe//读暂存存储器
#definec_scrat0x48//复制暂存存储器
#definec_temper0x44//温度变换
#definer_EPROM0xb8//重新调出
#definer_Power0xb4//读电源
DS18B20的一次温度转换后,温度值储存在TH和TL中
4.2.2温度的计算
在软件中采用了12位存储温度值,最高位为符号位,负温度S=1,正温度S=0,00AAH为+85°C,0032H为+25°C,FF92H为-55°C。
TL=R_byte();//将低位温度值对出
TH=R_byte();//将高位温度值对出
temp=(TL|(TH<<8));//将温度值存在一个unsignedint型的16位变量中
temp=(temp*625);将数据转换为实际温度值
4.3红外遥控
红外的遥控器的编码为引导码、低8位用户编码、高8位用户编码、8位数据码、8位键数据码的反码。
通过一个红外解码器连接在单片机的中断口,只要一有数据就会触发中断,单片机就会读取数据,判断数据是不是本系统遥控器发出的。
通过检验读出操作按键的编码值,在程序中比较编码值判断进行的相应操作并执行。
voidIR_IN()interrupt0
{
ucharj,k,N=0;
EX0=0;
delay_m(15);
if(IRIN==1)
{
EX0=1;
return;
}
//确认IR信号出现
while(!
IRIN)//等IR变为高电平,跳过9ms的前导低电平信号。
{delay_m
(1);}
for(j=0;j<4;j++)//收集四组数据
{
for(k=0;k<8;k++)//每组数据有8位
{
while(IRIN)//等IR变为低电平,跳过4.5ms的前导高电平信号。
{delay_m
(1);}
while(!
IRIN)//等IR变为高电平
{delay_m
(1);}
while(IRIN)//计算IR高电平时长
{
delay_m
(1);
N++;
if(N>=30)
{
EX0=1;
return;
}//0.14ms计数过长自动离开。
}//高电平计数完毕
IRCOM[j]=IRCOM[j]>>1;//数据最高位补“0”
if(N>=8)
{
IRCOM[j]=IRCOM[j]|0x80;//数据最高位补“1”
}
N=0;
}//endfork
}//endforj
if(IRCOM[2]!
=~IRCOM[3])
{
EX0=1;
return;
}
switch(IRCOM[2]==0x47)//按mode键进入模式调节,按一下调节风速,按两下调节温度范围,
{//按三下返回工作模式
case1:
N1++;
if(N1==1)
{
L1602_string(1,1,LCD_ID_3);
L1602_string(2,1,LCD_ID_4);
Tplayer(11,FF);
}
elseif(N1==2)
{
L1602_string(1,1,LCD_ID_5);
L1602_string(2,1,LCD_ID_6);
Tplayer(4,TTi);
Tplayer(12,TTm);
}
else
{
N1=0;
IRCOM[2]=0xaa;
}
break;
default:
break;
}
if(N1!
=0)
{
switch(IRCOM[2])//如果进入调节模式,调节温度,与风速
{
case0x15:
Ch++;//光标所在位置的标志位控制的设置
if(Ch>2)
{
Ch=1;
}
break;
case0x07:
Ch--;//光标所在位置的标志位控制的设置
if(Ch<1)
{
Ch=2;
}
break;
case0x40:
if(N1==2&&Ch==1)//如果当按下Ch+键在温度调节模式调节最低温度事数值++
{
if(TTi{
TTi++;
}
if(TTi>=TTm)
{
TTi=0;
}
}
if(N1==2&&Ch==2)
{
if(TTm{
TTm+=TTi;
}
TTm++;
}
if(N1==1)
{
FF++;
}
Dianji();
if(N1==2)
{
Fare();
Tplayer(4,TTi);
Tplayer(12,TTm);
if(TTm>40)
{
TTm=0;
}
if(TTi>40)
{
TTi=0;
}
}
break;
case0x44:
//按下CH—键
if(N1==2&&Ch==1)
{
if(TTi=0)
{
TTi--;
}
elseif((TTi==0)&&(TTm==0))
{
TTi=0;
}
else
{
TTi=TTm-1;
}
Tplayer(4,TTi);
}
if(N1==2&&Ch==2)
{
if(TTm>TTi)
{
TTm--;
}
Tplayer(12,TTm);
}
if(N1==1)
{
FF--;
}
Dianji();
Fare();
if(TTm<1)
{
TTm=40;
}
if(TTi<1)
{
TTi=40;
}
default:
break;
}
}
if(N1==0)
{
switch(IRCOM[2])
{
case0xaa:
L1602_string(1,1,LCD_ID_1);
L1602_string(2,1,LCD_ID_2);
M_D(7,TT);
Tplayer(11,FF);
break;
default:
break;
}
}
EX0=1;
}
4.4电机的PWM控制
STC12C5A60S2的内部集成模块有两路PWM波发生器
通过下面寄存器写入相应的值来控制PWM的占空比
CCAP0H=CCAP0L=0X00;
这样不同风速寄存器中的数值是不一样的。
下面是电机控制的函数
voidDianji()
{
if(FF==1&&N1==1)//当按下CH+时如果在风速调节模式调节风速数值
{
CCAP0H=CCAP0L=0Xdd;
Tplayer(11,FF);
}
elseif(FF==2&&N1==1)
{
CCAP0H=CCAP0L=0Xaa;
Tplayer(11,FF);
}
elseif(FF==3&&N1==1)
{
CCAP0H=CCAP0L=0X88;
Tplayer(11,FF);
}
elseif(FF==4&&N1==1)
{
CCAP0H=CCAP0L=0X77;
Tplayer(11,FF);
}
elseif(N1==1&&FF>4)
{
FF=1;
CCAP0H=CCAP0L=0X44;
Tplayer(11,FF);
}
elseif(N1==1&&FF<1)
{
FF=4;
CCAP0H=CCAP0L=0X00;
Tplayer(11,FF);
}
}
4.5发热电阻丝的控制
通过控制继电器的通断来实现发热电阻丝的工作发热这样程序就通过给驱动继电器给高低电平来实现
注:
采集温度,当温度发生异常声光报警,加热是红灯提示,不发热时黄灯提示,并显示实时温度
下面是实现的共功能函数
voidFare()
{
if(TT{
JRE=0;
}
elseif(TT>=TTi&&TT{
JRE=0;
}
elseif(TT>=TTm)
{
JRE=1;
}
}
在工作是的工作状态的LED灯指示和声光报警程序通过下面的函数来实现如果温度
voidXianshi()
{
delay_m(130);
TT=DS18b()/10000;//采集温度
if(TT>=80)//R如果温度大于100度发出声光警报
{
BEEP=0;
}
else
{
BEEP=1;
}
if((TT>=TTm))
{
HT=0;
LT=1;
}
else
{
LT=0;
HT=1;
}
if(!
N1)
{
M_D(7,TT);
}
}
5.调试运行
5.1温度传感器校准
我们通过DS18B20进行温度采集,并通过1602液晶进行显示,为了提高我们采集温度的精度与可信度我们用水银温度计对温度进行了校准,由于我们对室内温度进行测量人对温度在一度范围内感知不明显我们在测量温度时只对温度的整数部分进行了显示;在校准过程中我们认为水银温度计的温度为标准温度;同时我们对成都地区的温度为例进行调节温度变化范围是0——50,我们对0到56度范围内的温度进行了校准,每次温度递增7度由于温度不宜控制在用温度计测量时会有小数部分不是严格的递增7度结果如下表1:
表1.实际温度与系统测得温度比较
实际温度(度)
0
7.2
14.3
21.1
28.5
35.3
42.4
49.2
56.1
系统测得温度(度)
0
7
14
21
28
35
42
49
56
通过数据表格我们可以发现系统测得温度与实际温度存在一度的误差,原因是因为人们对一度温度变化不太敏感我们只对温度整数部分进行了显示而未显示小数部分造成的,。
由于我们对室内温度进行调节温度要求不高不要求精确测量。
理论上温度能够误差能够控制在-0.0625度——0.0625度范围内。
5.2温度调节时间
为了确定我们的系统能否对目标范围内的温度进行调节,我们设定目标温度然后进行了调节,我们规定如