基于单片机设计的简易热水器控制系统大学论文.docx
- 文档编号:25567980
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:29
- 大小:414.34KB
基于单片机设计的简易热水器控制系统大学论文.docx
《基于单片机设计的简易热水器控制系统大学论文.docx》由会员分享,可在线阅读,更多相关《基于单片机设计的简易热水器控制系统大学论文.docx(29页珍藏版)》请在冰豆网上搜索。
基于单片机设计的简易热水器控制系统大学论文
课设题目:
基于单片机的温度控制系统设计
学生姓名:
学号:
所在院(系):
物理与电信工程学院
专业班级:
电子信息工程1303班
指导教师:
完成地点:
陕西理工大学博远楼单片机实验室
2016年12月09日
目录
1引言3
2设计内容及性能指标3
3系统方案比较、设计与论证3
3.1主控制器模块3
3.2温度测量3
3.3设置温度4
3.4显示模块5
3.5电源选取5
4系统器件选择6
5硬件实现及单元电路设计7
5.1主控制模块7
5.2显示模块电路7
5.3数码管显示驱动电路8
5.4温度传感器(DS18B20)电路8
5.4.1DS18B20基本介绍8
5.4.2DS18B20控制方法9
5.4.3DS18B20供电方式9
5.5继电器加热控制电路10
结论10
参考文献11
附录1整体电路原理图12
附录2部分源程序13
摘要
随着社会的发展,人类科技的进步,各行各业都在使自己的产品智能化、数字化,因老式的热水器使用煤气或天然气对水进行燃烧加热,用手动的方式调节温度,不仅不能够精确的确定使用者需要的水温,而且还存在一定的危险性。
电热水器是一种可供浴室、洗手间及厨房使用的家用电器,随着人们生活质量的提高,现代的家用电热水器已经摒弃了以前的做法,而采用一种更加精确、安全的实施方案。
关键字:
18B20、STC89C52、热水器
ABSTRACT
Withthedevelopmentofsociety,theprogressofhumanscienceandtechnology,inallwalksoflifetomaketheirproductsintelligent,digital,becausethewaterheaterusingold-fashionedgasornaturalgasisburnedtoheatwater,adjustthetemperaturemanually,notonlycantheuserneedstobeaccuratelydetermined,andthereissomerisk.
Electricwaterheaterisakindofhouseholdappliancesforbathroomandkitchen,restroomuse,alongwiththeimprovementofpeople'slivingquality,householdelectricwaterheatermodernhaverejectedthepreviouspractice,andbyusingamoreaccurate,safeimplementationplan.
Keywords:
18B20、STC89C52、热水器
1引言
随着人们生活水平的提高,热水器在人们的生活中扮演着越来越重要的角色,越来越受到人们的青睐。
由于燃气热水器易受水压限制,而且安全性较差。
每年使用燃气热水器造成的爆炸、中毒等事故也屡有所闻。
消费者对燃气热水器怀有一定的惧怕感,所以燃气热水器渐渐淡出市场。
而智能电热水器越来越受到人们的认可。
2设计内容及性能指标
本设计采用51单片机+DS18B20温度传感器+数码管显示+继电器+功能按键组成。
DS18B20温度传感器检测水温并将水温信息转换成电信号传送给单片机,单片机将得到的数据进行处理、显示与控制。
上电后数码管显示当前的水温温度,通过按键可设置水温值,当检测到的水温低于设置的水温值时,继电器吸合接通外部加热装置,使水温达到设定水温值。
当水温值超过设定水温值时,继电器断开,停止加热。
温度检测精确到0.1度。
并具有掉电保存功能,数据保存在单片机内部EEPOM中,按键还具有连加、减功能。
3系统方案比较、设计与论证
该系统主要由温度测量和温度设置及系统状态显示三部分电路组成,下面介绍实现此系统功能的方案。
3.1主控制器模块
方案1:
采用可编程逻辑器件CPLD作为控制器。
CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。
采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。
但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。
且从使用及经济的角度考虑我们放弃了此方案。
方案2:
采用STC89C52单片机作为整个系统的核心,用其控制水温测量控制系统,以实现其既定的性能指标。
充分分析我们的系统,其关键在于实现水温的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。
这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。
STC89C52单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是STC89C52单片机价格非常低廉。
3.2温度测量
方案1:
采用数字温度芯片DS18B20测量实际温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器STC89C52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。
既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外STC89C52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
方案2:
采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成(如下图),热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。
通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。
数据采集部分则使用带有A/D通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。
热电偶的优点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到A/D转换电路,感温电路比较麻烦。
图1热电偶电路图
从以上两种方案,容易看出方案二的测温装置可测温度范围宽、体积小,但是线性误差较大。
方案一的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了方案一。
3.3设置温度
方案1:
采用键盘输入设置温度,键盘则可以用4个按键,一个复位键,一个功能设定键,一个加减一个减键。
四个键比较常用,而且用到的接口得到了极好的利用,仅需要4个接口。
方案2:
可采用4*4矩阵键盘,该键盘需要8个接口,而我们不需这么多键。
综上所述,我们选择第一种方案。
3.4显示模块
方案1:
用数码管进行显示。
数码管由于显示速度快,使用简单,显示效果简洁明了而得到了广泛应用。
方案2:
用LCD液晶进行显示。
LCD由于其显示清晰,显示内容丰富、清晰,显示信息量大,使用方便,显示快速而得到了广泛的应用。
单对于此系统我们不需要显示丰富的内容,而且LCD液晶价格贵,因此我们放弃了此方案。
综上所述我们选择方案1
3.5电源选取
由于本系统采用电池供电,我们考虑了如下几种方案为系统供电。
方案1:
采用5V蓄电池为系统供电。
蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。
但是蓄电池的体积过于庞大,在小型电动车上使用极为不方便。
因此我们放弃了此方案。
方案2:
采用3节1.5V干电池共4.5V做电源,经过实验验证系统工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。
综上所述采用方案2
4系统器件选择
1.温度传感器的选择
由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。
这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。
图2外部封装形式图3传感器电路图
5硬件实现及单元电路设计
5.1主控制模块
主控制最系统电路如图4所示。
图4单片主控电路
5.2显示模块电路
显示采用四位数码管显示,当位选打开时,送入相应的段码,则相应的数码管打开,关掉位选,打开另一个位选,送入相应的段码,则数码管打开,而每次打开关掉相应的位选时,时间间隔低于20ms,从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。
显示电路如图5
图5数码管显示
5.3数码管显示驱动电路
三极管8550来驱动4位数码管,不仅简单,而且价格便宜。
图6驱动电路
5.4温度传感器(DS18B20)电路
5.4.1DS18B20基本介绍
DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号处理器处理。
DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。
因此,下图电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。
并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。
图7温度传感器电路引脚图
5.4.2DS18B20控制方法
DS18B20有六条控制命令:
温度转换44H启动DS18B20进行温度转换
读暂存器BEH读暂存器9个字节内容
写暂存器4EH将数据写入暂存器的TH、TL字节
复制暂存器48H把暂存器的TH、TL字节写到E2RAM中
重新调E2RAMB8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节
读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU
5.4.3DS18B20供电方式
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图3.1所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个三极管来完成对总线的上拉。
本设计采用电源供电方式,P2.2口接单线总线为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个上拉电阻和STC89C52的P2.2来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10μs。
采用寄生电源供电方式是VDD和GND端均接地。
由于单线制只有一根线,因此发送接收口必须是三状态的。
主机控制DS18B20完成温度转换必须经过3个步骤:
●初始化。
●ROM操作指令。
●存储器操作指令。
5.5继电器加热控制电路
电路如图8主要是用来给外部加热源加热的。
图8 继电器加热电路
结论
本设计采用51单片机+DS18B20温度传感器+继电器加热+数码管显示+功能按键组成。
DS18B20温度传感器检测水温并将水温信息转换成电信号传送给单片机,单片机将得到的数据进行处理、显示与控制。
上电后数码管显示当前的水温温度,通过按键可设置水温值,当检测到的水温低于设置的水温值时,继电器吸合接通外部加热装置,使水温达到设定水温值。
当水温值超过设定水温值时,继电器断开,停止加热。
温度检测精确到0.1度。
并具有掉电保存功能,数据保存在单片机内部EEPOM中,按键还具有连加、减功能。
本设计结构简单,调试方便,系统反映快速灵活,经实验测试,该温度系统设计方案正确、可行,各项指标稳定、可靠。
参考文献
1曹巧媛主编.单片机原理及应用(第二版).北京:
电子工业出版社,2002
2全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编(2001),北京:
北京理工大学出版社,2003
3何力民编.单片机高级教程.北京:
北京航空大学出版社,2000
4金发庆等编.传感器技术与应用.北京机械工业出版社,2002
5刘坤、宋戈、赵洪波、张宪栋编.51单片机C语言应用开发技术大全,北京:
人民邮电出版社,2008
6谭浩强著.C程序设计.北京:
清华大学出版社,2007;
7王忠飞,胥芳.MCS-51单片机原理及嵌入式系统应用[M].西安:
西安电子科技大学出版社,2007.P268-273
8PeterVanDerLinden著,徐波译.C专家编程,人民邮电出版社,2003
附录1整体电路原理图
附录2部分源程序
#include
#include"eepom52.h"
#defineucharunsignedchar
#defineuintunsignedint
/***********************************
本设计系统是18b20温度报警系统数码管显示,
可设置温度上限高温报警和下限低温报警,报警温
度可精确到0.1度,并具有掉电保存功能,数据保存
在单片机内部EEPOM中,进入设置界面后如果没有键
按下系统会在30秒后自动退出设置界面,人性化的按
键设置,按键还具有连加、减功能。
**********************************/
//数码管段选定义0123456789
ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//断码
//数码管位选定义
ucharcodesmg_we[]={0xef,0xdf,0xbf,0x7f};
uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
ucharsmg_i=3;//显示数码管的个位数
sbitdq=P2^4;//18b20IO口的定义
sbitrelay=P2^5;//继电器IO口定义
sbitbeep=P2^3;//蜂鸣器IO口定义
uchara_a;
uinttemperature;//
bitflag_300ms;
ucharkey_can;//按键值的变量
ucharmenu_1;//菜单设计的变量
uintt_high=300,t_low=100;
bitflag_lj_en;//按键连加使能
bitflag_lj_3_en;//按键连3次连加后使能加的数就越大了
ucharkey_time,flag_value;//用做连加的中间变量
bitkey_500ms;
ucharflag_clock;
ucharzd_break_en,zd_break_value;//自动退出设置界面
/***********************1ms延时函数*****************************/
voiddelay_1ms(uintq)
{
uinti,j;
for(i=0;i for(j=0;j<120;j++); } /***********************小延时函数*****************************/ voiddelay_uint(uintq) { while(q--); } /***********************数码显示函数*****************************/ voiddisplay() { uchari; for(i=0;i { P3=smg_we[i];//位选 P1=dis_smg[i];//段选 delay_1ms (1); P3=0xff;//位选 P1=0xff;//消隐 } } /******************把数据保存到单片机内部eepom中******************/ voidwrite_eepom() { SectorErase(0x2000); byte_write(0x2000,t_high%256); byte_write(0x2001,t_high/256); byte_write(0x2002,t_low%256); byte_write(0x2003,t_low/256); byte_write(0x2055,a_a); } /******************把数据从单片机内部eepom中读出来*****************/ voidread_eepom() { t_high=byte_read(0x2001); t_high<<=8; t_high|=byte_read(0x2000); t_low=byte_read(0x2003); t_low<<=8; t_low|=byte_read(0x2002); a_a=byte_read(0x2055); } /***********************18b20初始化函数*****************************/ voidinit_18b20() { bitq; dq=1;//把总线拿高 delay_uint (1);//15us dq=0;//给复位脉冲 delay_uint(80);//750us dq=1;//把总线拿高等待 delay_uint(10);//110us q=dq;//读取18b20初始化信号 delay_uint(20);//200us dq=1;//把总线拿高释放总线 } /*************写18b20内的数据***************/ voidwrite_18b20(uchardat) { uchari; for(i=0;i<8;i++) {//写数据是低位开始 dq=0;//把总线拿低写时间隙开始 dq=dat&0x01;//向18b20总线写数据了 delay_uint(5);//60us dq=1;//释放总线 dat>>=1; } } /*************读取18b20内的数据***************/ ucharread_18b20() { uchari,value; for(i=0;i<8;i++) { dq=0;//把总线拿低读时间隙开始 value>>=1;//读数据是低位开始 dq=1;//释放总线 if(dq==1)//开始读写数据 value|=0x80; delay_uint(5);//60us读一个时间隙最少要保持60us的时间 } returnvalue;//返回数据 } /*************读取温度的值读出来的是小数***************/ uintread_temp() { uintvalue; ucharlow;//在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序 init_18b20();//初始化18b20 write_18b20(0xcc);//跳过64位ROM write_18b20(0x44);//启动一次温度转换命令 delay_uint(50);//500us init_18b20();//初始化18b20 write_18b20(0xcc);//跳过64位ROM write_18b20(0xbe);//发出读取暂存器命令 EA=0; low=read_18b20();//读温度低字节 value=read_18b20();//读温度高字节 EA=1; value<<=8;//把温度的高位左移8位 value|=low;//把读出的温度低位放到value的低八位中 value*=0.625;//转换到温度值小数 returnvalue;//返回读出的温度带小数 } /*************定时器0初始化程序***************/ voidtime_init() { EA=1;//开总中断 TMOD=0X01;//定时器0、定时器1工作方式1 ET0=1;//开定时器0中断 TR0=1;//允许定时器0定时 } /****************独立按键处理函数************************/ voidkey() { staticucharkey_new=0,key_old=0,key_value=0; if(key_new==0) {//按键松开的时候做松手检测 if((P2&0x0f)==0x0f) key_value++; else key_value=0; if(key_value>=10) { write_eepom(); key_value=0; key_new=1; flag_lj_en=0;//关闭连加使能 flag_lj_3_en=0;//关闭3秒后使能 flag_value=0;//清零 } } else { if((P2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 设计 简易 热水器 控制系统 大学 论文