智能电热水器控制器.docx
《智能电热水器控制器.docx》由会员分享,可在线阅读,更多相关《智能电热水器控制器.docx(31页珍藏版)》请在冰点文库上搜索。
![智能电热水器控制器.docx](https://file1.bingdoc.com/fileroot1/2023-6/11/a733ba92-10b4-482e-b40c-dc23b1f6a38b/a733ba92-10b4-482e-b40c-dc23b1f6a38b1.gif)
智能电热水器控制器
摘要
热水器是一种可供浴室,洗手间及厨房使用的家用电器。
目前市场上热水器主要品种有电热水器、太阳能热水器、燃气热水器。
就中国的具体情况而言,由于太阳能热水器的使用受天气原因的限制,使用范围狭窄;燃气热水器由于以石油、天然气为燃料,而燃料供应量又难以满足人们日益增长的需求,且不利于环境,因此电热水器越来越受到消费者的青睐。
市场上传统的机械式电热水器控制功能不完善,而且精度低、可靠性差,生活质量的提高使得消费者对电热水器要求越来越趋向于智能化和数字化,因此智能家用电热水器出现满足了大众的需求。
它采用智能控制器为控制中心,具有抗干扰能力强,工作可靠稳定,自带flash闪存等特点,完全满足高性能的电热水器的控制要求能。
智能家用电热水器控制器有对温度精确控制,可靠的水位采集电路,防止干烧,时间设定等等功能。
我们考虑到家电业的激烈竞争,节约生产成本,智能家用电热水器控制器的设计主要采用简单的器件:
如51单片机,液晶屏显示12864,ADC0809等配件构成,与C语言软件编程相结合;充分利用内外围功能,以提高产品的性价比,稍加改进,便能以较低成本应用于实际批量生产中。
【关键词】智能控制器、功能、设计
目录
第一章设计方案
1.1设计思想……………………………………………………………………6
1.2实现功能………………………………………………………………………6
第二章硬件设计
2.1智能控制器的核心………………………………………………………7
2.2矩阵式键盘按键功能……………………………………………………9
2.3液晶屏显示部分…………………………………………………………10
2.4A/D转换模块……………………………………………………………10
2.5水温及水位检测电路……………………………………………………11
2.6漏电检测及报警电路……………………………………………………11
2.7加热及继电器失控保护电路………………………………………………11
第三章软件设计
3.1智能控制器子程序设计………………………………………………………12
3.2主程序流程图…………………………………………………………………13
总结…………………………………………………………………………………14
参考文献……………………………………………………………………………14
附录…………………………………………………………………………………15
第一章设计方案
1.1设计思想
智能电热水器控制器主体由51单片机组成。
时间由单片机内部的定时器计数器提供。
由温度传感器ADC08098读取外部温度数据并传输到计算机内部。
由液晶屏12864显示温度、时间,联合控制开关输出想要的数据。
输入由接口芯片和串并转换芯片74LS165从单片机的串口输入。
1.主体部分由STC89C52单片机组成,单片机外接晶振。
作为内部定时器的输入脉冲。
时钟由内部的定时器构成。
2.AD转换由ADC08098实现,这是集AD转换和串行输出一身的芯片,它能将采集到的温度直接转换成串行信号输入到单片机。
3.输出通道使用电子开关配合光电二极管实现对加热器的控制。
4.显示部分分两部分。
一部分是由于显示时间一部分是用于显示温度。
时间和温度显示当前时间和温度,可以通过转换开关实现当前时间和设定时间的转换。
温度也是同理。
显示器由七段数码管组成。
四个用于显示时间,两个用于显示温度。
六个数码管通过一个I/O口扩展芯片8255A与单片机连接。
5.输入设备采用一个I/O接口芯片。
使用扫描的方法实现数据的输入。
输出的并行数据通过一个并行/串行接口芯片实现串口的输入。
6.控制开关,由外部的电子开关直接输入。
硬件上使用I/O引脚直接输入。
在编程上由程序上直接扫描I/O引脚通过引脚电平的变化转入相应的中断子程序,实现相应的功能。
7.输出控制,由电平控制的光电二极管实现。
光电二极管直接接到单片机的输出引脚。
1.2实现功能
设计的智能电热水器将要实现的功能:
1、对温度精确控制.采用高性能的温敏电阻实时采集热水器内水温,将温度信号转变为电压信号后送单片机处理,可用高清晰度的数码管进行实时显示
2、可靠的水位采集电路,实时采集水位供查询时进行显示,当水位过低时给出提示并停止加热,防止干烧。
3、开机方式有立即开机和定时开机两种.24小时内任意设定开机时间.用省时节能的方式准时加热到特定温度,既可免去等待烧水的时间,又避开用电高峰,节约电费.
4、自动检测热水器是否处于正常工作状态,并具有调温、恒温、防干烧、防超高温、防漏电等多项自检功能,使用户在使用过程中安全更有保障。
第二章硬件设计
2.1智能控制器的核心
我们采用了单片机(STC89RC52)为智能控制器的控制核心。
STC89C52RC单片机:
它具有抗干扰能力强,工作可靠稳定,自带flash闪存等特点,完全满足高性能的电热水器的控制要求.同时考虑到家电业的激烈竞争,节约生产成本,我们用尽量简单的器件实现这些功能,并充分利用内外围功能,以提高产品的性价比,稍加改进,便能以较低成本应用于实际批量生产中。
STC89C52RC单片机功能介绍:
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
和atmel的对比,STC89C52RC单片机有:
8K字节程序存储空间;
512字节数据存储空间;
内带4K字节EEPROM存储空间;
可直接使用串口下载;
STC89C52RC引脚功能:
p0口:
p0口是一个8位漏极开路的双向i/o口。
作为输出口,每位能驱动8个ttl逻辑电平。
对p0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,p0口也被作为低8位地址/数据复用。
在这种模式下,p0具有内部上拉电阻。
在flash编程时,p0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
p1口:
p1口是一个具有内部上拉电阻的8位双向i/o口,p1输出缓冲器能驱动4个ttl逻辑电平。
对p1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。
此外,p1.0和p1.2分别作定时器/计数器2的外部计数输入(p1.0/t2)和时器/计数器2的触发输入(p1.1/t2ex),具体如下表所示。
在flash编程和校验时,p1口接收低8位地址字节。
引脚号第二功能
p1.0t2(定时器/计数器t2的外部计数输入),时钟输出
p1.1t2ex(定时器/计数器t2的捕捉/重载触发信号和方向控制)
p1.5mosi(在线系统编程用)
p1.6miso(在线系统编程用)
p1.7sck(在线系统编程用)
p2口:
p2口是一个具有内部上拉电阻的8位双向i/o口,p2输出缓冲器能驱动4个ttl逻辑电平。
对p2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行movx@dptr)时,p2口送出高八位地址。
在这种应用中,p2口使用很强的内部上拉发送1。
在使用8位地址(如movx@ri)访问外部数据存储器时,p2口输出p2锁存器的内容。
在flash编程和校验时,p2口也接收高8位地址字节和一些控制信号。
p3口:
p3口是一个具有内部上拉电阻的8位双向i/o口,p2输出缓冲器能驱动4个ttl逻辑电平。
对p3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。
p3口亦作为stc89c52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,p3口也接收一些控制信号。
端口引脚第二功能
p3.0rxd(串行输入口)
p3.1txd(串行输出口)
p3.2into(外中断0)
p3.3int1(外中断1)
p3.4to(定时/计数器0)
p3.5t1(定时/计数器1)
p3.6wr(外部数据存储器写选通)
p3.7rd(外部数据存储器读选通)
此外,p3口还接收一些用于flash闪存编程和程序校验的控制信号。
rst——复位输入。
当振荡器工作时,rst引脚出现两个机器周期以上高电平将是单片机复位。
ale/prog——当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ale仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ale脉冲。
对flash存储器编程期间,该引脚还用于输入编程脉冲(prog)。
如有必要,可通过对特殊功能寄存器(sfr)区中的8eh单元的d0位置位,可禁止ale操作。
该位置位后,只有一条movx和movc指令才能将ale激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale禁止位无效。
psen——程序储存允许(psen)输出是外部程序存储器的读选通信号,当stc89c52由外部程序存储器取指令(或数据)时,每个机器周期两次psen有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次psen信号。
ea/vpp——外部访问允许,欲使cpu仅访问外部程序存储器(地址为0000h-ffffh),ea端必须保持低电平(接地)。
需注意的是:
如果加密位lb1被编程,复位时内部会锁存ea端状态。
如ea端为高电平(接vcc端),cpu则执行内部程序存储器的指令。
flash存储器编程时,该引脚加上+12v的编程允许电源vpp,当然这必须是该器件是使用12v编程电压vpp。
2.2矩阵式键盘按键功能
为了方便智能热水器控制器功能的选择,我们采用矩阵式键盘,矩阵式键盘的工作原理:
按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。
行线通过上拉电阻接到+5V电源上。
无按键按下时,行线处于高电平的状态,而当有按键按下时,行线电平与此行线相连的列线电平决定。
2.行列扫描法原理:
第一步,使行线为编程的输入线,列线是输出线,拉低所有的列线,判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则所有的行线都为高电平。
第二步,在第一步判断有键按下后,延时10ms消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下一步,否则返回第一步重新判断。
第三步,开始扫描按键位置,采用逐行扫描,每间隔1ms的时间,分别拉低第一列,第二列,第三列,第四列,无论拉低哪一列其他三列都为高电平,读取行值找到按键的位置,分别把行值和列值储存在寄存器里。
第四步,从寄存器中找到行值和列值并把其合并,得到按键值,对此按键值进行编码,按照从第一行第一个一直到第四行第四个逐行进行编码,编码值从“0000”至“1111”,再进行译码,最后显示按键号码。
2.3液晶屏显示
12864液晶
一、概述
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,
内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.
也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
基本特性:
l低电源电压(VDD:
+3.0--+5.5V)
l显示分辨率:
128×64点
l内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)
l内置128个16×8点阵字符
l2MHZ时钟频率
l显示方式:
STN、半透、正显
l驱动方式:
1/32DUTY,1/5BIAS
l视角方向:
6点
l背光方式:
侧部高亮白色LED,功耗仅为普通LED的1/5—1/10
l通讯方式:
串行、并口可选
l内置DC-DC转换电路,无需外加负压
l无需片选信号,简化软件设计
l工作温度:
0℃-+55℃,存储温度:
-20℃-+60℃
模块接口说明
*注释1:
如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。
*注释2:
模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:
如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。
2.2并行接口
管脚号管脚名称电平管脚功能描述
1VSS0V电源地
2VCC3.0+5V电源正
3V0-对比度(亮度)调整
4RS(CS)H/LRS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6E(SCLK)H/L使能信号
7DB0H/L三态数据线
8DB1H/L三态数据线
9DB2H/L三态数据线
10DB3H/L三态数据线
11DB4H/L三态数据线
12DB5H/L三态数据线
13DB6H/L三态数据线
14DB7H/L三态数据线
15PSBH/LH:
8位或4位并口方式,L:
串口方式(见注释1)
16NC-空脚
17/RESETH/L复位端,低电平有效(见注释2)
18VOUT-LCD驱动电压输出端
19AVDD背光源正端(+5V)(见注释3)
20KVSS背光源负端(见注释3)
*注释1:
如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。
*注释2:
模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:
如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。
2.4A/D转换模块
A/D转换器。
ADC0809是8位逐次逼近型A/D转换器。
带8个模拟量输入通道,芯片内带通道地址译码锁存器,输出带三态数据锁存器,启动信号为脉冲启动方式。
C、B、A输入的通道地址在ALE有效时被锁存。
启动信号START启动后开始转换,EOC信号在START的下降沿10μS后才变无效的低电平,这要求查询程序待EOC无效后再开始查询,转换结束后由OE产生信号输出数据。
ADC0809的内部结构,由两大部分组成。
一部分为输入通道,包括8位模拟开关,三条地址线的锁存器和译码器,可以实现8路模拟输入通道的选择。
另一部分为一个8位逐次逼近型ADC0809的引脚排列:
IN0~IN7为8个模拟通道输入端。
START为启动转换信号。
EOC为转换结束信号。
OE为输出允许信号。
CLOCK为外部时钟脉冲输入端,ADC0809的工作频率范围10KHz~1280KHz,当频率为500KHz时,转换速度为128μS。
ALE为地址锁存允许信号。
A、B、C为通道地址线,CBA的8种组合状态000~111对应了8个通道选择。
VREF(+)、VREF(-)为参考电压输入端。
Vcc为+5V电源。
GND为接地。
ADC0809进行模/数转换,而单片机AT89C51则完成将8通道数据转换处理并循环进行显示。
ADC0809的启动信号START由单片机片选线
P2.7与写信号WR的或非产生,当一条向ADC0809写操作指令运行后,ADC0809的START脚产生启动脉冲,开始启动ADC0809进行模/数转换。
ALE与START相连,即按打入的通道地址接通模拟量输入通道,并启动转换。
转换完成后EOC输出高电平。
我们可以利用EOC信号通知单片机(查询法或中断法)读入已转换的数据。
也可以在启动ADC0809转换后经适当的延时,再读入已转换的数据。
允许信号OE由读信号RD与片选线P2.7或非产生,当一条ADC0809的读操作指令运行后,ADC0809的OE脚产生输出允许脉冲,使数据输出。
AT89C51的
ALE脚输出频率为晶振频率的1/6(1MHz),AT89C51的ALE脚与ADC0809的CLK脚相连,提供ADC0809的工作时钟。
按图1接法,ADC0809的片选地址为7FFFH。
输出的数据为:
Dout=Vin*255/5=Vin*51,其中Vin为输入的模拟电压,Dout为输出数据。
2.5水温及水位检测电路
热敏电阻将温度信息转换为电压信息,经A/D转换模块中PTB0输入CPU,查表后得到实时水温。
水位检测为三个并联的不同阻值的电阻,电路的电极电流较小(几个微安),电腐蚀小,适用水电阻变化范围大(几K一100K欧)。
某电阻所在水位未到达,电阻截止;水位到达,电阻导通,组成并联电路。
将不同阻值所分得的电压经PTB1转换后,可判断出水位信息(高、中、低、干烧)。
2.6漏电检测及报警电路
热水器工作环境潮湿,为了保证使用者安全,控制器应具备漏电检测功能。
检测电路,在正常情况下,流过磁环的电流大小相等,方向相反,磁环检测线圈无感应电流信号,漏电检测集成电路输出低电平。
当出现漏电电流时,由了流过磁环的电流不平衡,于是磁环检测线圈感应出漏电信号,经集成电路M54123L放大输出高电平,经三极管倒相后输出至CPU。
CPU接收到漏电信号,则停止加热保温及键盘操作,结束工程程序并发出报警信号,电源指示灯闪烁警示,蜂鸣器连续呜响。
正常情况下,CPU每隔10ms就发出一个漏电保护可靠性自检脉冲,代替普通漏电开关的试验按钮,控制晶体管导通,于是磁环流过一个大于10mA的电流,该电流作为模拟漏电信号被磁环检测,经M54123L放大及三极管倒相后,输出至CPU。
CPU自动判断是否为自检信号以及自检是否合格,有信号则自检合格,继续执行程序;无信号则自检不合格,自动停止加热保温及键盘操作,结束工作程序并发出报警信号,电源指示灯闪烁警示,蜂鸣器连续呜响,从而确保电热水器的安全使用。
在漏电保护及自检不合格情况下,只有关闭电源及排
除故障后,重新接通电源才能工作。
2.7加热及继电器失控保护电路
在电热水器正常工作状态下,二继电器动作触点对加热管的电源能执行双极断开,可有效地保证当停止加热时,加热系统可完全与外电隔离,两只单极继电器同时出现故障的几率是极低的,但在热水器正常寿命期间,单只继电器出现此故障却是极有可能的,而且,此时如不及时处理解决,另一继电器很有可能不久后也跟着产生此类故障而导致真正的危险。
因此.解决问题的关键是必须在有一继电器出现此故障后,系统可以及时检测到,并依靠另一暂时尚可以正常工作的继电器执行系统的安全保护措施采用如图所示的电路,可以有效地检测到两个继电器中任一个或同时两个触点出现粘死、不断开故障时的情况。
第三章软件设计
3.1智能控制器子程序设计
智能电热水器控制器的系统软件由主程序,中断服务程序及若干功能模块子程序组成。
其中主控制器子程序包括:
A/D转换子程序(水位、水温),键盘处理及显示子程序,加
热控制子程序(使用输出比较功能),漏电、干烧保护子程序,TBM模块日历钟子程序,数据保存子程序,延时子程序等组成。
中断主要有定时中断,键盘输入中断,TIM输入捕捉中断,TBM模块中断等。
按键选择子程序主要有按键处理子程序,LCD显示子程序,TBM模块日历钟子程序。
终端有定时中断,按键中断,TBM模块中断等。
1主程序。
主程序要先初始化系统的工作参数,主要是CPU的定时器,COP模块、A/D转换、端口、键中断等的工作模式参数设定。
之后系统主程序循环调用各个功能模块子程序。
对相关事件的处理依靠标志位和判断标志位实现。
3、加热控制子程序。
判断标志位有否预约、加热标志。
之后依流程进行处理。
为防止加热丝频繁启动,加热控制采用回差控制,停止加热后只有实时水温低于目标温度一定温度后,才会再次启动加热丝工作。
为满足不同功率要求,加热方式有快速加热和普通两种,在一般情况下及预约状态下均采用普通方式,以控制用电功率。
4、按键按下,设置标志位,并通过动态扫描方式读取键号,之后按标志位及键号利用输出比较进行编码发送。
接收:
利用输入捕捉功能获得建好,接受成功后设标志位并读取键号供主程序进行处理。
2键盘处理及显示子程序。
此程序主要是判断I/O口的高低电平进行的。
有按键按下进入键中断置标志位,等松开后再进行相应的处理。
在进行设置及查询操作时会闪烁显示设置及查询结果,否则显示实时水温。
5、延时子程序。
所有工作多处用到定时及延时子程序﹕键盘判断消抖延时,闪烁显示时的显示及消隐延时,输入捕捉,日历钟等。
6、安全保护子程序。
在正常情况下,漏电检测电路输出高电平。
一旦出现漏电现象,漏电检测电路输出的电平,引起中断。
并以最快速度使漏电保护电路切断整个电源电路,保证使用者安全。
当温度过高或水位过低时,自动关加热并开启蜂鸣器向主人报警有异常情况发生。
3.2主程序流程图
该控制器的功能实现是通过键盘扫描和温度传感器以及水位传感器(探针式)循环扫描,把信息传递给单片机。
通过单片机中已编的程序来控制外部加热装置和进、出水装置的。
该控制器的所有功能只需要在键盘上操作就可以完成。
首先单片机一直在循环检测温度和水位以及在循环扫描键盘。
循环检测温度和水位就是要适时地把当前的水温和水位反映出来。
键盘扫描主要是便于适时的接受用户的操作信息,从而就可以达到我们控制和设置水温水位的目的。
该控制电路的程序流程图如图17所示:
图17程序流程图
(设计的程序见附录)
总结
经过几天的辛苦,终于完成了我的智能家用电热水器控制器的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀!
在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,