一、需求与设计思想
1、应用需求
(1)确保学生公寓每天分两时段分别供应定量开水、热水。中午12:00~14:00,供开水10升;晚21:00~23:00供75℃热水20升。
(2)在不停水、不停电情况下,全自动进水、烧水。热水未放完时不进水,缺水时防干烧。全自动无人值守。
(3)在长期使用下要安全、尽量节能,节省设备投资及使用费用。
2.需求分析
从节能低碳,使用费用低廉考虑,首选太阳能热水器。但太阳能热水器不能烧开水,且在冬季严寒或阴雨天气无热水供应,或只有微热(30℃以下)水供应。要实现无人值守烧开水,只有用电开水器,用微控制器MCU控制分时段定温烧水。但要实实在在地用电,最好能两者配合使用,才可尽量节能,节省设备投资及使用费用。
3.系统设计
采用太阳能热水器与电热水器联合供热水,统一控制。在房顶安装太阳能热水器,室内安装全自动电热水器。
太阳能热水器的出水管分成两路,一路可直接放出热水,一路接全自动电热水器的进水管。全自动电热水器可自制,因为购买较贵,又没有和太阳能的联控功能。
设计制作一块MCU控制板,使之具有控制自动进水,定时段、定温烧水和实时温度显示功能。并统一控制太阳能热水器的自动上水。
控制思想是:MCU控制板全天24小时通电工作(自身微功耗),以24小时为周期进行循环控制。在MCU控制板的控制下,若太阳能热水器中无水,则打开上水电磁阀上水,水满自停;太阳能热水器中的热水每天按设定的两定时段打开电磁阀分别进入电热水器中,水满自停;先测温,如是在烧开水时段,温度不够,就加热至l00℃,然后进入保温状态,等待使用;如是烧热水时段,温度够75℃,不加热,处保温状态,等待使用;若不够75℃,则加热至75℃,再处保温状态,等待使用。当然这时也可由太阳能热水器直接放出热水。当供水时段过去,MCU控制板关闭电热水器的加热和保温及进水,处于待机值守状态,在明天同一时段重复上述工作。这样,既保证了公寓的热水供应,且实现了无人值守,又尽量节约了电能,节省了费用。
全自动电热水器控制盒采用透明的塑料盒,经长时间使用,性能稳定可靠。
二、选材与安装
1.太阳能热水器
选用普通不带电加热的太阳能热水器。要实现自动进水,关键是要为太阳能安装水位检测开关(或叫水位传感器)。为了提高可靠性,选用两只侧装式磁性浮球不锈钢开关,分别检测上下水位。由于太阳能热水器水箱是封闭式的,不便在内部安装水位开关。
思虑再三,便利用连通器原理,在外部安装。在太阳能热水器进水口处制作安装了一个连通器,水位开关安装在连通器内。要保证连通器溢水口与太阳能溢水口平齐,这样,连通器中的水位就与太阳能中的水位一致了,如下图所示。

2.电热水器水箱制作
为保温考虑。采用双层不锈钢桶制作电热水器水箱。大桶套小桶(小桶20升),两桶之间填充隔热材料,也可采用成品保温桶。内桶安装结构如下图所示。在内桶壁上开孔安装两只侧装式磁性浮球不锈钢开关,用来检测上下水位(耐高温I35℃)。下部安装一只1500W发热管,在发热管上方3cm处安装出水龙头。

注意要保证水箱内有一定的剩水放不出,发热管始终浸在剩水内,从硬件上防止干烧。
在上部安装受电磁阀控制的进水龙头,并开孔插上密封防水铝制温度探管,探管底部封装数字温度集成块DS18820,并引出3根接线。在外桶相应处开孔,以便安装接线。安装时,注意密封防漏,可涂上耐高温硅橡胶密封。
太阳能热水器的安装法与普通装法类似,区别是将进水阀改为常闭AC220V电磁阀,出水口接一个分支管通过另一只常闭220V电磁阀接电热水器水箱进水口。
三、控制器硬件的制作
要实现太阳能热水器与电热水器联控,控制器是关键。控制器的安全性与可靠性是设计制作重点。经过2年的反复试用改进,现已改进到第三版,安全性及可靠性大为提高,并实现了全红外遥控控制,实现了市售高档电热水器的主要控制功能。编的程序也许是幼稚可笑的,但的确实现了预想功能。
选用流行的STC89C52RC单片机作主控芯片。它兼容51指令,价廉且性能稳定,速度快(12T达48M)、抗干扰能力强,内部还集成有512字节的EEPROM,便于保存用户设置,作控制够用了。
为简化电路,LED显示部分采用端口与三极管直接驱动,不用锁存器及译码器。LED时间显示与温度显示各采用四位一体数码管一片,计8个数码管由PO、P2的16个I/O口驱动,PO口控制数码管字段码,P2口控制数码管选通,采用动态扫描方式来显示时间与温度。Pl、P3口分别用于驱动、控制输出和水位检测,端口分配如下表。

电路有STC89C52RC部分、实时时钟DS1302部分、数字温度DS18820部分、LED显示部分、电源部分、输入检测部分及输出控制部分组成。输出控制部分如电磁阀控制电路(见上图)和发热管控制电路(见下图)。图中电磁阀控制电路比发热管控制电路图多了一只电容C6及一只电阻R7,主要是为了减少电磁阀线圈开关时对电源产生的干扰。
印制板可由显示板、功率输出板及主控板组成。各板之间由排线及接插件相连。因电路现在还处在试验改进阶段,就找了几块万用板焊接零件。焊好了零件,就进入了最关键的编程阶段了。

四、控制器编程
编程环境为KeiluVision3,烧写器是STC_ISP_V480。exe。
总流程图见下图,下面就编程控制中的几个关键问题的处理方法做一些介绍。

1.两只水位检测开关如何编程实现自动进水、防止开水冷水混合
侧装式磁性浮球不锈钢开关如“热水桶安装示意图”中安装时,有两种状态:水位来到时浮球落下,浮球中磁铁下落,处于上部的磁性开处关断开状态,即“0”态;水位到时浮球浮起,磁铁上升磁性开关处接通状态,即“l”态。在水位改变时,两只开关有3种状态,由于上下安装关系,上水位开关为“l”,下水位开关为“0”的状态不会出现。
STC89C52RC的P14是电热水器进水控制端口。程序要检测这3种状态并据P14口电平的高低.再通过光耦控制电磁阀的导通与关闭,从而控制进水。将热水桶上的两只水位开关引线一端接地,另一端分别接STC89C52RCP30、P31口,则按进水要求,开关状态与P14口电平高低对应关系如下表所示。

P14口上水时电平变化情况为:开始进水(0)→进水过程(0)→进水结束(1);放水时电平变化情况为:放水开始(1)→放水过程(1)→水放尽(0)。即P14口在上水过程中保持为O不变,保证了持续上水至水满;放水时保持为1,避免放水过程中进水,造成开水冷水的混合无法饮用。太阳能进水控制与此类似。
在主程序的while(l)循环查询部分相应的C程序段为:

2.两时段定温烧水控制的编程实现先介绍相关变量与程序。
定义全局变量数组用于:Signedchar hournun_XS[8];//存放两次烧水时分上下限。hourmin_XS[0]放第一时段开始小时数,hourmin_XS[1]放第一时段开始分钟数,hourmin_XS[2]放第一时段结束小时数,hourmin_XS[3]放第一时段结束分钟数……uint hourmin_XSH2[4];存放两次的时分上下限折算成分后的值。
在主程序maln初始化时,从EEP-ROM读8字节用户设置,放人数组hounnin_XS[8],再折算成分钟放人数组XSH2[4]。

另定义全局变量uchar hour.ucharminute等,用于存放周期性读取DS1302所得实时小时与分钟数。在mam中定义变量uint numl,dqsf,numl用于存放从DS18820读出的实时温度数,dqsf用于存放实时小时与分钟数折算成的分钟数,即每天从零时算起第多少分钟。
根据DS1302的特点,hour高四位是小时的十位,低四位是小时的个位。
minute高四位是分钟的十位,,低四位是分钟的个位。所以定义中间变量tmp-min,tmphour将其换算成十进制数,再折算成分,程序段为:

当前时分合成分
在主程序的while(l)循环查询部分相应的实现两时段定温烧水控制的c程序段为:


中读取温度的小数位。时刻换算成分可使逻辑运算变得简单。
3.如何实现软件防干烧
软件防干烧,即在进水条件满足的条件下,水箱缺水,若由于停水或其他原因导致不能进水,这时应该停止加热。考虑到进水的条件为:
P3_I&&P3_0=1可将其取反作为加热的条件之一,即加入!(P3_1&&P3_0),所以加上防干烧程序后实现两时段定温烧水控制的程序段为:

这样,在水箱缺水情况下就不会加热,实现了软件防千烧。一旦开始进水使下水位开关闭合,P3_I&&P3_0=0,在时间、温度条件满足情况下,会立即加热烧水。