殷佳琪
(蘭州資源環(huán)境職業(yè)技術學院,甘肅 蘭州730000)
隨著人們生活水平居住環(huán)境的提高和改善,養(yǎng)魚成為日常生活中陶冶情操的一種樂趣,越來越多的家庭以及辦公場所均能看見魚兒的身影,但是往往欣賞的背后卻要付出很多辛苦勞動。市面上的魚缸多采用背部過濾設計,可以在過濾的同時給魚缸加氧,這需要時常向魚缸背部添水,由于養(yǎng)魚者忙碌或出差不在家不能及時給魚缸添水導致過濾系統(tǒng)損壞,或者要經常給魚缸換水費時費力,所以普通魚缸無法滿足人們對智能化產品的需求,特別對于忙碌的上班族來說,養(yǎng)魚往往是賞心悅目,卻要被這些繁瑣事情牽絆。所以設計一款魚缸的自動水循環(huán)系統(tǒng)是非常必要的,為人們自動控制管理魚缸水位高度,清理魚缸提供了很大的便利。
該設計是以STC89C51 單片機芯片為整體控制中心,總體設計框圖如圖1 所示。由超聲波測距模塊、LCD 液晶顯示模塊、按鍵電路模塊、以及水位高度測量電路、報警電路等結構組成得以實現魚缸水循環(huán)系統(tǒng)。該設計實現了實時監(jiān)測顯示魚缸水位高度,并兼具兩種控制魚缸水位的模式:自動模式、手動模式。
圖1 總體設計圖
自動模式主要適用于無人看守魚缸并需要實時向魚缸里加水情況,在無人看守下,可以設定系統(tǒng)為自動模式。背部過濾設計的魚缸水分蒸發(fā)較快,由于養(yǎng)魚者沒有及時向魚缸添水,可能會導致過濾系統(tǒng)燒壞。在自動模式下,利用軟件編程可以設置最高水位值和最低水位值,也可以通過單片機上設置按鍵改變水位高度設定值,當魚缸水分蒸發(fā)低于設定最低值時,系統(tǒng)自動報警,紅燈指示燈亮同時注水水泵工作,向魚缸里加水。手動模式更適用于清理魚缸時自動換水情況,在手動模式下,實時顯示魚缸液位高度,但是報警電路不工作,當魚缸需要換水時,可以切換成手動模式,按下設置鍵選擇排水,當魚缸水抽凈后通過按鍵控制而停止抽水,再按下設置鍵選擇注水,由此實現了自動水循環(huán)過程。
根據上述對系統(tǒng)的設計要求,具體實施過程與元器件選擇如下:
2.1 單片機最小系統(tǒng):首先考慮系統(tǒng)應有掉電保護的功能,所以在選取單片機上選擇了內部含有EEPROM 的存儲空間的芯片[1],對每次設定好的水位數據值進行記憶存儲,在單片機第二次開機時,系統(tǒng)首先讀取EEPROM的上一次記憶存儲值顯示在屏幕上,不會因為突然掉電、上電改變高度值從而影響魚缸水位。由于51 系列單片機內存為4K 可以滿足魚缸整體程序的存儲空間,加之成本低、可在線編程下載、可靠性高、市場應用高的特點,綜合決定選取STC89C51 為主控芯片。
最小系統(tǒng)還包含了電源電路、復位電路和時鐘電路??紤]到51 單片機的工作電壓是5V 左右,本次供電方式采用5V 移動電源供電。對于時鐘電路主要是單片機晶振的選取,由于本次設計對系統(tǒng)的實時性要求不高,再考慮到功耗,成本的問題時,11.0592M晶振足以滿足系統(tǒng)需求。
2.2 顯示模塊:由于設計要求需要,顯示模塊需要顯示實時魚缸液位高度、顯示設置的液位最高值和最低值以及模式狀態(tài),顯示內容較多。LCD1602 液晶顯示屏完全可以符合設計需求。LCD1602 的八位數據端口(D0-D7)分別連接單片機P0.0-P0.7端口,RS、R/W、使能端E 分別連接單片機P1.0-P1.2 端口,經過軟件編程對液晶顯示屏控制后,在液晶屏第一行顯示模式狀態(tài)和水位高度,第二行顯示液位設置最高值最低值高度。
2.3 超聲波測距模塊:此模塊是設計的核心,主要功能是實時測量液位高度。對于測量液位高度,國內外有二十幾種檢測方式,如電阻式、光纖式液位測量等[2],最終選取超聲波測量主要考慮的是盡量不選擇在魚缸的水中放入傳感器,而超聲波測量方法是非接觸式測量[3],利用超聲波脈沖反射和脈沖反射回波進行相應計算得到測量結果。
超聲波模塊選取的是HC-SR04,其最大探測范圍是4m,如圖2 為超聲波模塊接口圖,GND、VCC 分別接地和5V 電源,Trig為控制端口連接單片機P2.6 接口,工作時需要單片機給該端口一個高電平信號,超聲波發(fā)射端口會循環(huán)發(fā)出40KHz 頻率方波[4],Echo 為接收端口連接單片機P2.7 接口,當接收端接收到超聲波返回信號會將Echo 輸出高電平。通過單片機內計時功能得到往返時間t1,超聲波在空氣中傳播速度V 為340m/s,則水面到發(fā)射器的距離為S=Vt1/2,進而可以得到魚缸水位高度。
圖2 超聲波模塊接口
2.4 按鍵模塊:有三個功能按鍵,分別是設置鍵、水位加、水位減按鍵分別連接單片機P1.3、P1.4、P3.5 接口,設置鍵主要是切換自動模式和手動模式。手動模式下,顯示屏顯示“A”,當按下水位加按鍵,注水水泵開始工作給魚缸加水,當按下水位減按鍵停止加水;當按下水位減按鍵,排水水泵開始工作給魚缸抽水,當按下水位加按鍵停止抽水;在自動模式下顯示屏顯示“H”和“L”,在“H”界面下通過水位加和水位減按鍵可以調節(jié)最高水位值,在“L”界面下通過水位加和水位減按鍵可以調節(jié)最低水位值。
本設計是以51 單片機為基礎,結合上面闡述的硬件設計,以C 語言作為編程語言,采用模塊化方式進行程序設計。主要分為三個功能模塊:主程序模塊、EEPROM數據記憶存儲模塊、液晶顯示模塊構成。
其中主程序流程圖如圖3 所示,有三個函數構成,第一部分是系統(tǒng)初始化函數,主要是單片機上電后系統(tǒng)開始運行時設置各模塊的初始值。第二部分是延時函數,主要用在按鍵電路的延時去抖中。第三部分是實時液位高度檢測函數,利用單片機內部定時器計數的功能得到time1,機器周期時間T1 為1/11.0592×12μs=1.08μs 進而得到超聲波往返的時間t1為1.08×time1μs,由于t1為聲波的往返時間,計算距離時的時間應該為t1/2, 進而得到超聲波發(fā)射器與液體高度的距離S1,則S1=vt=346×t1/2=1.87×time1/100cm,利用尺子量出超聲波模塊到魚缸底部的距離S2,其為定值,則魚缸實時高度S 為S2-S1。
主程序流程圖具體分析如下:首先單片機上電,系統(tǒng)初始化,在EEPROM存儲空間中讀取上一次設置的水位最高值和最低值顯示在液晶屏幕上;開啟定時計數功能;進入液位檢測函數中,得到魚缸水位高度值;判斷此時的工作模式是手動還是自動模式;如果是自動模式,繼續(xù)判斷液位高度是否在設置值范圍內,如果在,則顯示液位高度,如果不在設置范圍內,則相應的排水、注水水泵工作,同時指示燈亮,蜂鳴器報警;如果在手動模式下,關閉報警電路并判斷是否有加水鍵和減水減按下,如果有則進行相應操作,如果沒有顯示魚缸水位高度值。
本次設計在keil 編程調試和proteus 軟件仿真后均得到預期值,經過實物測試得到該方案可行,可以實時監(jiān)測魚缸水位高度,并實現自動化水循環(huán)和液位高度控制的功能,本次設計是電子技術于測量領域結合應用在居家生活中,還可以在多方面進行提高,比如加上水溫控制,實時監(jiān)測魚缸內氧氣濃度等功能,這樣一個智能魚缸系統(tǒng)會更加完善。
圖3 主程序流程圖