2013年3月30日下午
买来相关的材料。
有水管,弯头,软电线,硬电线等。
首先先看看家里的水塔:

水管接在水塔原先预留的透气孔上,浮球式水位传感器从此伸入水塔低水位和满水位位置,固定在一节水管上。然后把电线引出来,用水管罩着牵引到墙角的洞,进入屋内。用水管罩是防止阳光直射电线容易老化。
墙角的洞原先并没有预留足够宽的直径……只能穿软线进去试试看了,水管没办法再进去了 。

在给水管钻孔和割槽安装浮球的时候,手头上没有砂轮锯,想到一个土办法就是“用密集的点绘成线”
也能代替砂轮锯切割直线啦~~~虽然不是很好看。



这样就能固定在水管上了,然后把这只水管扭到水塔里面就行,水塔的排气口有内牙,我水管的一头套有外牙。

哎呀,真是一大堆东西堆在这里有得弄的,走线决定走墙角。抽水机的电源线用4mm^2的硬线做,买了一捆100米~~~,不信从5楼到天井不够长。水位控制线用软线做。
当初抽水机怎么就没接地线呢。。。哎不接也算了,也没什么人靠近它的,有一段上水管是铁的,如果水有电的时候,能够传电到墙壁里,也充当了一点地线作用吧。
由于天色已晚,工程量还是有点的,把材料买好后明天再做,因为明天可能下雨,出去不方便。今晚就顺便更改程序。

涉及到房子的大工程,房主当然也兴致勃勃地爬上楼顶观看啦。


看呵,邻居家家户户都装有水塔,都使用地下水。如果每人当初建挖水井的时候都装上这个东东,那我也能赚一点了。
2013年3月31日早晨
程序几乎重新编写了一遍,很多地方得到优化。
做这产品比做比赛作品收获更多。考虑更周全特别是日后维护,作品只是一时演示,不实际。现在这个监控器已经成为产品,各方面都得到优化如失控等意外情况发生时,能够及时自我解决或给用户提供另一种补救措施这两点已经做到。还有低功耗等这都是大赛作品一般考虑不到的。我宗旨是不懂技术的人也能维护!
为了提升程序的稳定性,启动了单片机内的看门狗。
看门狗就是如果程序跑飞了,出现不可预料的情况时,即没有执行喂狗操作。就能够在65.5ms后马上自动复位单片机,不让整套装置失控 。
另外,利用单片机内的EEPROM,存储了一些具有记录性、值得回忆意义的文字和数据,数据内容终身不毁,即使断电仍保存,除非人为去擦除。
存储了装置第一次启动的时间,累计自动完成抽水的次数,本装置的来源以及经历。
下面是EEPROM存储的内容。初始化状态。值得注意的是,AVR单片机的数据存储模式是小端模式,即有效字节低位在地址低位。

累计自动完成的抽水次数,这个我特别设计算法,数据类型定为unsigned long int 哈哈~~~范围够大的吧,还是unsigned的。但是EEPROM的总线宽度只有8位。这样就回归到最底层的设计啦,自己设计函数把数值存进EEPROM,读写函数如下:
unsigned long int time=0;
for (i=0;i<4;i++)//读数据
{
time<<=8;
while(EECR&(1<<EEWE));
EEAR=0x23-i;//内置EEPROM的0x20地址是记录自动完成抽水的次数
EECR|=1<<EERE;//进行读操作
time|=EEDR;
asm("WDR");//喂狗
}
time++;
for (i=0;i<4;i++)//写数据
{
while(EECR&(1<<EEWE));
EEAR=0x20+i;
EEDR=time;
EECR|=1<<EEMWE;//准备写操作
EECR|=1<<EEWE;//写操作
time>>=8;
asm("WDR");//喂狗
}
由于是产品了,所以要更为自动化。
把抽水设计成一个周期任务,如果在抽水过程中,家里突然停电,等到下次来电时能够自动继续抽水,直到抽满为止。
装置的电源开关去掉,一上电马上工作。
关于程序方面,更多可靠性的功能我还会继续增加和维护,直到我离开这个房子去其他地方的时候。
目的让维护更加简便呵呵。
为了防止装置硬件性故障,(软件上是没问题的了,有看门狗)
在抽水机的控制电路上,设计了另一道保障,能在装置失控的状态下人为强制控制抽水机,即回到原始的手动抽水的办法 。
结合实际情况,控制器安装在5楼,抽水机在一楼,需要从一楼到五楼拉两条线,它们是控制抽水机的关键电线。虽然电线有绝缘层,但途径各个楼梯,为了更安全,我把这两条线设成零线,只有抽水机工作时才有电。单片机控制继电器闭合、断开这两条线,能够达到自动控制抽水的目的,同时就算绝缘层破裂也不要紧。
这样的话,在原来的电闸处,火线就必须时刻接通到抽水机,这就是我原先埋怨没有接地线的原因。
不过,抽水机和楼梯,仍是楼梯的安全较重要,抽水机在门角,少人去理。当然使用两个继电器控制或者在这里两条电线上套一水管是最安全不过的了。【2013年4月7日13:37:41对此斜体字内容进行更正:无论怎样接线,始终都会有一条火线经过楼梯,这在不用无线控制下是不可避免的】

右边的电闸是以前难道是爸爸装的?由于左边的电闸的螺丝生锈,我拆开右边的看看还能不能用,结果看到保险丝的地方,顿时笑了……左边用铜线接上,右边用一块铝片接上,乱七八糟的,有这样接的嘛,不过算了反正那个电闸已经不用了。

我只能接在线上了,电闸里的螺丝有一些已经不能扭开,在原来的线上剥开一道口子,捆绑上去。好难捆绑,原来的是多股线,我的是单股4mm2的粗铜线……
这样左边的电闸就成了第二道保障了,当装置失控时,不能自动恢复的时候,拔掉装置电源,这个电闸就和原来的电闸没什么区别了,打上抽水,拉下断电。装置正常运行的情况下,电闸是打下来的,不通电的。
2013年3月31日下午
终于把所有东西安装完了。在测试过程中,因为安装时候家人在旁边说话,说着说着我把高低水位的控制线接反了……结果抽水过程闹出笑话,抽到低水位就停了。
还有抽水机断电的时候,由于水塔的水多,水面的水波推动浮球,在临界点的时候有几率导致抽水机抽抽停停。这个问题必须解决。
2013年3月31日晚上
抽水机在临界点抽抽停停的问题已经解决,同时我关闭掉了许多LED灯,保留两盏灯,红灯亮表示未抽在水,绿灯亮表示正在抽水,任何一盏灯亮都表示装置正常运行。数码管的电源也断开,两片74HC573芯片也断电。尽最大可能节省功耗。由于万能表的200mA保险丝断了,只能用20A的量程,测得电流为0.2A。那么功率就大概1W左右。还是可以的。
由于是产品了,所以要更为自动化。
把抽水设计成一个周期任务,如果在抽水过程中,家里突然停电,等到下次来电时能够自动继续抽水,直到抽满为止。
装置的电源开关去掉,一上电马上工作。
关于程序方面,更多可靠性的功能我还会继续增加和维护,直到我离开这个房子去其他地方的时候。
目的让维护更加简便呵呵。
为了防止装置硬件性故障,(软件上是没问题的了,有看门狗)
在抽水机的控制电路上,设计了另一道保障,能在装置失控的状态下人为强制控制抽水机,即回到原始的手动抽水的办法 。
结合实际情况,控制器安装在5楼,抽水机在一楼,需要从一楼到五楼拉两条线,它们是控制抽水机的关键电线。虽然电线有绝缘层,但途径各个楼梯,为了更安全,我把这两条线设成零线,只有抽水机工作时才有电。单片机控制继电器闭合、断开这两条线,能够达到自动控制抽水的目的,同时就算绝缘层破裂也不要紧。
这样的话,在原来的电闸处,火线就必须时刻接通到抽水机,这就是我原先埋怨没有接地线的原因。
不过,抽水机和楼梯,仍是楼梯的安全较重要,抽水机在门角,少人去理。当然使用两个继电器控制或者在这里两条电线上套一水管是最安全不过的了。【2013年4月7日13:37:41对此斜体字内容进行更正:无论怎样接线,始终都会有一条火线经过楼梯,这在不用无线控制下是不可避免的】

右边的电闸是以前难道是爸爸装的?由于左边的电闸的螺丝生锈,我拆开右边的看看还能不能用,结果看到保险丝的地方,顿时笑了……左边用铜线接上,右边用一块铝片接上,乱七八糟的,有这样接的嘛,不过算了反正那个电闸已经不用了。

我只能接在线上了,电闸里的螺丝有一些已经不能扭开,在原来的线上剥开一道口子,捆绑上去。好难捆绑,原来的是多股线,我的是单股4mm2的粗铜线……
这样左边的电闸就成了第二道保障了,当装置失控时,不能自动恢复的时候,拔掉装置电源,这个电闸就和原来的电闸没什么区别了,打上抽水,拉下断电。装置正常运行的情况下,电闸是打下来的,不通电的。
2013年3月31日下午
终于把所有东西安装完了。在测试过程中,因为安装时候家人在旁边说话,说着说着我把高低水位的控制线接反了……结果抽水过程闹出笑话,抽到低水位就停了。
还有抽水机断电的时候,由于水塔的水多,水面的水波推动浮球,在临界点的时候有几率导致抽水机抽抽停停。这个问题必须解决。
2013年3月31日晚上
抽水机在临界点抽抽停停的问题已经解决,同时我关闭掉了许多LED灯,保留两盏灯,红灯亮表示未抽在水,绿灯亮表示正在抽水,任何一盏灯亮都表示装置正常运行。数码管的电源也断开,两片74HC573芯片也断电。尽最大可能节省功耗。由于万能表的200mA保险丝断了,只能用20A的量程,测得电流为0.2A。那么功率就大概1W左右。还是可以的。


使用水管套电线,防止老鼠咬。幸亏这个洞还足够大,当初真是有远见,凿得不错@赶海人生


水塔安装完后的外表图
此装置我还将继续升级,往维护方面升级,能够更快帮助人们,即使是不懂技术的人,也能检测出哪里出问题
2013年4月6日22:41:30
至今,水塔水质监控器已经全天候运行了一周,整体表现良好。期间出现两次不寻常的情况,每个情况出现后,又都恢复正常,并不是一直错误地发展下去,均不不影响日常用水:
①投入使用后第三天的清晨,妈妈报告说抽水不到1分钟又停了
②今晚,外婆说刚才自动抽水10分钟,并且启动前1个小时已经抽满过一次水,不可能用得那么快。
触发抽水的条件有且只有一个:低水位传感器的信号线被拉高电平。
可能的原因:
①有可能在布线过程中划伤信号线,每个传感器有一条+5V的线和一条信号线,划伤的话可能有几率+5V的线和信号线触碰,导致误判。
②水中的悬浮物或水流把低水位传感器的浮球暂时拉低,导致错误地触发信号。
改进方法:主程序中加一种算法来验证是否是误判,对传感器不能100%信任。
2013年4月7日13:39:09
对它进行了第一次维护。
取出芯片,读出EEPROM内容,
地址0x20处的数据为0x0F。说明装置从第一次安装使用到现在已经完成自动抽水15次。但这个值我觉得太特殊了,今晚抽过一次水后,我有必要再读一次数据,看是否还是0x0F。
本次维护新增了两处判断,即软件把水位传感器的信号进行去抖动处理。新增了两项记录。
当检测到电位发生变化的时候,等待10秒钟,10秒过后再次检测,如果电位没有再次变化,则说明此时的信号是正确的,然后采取相应行动。否则记录此次出现错误信号的事件。
虽然这样子检测一般情况下能把错误的信号过滤掉,但是还是会存在有一些特殊情况,如传感器损坏、有异物缠住浮球等,但发生几率很低。
在EEPROM里,我设0x10~0x11这两个空间来记录低水位传感器传出错误信号的次数,0x12~0x13为高水位传感器传出错误信号的次数。
2013年4月13日21:18:49
自从上次维护以来,又过了一个星期,这个星期一点问题都不出,外婆也没发现有异常。
现在我调取了EEPROM里的数据,根据自动记录的数据,至今已经完成自动抽水任务21次,两个传感器发生错误信号的次数为0
看来上次更改的算法是起到了很好的作用。
本次维护不做任何改动。
