趙明冬,宋子博,王浩哲
(鄭州科技學院 電子與電氣工程學院,河南 鄭州 450064)
針對魚類養殖環境進行改善的設備有很多,比如最常用的抽水過濾器、加熱器、增氧泵、投食器。 但是,它們大多相互獨立,如果僅僅把多個單獨的設備組成一套多功能的魚缸控制系統,需要投入的費用較大,同時多個單一器件機械化的組裝之后也存在一定的資源浪費[1]。 市場上也有一些成套的解決方案,但是總體的自動化程度不夠,滿足不了一些特定環境的需求。
本系統主要針對以上問題,從功能集成、自動化、性價比方面進行設計。 該系統是將水循環供氧、自動水溫控制、自動投食、水位報警等功能集成于一體的系統,對養護工作中的供氧、投食等綜合自動化及其技術進行研究探索,這對整個水族行業的自動智能化發展有較大的意義和價值。
由于市場的發展以及更多人對觀賞魚缸的青睞,智能魚缸控制系統還有很大的發展潛力。 現有的產品大多不完善,處于萌發階段。 因此,本設計結合行業內產品的優點,以改善不足為出發點,自主設計實現了一套簡單實用、性價比高的智能魚缸系統。 系統具有水循環過濾、溫度控制、定時投食、水位報警、狀態實時顯示這些功能,還具有繼續擴展功能的潛力。
本系統以STC89C52 芯片單片機作為控制核心,完成智能魚缸控制系統的設計與制作,系統框圖如圖1所示,包含了主控模塊、水位采集模塊、溫度采集模塊、時鐘模塊、按鍵模塊、顯示模塊、投食模塊、水循環、加熱模塊、報警模塊,能夠完成魚缸的溫度檢測、水位檢測,超過限定值時進行報警;具有水循環充氧、定時定量投放餌料等功能。

圖1 智能魚缸控制系統
(1)主控模塊設計。 主控模塊主要包括單片機、晶振電路和復位電路。 此外,在實際電路中加上了電源開關電路和上拉電阻電路。 單片機的引腳外接11.0592 晶振,晶振兩端再通過22PF 到30PF 左右的瓷片電容接低電平即為晶振電路。 單片機RST 復位引腳通過復位電路實現單片機復位功能。 就像計算器的清零按鈕的作用一樣,以便回到原始狀態,重新進行計算。 復位電路要實現的是,系統處于正常運行狀態下使RST 引腳維持兩個機器周期以上高電平,這樣單片機便可以完成復位操作。
(2) 溫度采集模塊設計。 溫度采集模塊采用DS18B20 溫度傳感器與主控模塊進行通信構成的溫度采集模塊電路芯片DSl8B20 的引腳即DQ 數據口與單片的端口連接,單片機通過單總線協議與DS18B20 進行通信[2]。 使用外部5 V 電源供電,另一個引腳為GND 口與電源負極相連接,引腳3 即VCC 口與5 V 電源正極相連接。
在實際硬件電路構建時,DS18B20 為晶體管大小的三引腳芯片,在測量水溫時,還使用膠水進行了防水設計,使溫度傳感器被包圍,不至于接觸水。
(3)水位采集模塊設計。 水位采集模塊沒有使用集成芯片模塊,電路的設計依據簡單的電路回路原理,以魚缸中的水為電路開關,實現電路的導通和斷開。
水位檢測模塊電路。 魚缸內部高度為14.7 cm,取其高的某一點或者幾個點將其作為檢測點進行檢測,達到相應高度時,傳感器線便輸入相應高低兩種電平的信號,通過晶體管轉換后供主控模塊檢測。 幾個接口分別對應幾條電路,其中一條為系統高電平,其他4條分別串聯一個電阻后連接S9014 型號NPN 型晶體管的基極,晶體管發射極接地,集電極接一個上拉電阻。從集電極分別接出一條數據線與單片機的4 個I/O 口連接。 把水位傳感器豎直貼在魚缸外圍,高電平線通過水先與最低的1 個監測點導通,晶體管同時被導通。集電極和發射極之間電阻瞬間由高阻變為低阻,與單片機相連的數據線由高電平降為低電平,此時單片機對應I/O 口被傳入一個低電平供單片機檢測。 在水逐漸達到檢測點的過程中,另外的檢測點依次與高電平導通,原理同第1 個檢測點。 單片機通過檢測4 個數據線電平的高低邏輯,判斷水位處于哪個區間。
(4)時鐘模塊設計。 時鐘模塊使用DS1302 芯片,它體型較小,較多地應用于小型的嵌入式系統,比如電子鐘、電話、傳真等產品領域[3]。 它具有很好的實時性,在通信時可以實時更新時間,具有很低的功耗,用于本設計非常合適。
該時鐘電路工作穩定,主要用于智能魚缸控制系統的系統時間,作為魚缸控制系統各種邏輯操作的對比,以實現定時水循環過濾供氧、定時投食等固定時間的控制。
(5)按鍵模塊設計。 按鍵以各種形式存在于生活中幾乎所有的電子設備上,它的功用就是對系統做出一些改變,改變系統的進程從而達到人們想要的功能。
按鍵部分采用2×4 的矩陣,其中包括時間的設定、時間的改變、投食時間的設定和改變、水溫的控制檢測、水位的檢測,還包括水循環的時間設定。 只使用4個端口控制8 個按鍵。
(6)顯示模塊設計。 LCD12864 是工業字符型液晶顯示器,它的主控芯片是STC89C52 或者其他兼容芯片,能夠同時在兩行顯示32 個字符數據,是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊[4]。 它的點陣顯示由若干個5×7 或者5×11 的點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此,它不能很好地顯示圖形,但是用在小型監控設備的數據、狀態顯示正好合適。
液晶顯示模塊用于顯示各種信息,該設計中需要用到一些英文字母、數字、符號顯示提示信息以及一些實時數據信息,LCD12864 與單片機連接作為顯示模塊剛好合適。
(7)投食模塊設計。 魚缸自動喂食裝置簡單明了,非常方便操作,下面有旋鈕可直接安裝。 上部分投食倉透明,便于觀察食物剩余數量,其容量為70 mL,單次投食為0.2 g,每次投食的時間可單獨設定,最長投食間隔周期為3 天,適合粉末狀魚糧和直徑小于1 mm 的顆粒狀魚糧。
(8)水循環、加熱模塊設計。 水循環電路和加熱電路除去負載及負載電壓不同,其他電路相同。 單片機的P2.2 和P2.3 口分別連接ULN2003 的6B 和7B,功率放大、邏輯取反的信號從6C 和7C 出來,當輸出信號為高電頻時才將繼電器導通,之后線圈吸合使長開端閉合,使得水循環過濾供氧裝置或加熱裝置開始運轉或發熱。
(9)報警模塊設計。 單片機通過I/O 口串聯一個1 k 的電阻連接晶體管的基極,系統高電平連接有源蜂鳴器的正極,蜂鳴器負極連接晶體管的發射機,晶體管發射極連接系統低電平。 當基極為低電平時,晶體管導通,此時有源蜂鳴器相當于串聯一個較小的電阻,蜂鳴器兩端相當于接通系統高電平的電壓后開始報警。
該系統軟件使用C51 進行編程,采用Keil,Proteus以及Stc-isp 3 個軟件作為開發環境進行開發。 其中Keil 用來編程,結合Proteus 進行仿真調試,最后使用Stc-isp 下載到STC89C51 單片機中[5]。
主程序流程圖如圖2 所示,程序開始后先調用初始化子程序,接著進入一個無限循環程序塊,進行魚缸內各種環境參數的檢測、顯示以及一些邏輯判斷,主要由時間采集程序、溫度采集程序、水位采集程序、顯示程序、定時水循環程序、定時投食程序、溫度控制程序、水位報警程序等構成。 按照模塊化設計原則,把系統功能分為多個獨立的子程序,這樣的設計可以更好地理清程序設計的思路,也有利于程序的編寫和調試。

圖2 主程序流程圖
定時自動喂食:通過DS1302 來記錄時間,當時間到達用戶所設定的時間后,例如:4 h 投喂一次,到達4 h 時,控制投食器,進行投食,并判斷投食量,進行不斷投食,直至達到投食標準,投食結束,等待下次投食。
監測水溫實時控制:通過DS18B20 來不斷監測水中溫度,并在LCD12864 上顯示,若當前溫度低于設定值,開始對加熱棒進行控制,間斷加熱,并通過PID 算法不斷掃描,使溫度到達額定溫度后停止。
監測水位穩定對應位置:通過電容式傳感器對水位進行測量,當返回值低于設定水位時,蜂鳴器進行報警并開啟水泵,向魚缸內進行注水,直至水位傳感器監測到達額定水位后停止注水,并在LCD12864 中實時顯示水位高低。
自動水循環增氧:通過用戶設定時間,在DS1302進行判斷是否到達指定時間,并實時顯示當前時間,到達指定時間后,開啟水循環與增氧,為魚類提供一個良好的生活環境。
掉電保護:將監測到的數據在AT24C02 中進行存入和取出,遭遇突然停電時,保存當前數據,并展開實時工作,不會因突然斷電而導致數據的丟失,并單獨為DS1302 進行供電,保證時鐘芯片一直工作,確保時間的準確性[6]。
本系統是一體化、智能化、自動化的智能魚缸,針對家庭觀賞魚缸各方面的需求,為長期出門在外但是熱愛養魚的人群提供一個良好的飼養容器,打消了人們養殖魚類最后一絲顧慮,給魚類提供了一個穩定舒適的生活環境。