摘 要: 利用MSC-51系列单片机AT89S52作为控制器,利用DS18B20温度传感器采集实时温度,电极检测实时水位,七段数码管显示实时温度,设计了一种太阳能热水器自动进水控制系统。该系统由水位检测、水位控制、温度检测及显示、使用提醒等组成,该系统运行可靠,具有方便适用、价格低廉、程序易调和维修方便等优点。
关键词: 单片机;检测,提醒;控制
目前小区住宅大多数普及太阳能热水器,但半数用户仍使用人工上水,该类热水器存在诸如水注满时因疏忽未及时关进水阀而造成水资源浪费、空晒上水爆管、进水管在冬季易于破裂、用户在急需使用时太阳能热水器碰巧少水等缺陷[1]。同时,太阳能热水器对于不同的地区使用者所产生的限制也有显著的差别。在我国农村地区,很大一部分没有稳定的自来水供应,用户要通过安装水泵来达到应用太阳能洗浴的目的,操作较为繁琐,而且副水箱多在室外,冬季应用有结冰的危险,不能够做到提前上水,自动上水。而对于我国城市由于水压问题难以将水注入房顶上的储水器。这种情况不仅影响太阳能热水器的正常使用,同时由于储水器中的水量不足,导致水温过高,甚至出现“干烧”的情形[2],严重地影响了热水器的使用寿命。
本文针对当前这两种存在的问题进行了调研。农村用户针对供水不稳情况的解决方法主要为手动解决——手动开启水泵抽取地下水(储水器内的水)上水。因为很多农村存在自来水定时供水(如中午)或者水压过低的情况,无法实现给太阳能直接上水,只有利用水泵将地下水储存起来再抽到太阳能内。若需要手动控制水泵,管路和水泵冬季防冻困难,而且水泵易因频繁启动而导致故障频发。同时,太阳能热水器容易引起太阳能热水器的老化。在大城市中,经常由于用水高峰而出现水压偏低,难以将水注入房顶上的储水器。因此城市用户会采用增加水泵或者采取避开高峰期用水,但这种方法难以缓解太阳能热水器干烧的问题。
本文针对上述情况,设计了基于单片机的自动控制装置,以实现用户太阳能热水器的自动上水。实现了水压24小时全天候监测,选择在高水压的时段自动控制上水,在低水压时,启动增压装置,实现强制上水的功能。同时还利用单片机控制系统具有的智能、节能、保护设备以及延长设备的使用寿命等方面的优势[3-4],增加了系统稳定性和可靠性。
1 系统的硬件组成
1.1 系统设计
本系统采用AT89S52单片机为核心,用4档水位测量法测量水位,根据DS18B20传感器检测的温度变化信号,实现七段数码管动态显示、蜂鸣器报警以及电磁阀开关等操作,从而实现单片机监控温度和水位的目的。其设计思路是:当上水至水箱满时,则蜂鸣器提醒,并停止上水;当水箱未满时,电磁阀开启,实现系统的自动上水控制。其控制系统结构如图1所示。
1.2 温度检测和显示电路设计
本系统的温度数据采集选用DS18B20数字温度传感器,温度显示用4个七段数码管来实现。数字信号由P3.0端口送入单片机中,温度显示由P0.0~P0.7端口传入数码管,并通过P2.0~P2.3端口来选择数码管点亮。其温度检测和显示电路如图2所示。其基本原理是,DS18B20将温度模拟信号转换为数字信号,然后通过DQ端口与单片机P3.0端口进行数据通信,单片机的P0.0~P0.7端口分别与数码管a~g、dp端口相连接,经单片机处理后,由P2.0~P2.3端口依次轮流、循环输出低电平位选信号接通数码管的公共端,实现水温的检测与显示功能。鉴于本系统经济适用的特点,特将循环频率设为50 Hz,这样既保障了系统数字的对应显示,又不会出现闪烁现象,实现动态扫描显示。
1.3 水压及4档水位检测电路设计
正常工作时,传感器检测到入户的水压信号,并将信号传输给控制电路,控制电路对入户水压值和默认用水压初值进行比较,控制自动上水,完成上水功能后,当太阳能热水器的液位开关检测到水箱中已达到环境要求后,控制水管电磁阀关闭。水压传感器位于太阳能水管支路上,实时监测水压的信号,将水压值反馈给单片机电路。在预先设定的时间段内,单片机将每一个时刻传感器反馈的实时水压值pt与阈值p0进行对比。在判断出实时水压足以对太阳能热水器进行供水时(pt>p0),发出指令,打开电磁阀,进行上水。如果在预先设定的时间内,水箱没有上满,即未能够找到时间点满足pt>p1,单片机电路发出指令,开启水泵,强制上水,系统在水箱的水位1/4、2/4、3/4和4/4浸泡一根导线并使之与单片机P1.0~P1.3端口和GND端相连,当水位下降到相应位置时,与GND端相连的P1口由低电平转换为高电平。P1.0~P1.3口各代表1个水位,当P1.0从低电平变成高电平,说明水位超过了水箱容量的1/4,同理,当水位依次到达了2/4、3/4、4/4,均能实现水位的检测,4档水位检测电路如图3所示。
1.4 增压进水及提醒电路设计
一般由于水厂供水问题,入户水压围绕上水允许最小压力通常产生在-15%~10%范围内的波动。在上午、下午及晚上各有一段时间为大家做饭等用水高峰时间,此时,水压值可能低于允许压力。以某天为例,智能增压装置不断检测水压,当在某时段测到水压值超过允许用最小水压或当水箱未满且当前温度高于设置值时,电磁阀开启,使水位上升至水箱容量的上一个1/4处,电磁阀关闭;当温度高于设定值时,电磁阀继续开启,直到水箱水满。上水电路如图4所示。当水箱水满且温度达到人工设定的使用温度时,为方便使用,特设计了使用提醒电路,如图5所示,其采用了压电式蜂鸣器。单片机P2.5口接1 kΩ上拉电阻,9013三极管放大器基极接1 kΩ电阻,发射极接蜂鸣器负极,集电极接地,从而实现功率放大作用,蜂鸣器开启提醒模式。
1.5 用户按键电路设计
用户按键电路是太阳能热水器水位控制系统与用户的接口。用户通过显示来观察水温状态值,再根据观察到的值,通过按键对太阳能热水器进行控制,以满足不同用户对水温的不同要求,用户按键电路如图6所示。其中,S1为温度设定键,S2、S3分别为温度加、减键,S4为移位键。
2 软件设计
系统软件采用C语言编写,通过Proteus软件和Keil软件完成设计,主要由初始化程序、扫描按键程序、按键处理子程序、读取水位和水温信息、调用显示子程序等6个部分组成。系统总体流程图如图7所示。
通过对水位和水温等传感器的设置,使整个控制成为一个负反馈系统,能够实时监测数据,通过检测到的数据对比当前的控制情况,达到自动控制的效果。其中,读取水温的主要代码为:
void wendu_write(unsigned char date)
{
unsigned char i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=date&0x01;
delay(7);
DQ=1;
date>>=1; }
}
Signed int wendu_read(void) {
unsigned char i=0,t=0,pn=0;
for(i=8;i>0;i--)
{
DQ=0;
t>>=1;
DQ=1;
if(DQ==1)
{
t|=0x80;
}
delay(4);
}
return(t);
}
整个程序使用自循环调用,不断地调用重复,起到了循环负反馈的效果。从流程图中也可以看出,全部设计流程能够自适应当前的环境水温水压要求,解决存在的问题。
本系统基于单片机控制模块化电路实现了对太阳能热水器水位的检测和进水控制。对当前太阳能热水器存在的问题,选择了相应的元件,并运用子程序实现了太阳能热水器的智能控制,具有自适应、自协调等功能,同时还能保证水位控制系统具有较高控制精度、抗干扰能力及稳定性。其主要特点是:结构简单、运行可靠、操作维护简便。在系统设计前,先通过Keil软件和Proteus仿真软件进行仿真,待达到了预期的设计效果后,再将程序通过单片机下载程序写入单片机,从而实现系统设计的目标。同时,该控制系统还具有性价比高、温度控制与显示稳定可靠等特点。
参考文献
[1] 丁雷,陈彦,徐平.STC12C2052在太阳能热水器中的应用[J].仪表技术,2010(3):58-59.
[2] 霍志臣,罗振涛.国内外平板太阳能热水器发展概况[J].太阳能,2006(6):11-12.
[3] 孙育才.MCS-51系列单片微型计算机及其应用(第4版)[M].南京:东南大学出版社,1997.
[4] 张振荣,晋明武,王投平.MCS-51单片机原理及实用技术[M].北京:人民邮电出版社,2000.
[5] Fu Yonghong, Fan Fengming, Fu Yuqing. Influence factors and resolution about power generation in China[J]. Journal of ShenYang Institute of Engineering(Nature Science),2007,3(3):06-210.
[6] 张涛,王金岗.单片机原理与接口技术[M].北京:冶金工业出版社,2007.
[7] 戴佳,戴卫恒.51单片机C语言应用程序设计实例精讲[M].北京:电子工业出版社,2009.
[8] 宫亚梅.基于Proteus和Keil的单片机课程设计[J].济南职业学院学报,2008(5):1-3.
[9] 王昊,李昕.集成运放应用电路设计360例[M].北京: 电子工业出版社,2007.
[10] 殷为民.太阳能水温水位仪[J].家用电子,2009,5(1):37-38.
[11] 李念强,等.单片机原理及应用[M].北京:机械工业出版社,2007.
[12] 侯大勇,郭利.农村太阳能热水器自动供水方案分析[J].中国住宅设施,2010(2):45.
[13] 张月红,徐国英,张小松.太阳能与空气复合源热泵热水系统多模式运行实验特性[J].化工学报,2010(2):484-490.