2013年3月30日下午
買來相關的材料。
有水管,彎頭,軟電線,硬電線等。
首先先看看家里的水塔:

水管接在水塔原先預留的透氣孔上,浮球式水位傳感器從此伸入水塔低水位和滿水位位置,固定在一節(jié)水管上。然后把電線引出來,用水管罩著牽引到墻角的洞,進入屋內。用水管罩是防止陽光直射電線容易老化。
墻角的洞原先并沒有預留足夠寬的直徑……只能穿軟線進去試試看了,水管沒辦法再進去了 。

在給水管鉆孔和割槽安裝浮球的時候,手頭上沒有砂輪鋸,想到一個土辦法就是“用密集的點繪成線”
也能代替砂輪鋸切割直線啦~~~雖然不是很好看。



這樣就能固定在水管上了,然后把這只水管扭到水塔里面就行,水塔的排氣口有內牙,我水管的一頭套有外牙。

哎呀,真是一大堆東西堆在這里有得弄的,走線決定走墻角。抽水機的電源線用4mm^2的硬線做,買了一捆100米~~~,不信從5樓到天井不夠長。水位控制線用軟線做。
當初抽水機怎么就沒接地線呢。。。哎不接也算了,也沒什么人靠近它的,有一段上水管是鐵的,如果水有電的時候,能夠傳電到墻壁里,也充當了一點地線作用吧。
由于天色已晚,工程量還是有點的,把材料買好后明天再做,因為明天可能下雨,出去不方便。今晚就順便更改程序。

涉及到房子的大工程,房主當然也興致勃勃地爬上樓頂觀看啦。


看呵,鄰居家家戶戶都裝有水塔,都使用地下水。如果每人當初建挖水井的時候都裝上這個東東,那我也能賺一點了。
2013年3月31日早晨
程序幾乎重新編寫了一遍,很多地方得到優(yōu)化。
做這產品比做比賽作品收獲更多?紤]更周全特別是日后維護,作品只是一時演示,不實際,F在這個監(jiān)控器已經成為產品,各方面都得到優(yōu)化如失控等意外情況發(fā)生時,能夠及時自我解決或給用戶提供另一種補救措施這兩點已經做到。還有低功耗等這都是大賽作品一般考慮不到的。我宗旨是不懂技術的人也能維護!
為了提升程序的穩(wěn)定性,啟動了單片機內的看門狗。
看門狗就是如果程序跑飛了,出現不可預料的情況時,即沒有執(zhí)行喂狗操作。就能夠在65.5ms后馬上自動復位單片機,不讓整套裝置失控 。
另外,利用單片機內的EEPROM,存儲了一些具有記錄性、值得回憶意義的文字和數據,數據內容終身不毀,即使斷電仍保存,除非人為去擦除。
存儲了裝置第一次啟動的時間,累計自動完成抽水的次數,本裝置的來源以及經歷。
下面是EEPROM存儲的內容。初始化狀態(tài)。值得注意的是,AVR單片機的數據存儲模式是小端模式,即有效字節(jié)低位在地址低位。

累計自動完成的抽水次數,這個我特別設計算法,數據類型定為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");//喂狗
}
由于是產品了,所以要更為自動化。
把抽水設計成一個周期任務,如果在抽水過程中,家里突然停電,等到下次來電時能夠自動繼續(xù)抽水,直到抽滿為止。
裝置的電源開關去掉,一上電馬上工作。
關于程序方面,更多可靠性的功能我還會繼續(xù)增加和維護,直到我離開這個房子去其他地方的時候。
目的讓維護更加簡便呵呵。
為了防止裝置硬件性故障,(軟件上是沒問題的了,有看門狗)
在抽水機的控制電路上,設計了另一道保障,能在裝置失控的狀態(tài)下人為強制控制抽水機,即回到原始的手動抽水的辦法 。
結合實際情況,控制器安裝在5樓,抽水機在一樓,需要從一樓到五樓拉兩條線,它們是控制抽水機的關鍵電線。雖然電線有絕緣層,但途徑各個樓梯,為了更安全,我把這兩條線設成零線,只有抽水機工作時才有電。單片機控制繼電器閉合、斷開這兩條線,能夠達到自動控制抽水的目的,同時就算絕緣層破裂也不要緊。
這樣的話,在原來的電閘處,火線就必須時刻接通到抽水機,這就是我原先埋怨沒有接地線的原因。
不過,抽水機和樓梯,仍是樓梯的安全較重要,抽水機在門角,少人去理。當然使用兩個繼電器控制或者在這里兩條電線上套一水管是最安全不過的了。【2013年4月7日13:37:41對此斜體字內容進行更正:無論怎樣接線,始終都會有一條火線經過樓梯,這在不用無線控制下是不可避免的】

右邊的電閘是以前難道是爸爸裝的?由于左邊的電閘的螺絲生銹,我拆開右邊的看看還能不能用,結果看到保險絲的地方,頓時笑了……左邊用銅線接上,右邊用一塊鋁片接上,亂七八糟的,有這樣接的嘛,不過算了反正那個電閘已經不用了。

我只能接在線上了,電閘里的螺絲有一些已經不能扭開,在原來的線上剝開一道口子,捆綁上去。好難捆綁,原來的是多股線,我的是單股4mm2的粗銅線……
這樣左邊的電閘就成了第二道保障了,當裝置失控時,不能自動恢復的時候,拔掉裝置電源,這個電閘就和原來的電閘沒什么區(qū)別了,打上抽水,拉下斷電。裝置正常運行的情況下,電閘是打下來的,不通電的。
2013年3月31日下午
終于把所有東西安裝完了。在測試過程中,因為安裝時候家人在旁邊說話,說著說著我把高低水位的控制線接反了……結果抽水過程鬧出笑話,抽到低水位就停了。
還有抽水機斷電的時候,由于水塔的水多,水面的水波推動浮球,在臨界點的時候有幾率導致抽水機抽抽停停。這個問題必須解決。
2013年3月31日晚上
抽水機在臨界點抽抽停停的問題已經解決,同時我關閉掉了許多LED燈,保留兩盞燈,紅燈亮表示未抽在水,綠燈亮表示正在抽水,任何一盞燈亮都表示裝置正常運行。數碼管的電源也斷開,兩片74HC573芯片也斷電。盡最大可能節(jié)省功耗。由于萬能表的200mA保險絲斷了,只能用20A的量程,測得電流為0.2A。那么功率就大概1W左右。還是可以的。
由于是產品了,所以要更為自動化。
把抽水設計成一個周期任務,如果在抽水過程中,家里突然停電,等到下次來電時能夠自動繼續(xù)抽水,直到抽滿為止。
裝置的電源開關去掉,一上電馬上工作。
關于程序方面,更多可靠性的功能我還會繼續(xù)增加和維護,直到我離開這個房子去其他地方的時候。
目的讓維護更加簡便呵呵。
為了防止裝置硬件性故障,(軟件上是沒問題的了,有看門狗)
在抽水機的控制電路上,設計了另一道保障,能在裝置失控的狀態(tài)下人為強制控制抽水機,即回到原始的手動抽水的辦法 。
結合實際情況,控制器安裝在5樓,抽水機在一樓,需要從一樓到五樓拉兩條線,它們是控制抽水機的關鍵電線。雖然電線有絕緣層,但途徑各個樓梯,為了更安全,我把這兩條線設成零線,只有抽水機工作時才有電。單片機控制繼電器閉合、斷開這兩條線,能夠達到自動控制抽水的目的,同時就算絕緣層破裂也不要緊。
這樣的話,在原來的電閘處,火線就必須時刻接通到抽水機,這就是我原先埋怨沒有接地線的原因。
不過,抽水機和樓梯,仍是樓梯的安全較重要,抽水機在門角,少人去理。當然使用兩個繼電器控制或者在這里兩條電線上套一水管是最安全不過的了。【2013年4月7日13:37:41對此斜體字內容進行更正:無論怎樣接線,始終都會有一條火線經過樓梯,這在不用無線控制下是不可避免的】

右邊的電閘是以前難道是爸爸裝的?由于左邊的電閘的螺絲生銹,我拆開右邊的看看還能不能用,結果看到保險絲的地方,頓時笑了……左邊用銅線接上,右邊用一塊鋁片接上,亂七八糟的,有這樣接的嘛,不過算了反正那個電閘已經不用了。

我只能接在線上了,電閘里的螺絲有一些已經不能扭開,在原來的線上剝開一道口子,捆綁上去。好難捆綁,原來的是多股線,我的是單股4mm2的粗銅線……
這樣左邊的電閘就成了第二道保障了,當裝置失控時,不能自動恢復的時候,拔掉裝置電源,這個電閘就和原來的電閘沒什么區(qū)別了,打上抽水,拉下斷電。裝置正常運行的情況下,電閘是打下來的,不通電的。
2013年3月31日下午
終于把所有東西安裝完了。在測試過程中,因為安裝時候家人在旁邊說話,說著說著我把高低水位的控制線接反了……結果抽水過程鬧出笑話,抽到低水位就停了。
還有抽水機斷電的時候,由于水塔的水多,水面的水波推動浮球,在臨界點的時候有幾率導致抽水機抽抽停停。這個問題必須解決。
2013年3月31日晚上
抽水機在臨界點抽抽停停的問題已經解決,同時我關閉掉了許多LED燈,保留兩盞燈,紅燈亮表示未抽在水,綠燈亮表示正在抽水,任何一盞燈亮都表示裝置正常運行。數碼管的電源也斷開,兩片74HC573芯片也斷電。盡最大可能節(jié)省功耗。由于萬能表的200mA保險絲斷了,只能用20A的量程,測得電流為0.2A。那么功率就大概1W左右。還是可以的。


使用水管套電線,防止老鼠咬。幸虧這個洞還足夠大,當初真是有遠見,鑿得不錯@趕海人生


水塔安裝完后的外表圖
此裝置我還將繼續(xù)升級,往維護方面升級,能夠更快幫助人們,即使是不懂技術的人,也能檢測出哪里出問題
2013年4月6日22:41:30
至今,水塔水質監(jiān)控器已經全天候運行了一周,整體表現良好。期間出現兩次不尋常的情況,每個情況出現后,又都恢復正常,并不是一直錯誤地發(fā)展下去,均不不影響日常用水:
①投入使用后第三天的清晨,媽媽報告說抽水不到1分鐘又停了
②今晚,外婆說剛才自動抽水10分鐘,并且啟動前1個小時已經抽滿過一次水,不可能用得那么快。
觸發(fā)抽水的條件有且只有一個:低水位傳感器的信號線被拉高電平。
可能的原因:
①有可能在布線過程中劃傷信號線,每個傳感器有一條+5V的線和一條信號線,劃傷的話可能有幾率+5V的線和信號線觸碰,導致誤判。
②水中的懸浮物或水流把低水位傳感器的浮球暫時拉低,導致錯誤地觸發(fā)信號。
改進方法:主程序中加一種算法來驗證是否是誤判,對傳感器不能100%信任。
2013年4月7日13:39:09
對它進行了第一次維護。
取出芯片,讀出EEPROM內容,
地址0x20處的數據為0x0F。說明裝置從第一次安裝使用到現在已經完成自動抽水15次。但這個值我覺得太特殊了,今晚抽過一次水后,我有必要再讀一次數據,看是否還是0x0F。
本次維護新增了兩處判斷,即軟件把水位傳感器的信號進行去抖動處理。新增了兩項記錄。
當檢測到電位發(fā)生變化的時候,等待10秒鐘,10秒過后再次檢測,如果電位沒有再次變化,則說明此時的信號是正確的,然后采取相應行動。否則記錄此次出現錯誤信號的事件。
雖然這樣子檢測一般情況下能把錯誤的信號過濾掉,但是還是會存在有一些特殊情況,如傳感器損壞、有異物纏住浮球等,但發(fā)生幾率很低。
在EEPROM里,我設0x10~0x11這兩個空間來記錄低水位傳感器傳出錯誤信號的次數,0x12~0x13為高水位傳感器傳出錯誤信號的次數。
2013年4月13日21:18:49
自從上次維護以來,又過了一個星期,這個星期一點問題都不出,外婆也沒發(fā)現有異常。
現在我調取了EEPROM里的數據,根據自動記錄的數據,至今已經完成自動抽水任務21次,兩個傳感器發(fā)生錯誤信號的次數為0
看來上次更改的算法是起到了很好的作用。
本次維護不做任何改動。
