史磊
(陜西機電職業技術學院 電子與信息學院,陜西寶雞,721000)
在工農業生產中,大型的水庫、水箱是重要的蓄水工具,對水情進行有效的實時監控、可靠控制將直接關系到工廠生產效率以及農業生產質量[1]。以前,對于水庫和水箱的控制一般是基于人工,但由于人工操作存在不及時、不準確等弊端,所以對于水情的控制,如果能夠使用一種能自動且不間斷的監測系統,將對生產生活帶來很大的便利。此系統要求能夠實時反應水情信息,并根據當前水情信息自動與預設的水情進行對比分析,從而自動向管理人員提供水情超上限和超下限的聲光報警,并自動控制相應的閘門或閥門電機進行蓄水和放水[2]。這不僅提高了水情監控的安全性,實時性,更大程度提高了可靠性,對于節約水資源和合理利用水資源有著不可代替的意義。
水情監測系統選用單片機STC89C52作為控制器。利用壓力傳感器受到來自于水的壓力和水面上大氣壓的壓差,再通過AD轉換電路將壓差模擬信號轉換為與水面高度成比例的電壓信號,進而完成水位高度的檢測。濁度檢測是水質分析中的必檢項目,因此,水質檢測將利用濁度傳感器來完成。從功能要求角度看,本系統能實現水位檢測、水質檢測、液晶顯示、按鍵設置、水位控制等功能。因此,水情監測系統由單片機控制部分,水位檢測部分,水質檢測部分,AD采集部分和顯示部分等構成,系統的總體設計框圖如圖1所示。

圖1 系統總體設計框圖
水情監測系統利用壓力傳感器測量出水位的具體高度,利用按鍵設置水位的上、下限值;當水位高度低于下限值時,報警提醒,繼電器工作打開水泵進行抽水,當水位高度高于上限值時,繼電器斷開,自動關閉水泵停止抽水,同時,報警解除;濁度檢測是利用一個紅外對管,當光線穿過一定量的水時,光線的透過量取決于該水的污濁程度,水越污濁,透過的光就越少。具體能實現的功能有以下幾點:(1)利用水壓傳感器檢測水位值;(2)利用濁度傳感器檢測當前水的污濁程度;(3)利用液晶顯示器顯示當前檢測值與閥值;(4)水位低于下限值或高于上限值時,水泵開始加水或排水,同時報警電路工作;(5)設定濁度閥值,當濁度高于閥值時,水泵啟動開始排水,同時報警提醒。
本次設計的系統硬件部分主要包括STC89C52單片機主控模塊、壓力傳感器模塊、濁度傳感器模塊,ADC0832模數轉換模塊,按鍵模塊,蜂鳴器報警模塊、LCD1602顯示模塊和電機驅動模塊等。
單片機最小系統主要是由STC89C52單片機組成的一個最小系統,一塊單片機只有把它接入相應的電源,相應的晶振電路,再加入相應的復位電路然后下載相應的程序,通過這樣組合的單片機才能正常的按照所寫的程序要求來執行操作[3]。
單片機只有滿足相應的時鐘信號才能進行工作,時鐘信號由時鐘電路產生,通過在STC89C52的 XT1、XT2引腳上接入11.0592MHz的石英晶振外加兩個電容器(電容器根據經驗一般取30pF)組成的電路為單片機提供時鐘信號。
單片機的復位有上電復位和按鍵復位兩種模式,當出現死機和運行錯誤的時候,一般采用按鍵方式對單片機進行復位操作,對于本系統所采用的單片機需要在復位管腳RST上產生兩個周期的高電平才能使單片機復位[4]。
水情監測系統利用單片機的 P3.0/RXD 引腳、P3.1/TXD引腳以及電源接地引腳與下載模塊相連接,通過專用的下載連接線就可以對單片機進行下載操作,能很方便的對系統進行程序升級。
對于水位監測電路,本系統使用的是壓力傳感器,眾所周知,水越深,壓力越大,水的深度與壓力成正比,因此可通過測量壓力換算為液面高度。壓力傳感器由敏感元件、轉換元件、后續處理部分組成,壓力傳感器采用應變片來實現壓力的測量,應變片的制造原理是依據橋式電路,當應變片上沒有壓力時,輸出的電壓為零;當有壓力作用時,電橋不平衡,有一定的電壓輸出,輸出的電壓與電阻的變化量成線性關系,這樣通過測電壓就間接測量出壓力的大小[5]。
濁度傳感器內部是一個IR958與PT958封裝的紅外線對管,當光線穿過一定量的水時,光線的透過量取決于該水的污濁程度,水越污濁,透過的光就越少。光接收端把透過的光強度轉換為對應的電流大小,透過的光多,電流大,反之,透過的光少,電流小[6]。通過測量接收端電流的大小,就可以間接計算出水的污濁程度。
水位電壓信號和濁度電流信號(濁度電流信號經過電阻轉換為0 V~5V電壓信號),通過A/D轉換器進行采樣處理,單片機就可以獲知當前水的水位和污濁度。
液晶顯示電路主要通過USB轉串口線來與LCD1602液晶顯示屏通信將ADC0832采集和轉換的數據傳給LCD1602,顯示出所測得液面高度和濁度。液晶顯示電路分別將單片機的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7口分別接到液晶顯示模塊的信號端口RB0~RB7。
軟件設計主要包括單片機主程序模塊、顯示程序模塊、模數轉化程序模塊和其他簡單程序模塊。依據硬件電路,為每個模塊進行程序編寫開發。在本系統的軟件設計編寫過程中,先使用C語言編寫每個模塊自身的程序,再將各個部分的程序結合起來實現整體功能。
在水情監測系統中,水位信息和濁度信息通過ADC0832模數處理之后,單片機就可以獲知當前水的水位和污濁度,然后根據設置的閾值,將當前值與閾值進行對比,進而對水泵的啟停做出判定[7]。同時主程序還具有液晶顯示當前采集到的水位值、濁度值和閾值的功能,報警功能和閾值設置等功能,這樣使用戶操作更為方便。主程序設計流程圖如圖2所示。

圖2 主程序設計流程圖
當使用檢測水位的壓力傳感器檢測到信號后,會將模擬信號傳輸到ADC8032中,實現模數轉化,然后單片機將實時采集到的信號與設定的閾值進行對比,并做出對應的處理[8]。如果當前水位低于設定值,水泵將會啟動加水,蜂鳴器報警。如果檢測到當前水位值高于設定的上限值時,水泵停止加水。水位檢測流程圖如圖3所示。

圖3 水位檢測流程圖
濁度的測量也是由單片機進行控制,用濁度傳感器檢測濁度值,然后經過A/D轉換之后將檢測的數據送至單片機并通過LCD進行顯示。當濁度值高于設定的上限值時,打開水泵開始排水,同時蜂鳴器報警。水質檢測流程圖與水位檢測流程圖類似,這里將不再贅述。
系統硬件電路調試首先要對焊接好的各個電路進行直觀檢查,具體可以參考以下幾步[9]:
(1)連線是否正確,在通電之前應先檢查一下電路的連線是否正確,包括錯線,多線等情況。查找的方法有:按一定的順序逐一檢查安裝好的線路,由此,可容易查出錯線、少線的情況;還有一種方法就是按照實際的線路來對照原理電路圖進行查線,這是一種以元件為中心進行查線的方法。把每個元件引腳的連線一次查清,檢查每個接線處在電路圖上是否存在,這種方法不但可以查出錯線和少線,還容易查出多線的情況。
(2)檢查元器件引腳之間有無短路;連接處有無接觸不良;二極管和電容極性等是否連接有誤。電源、信號源連接是否正確。
(3)電源端對地是否存在短路,在通電前,斷開一根電源線,用萬用表檢查電源對地端是否存在短路。
其中在硬件調試的過程中不免會出現一些問題,水情檢測系統在制作過程中就出現了以下兩個問題:
(1)液晶顯示屏不顯示
由于顯示模塊是設計中最直觀的,也是驗證其它功能是否正常的前提,因此,在本設計中首先檢測的就是顯示模塊。在系統焊接完成之后,給系統上電,發現顯示屏不能顯示,只是背光亮但是沒有數字顯示。首先是查看電路有沒有連接錯誤,焊接過程中焊錫短路或斷路等情況,但是最終經過檢測之后排除了這些問題。然后查閱資料后發現是顯示屏的對比度,是需要調節的,然后在調節端增加了10k電位器進行調節,經過緩慢調節,顯示屏上的數字逐漸顯示出來。經過這樣修改之后顯示模塊正常工作。
(2)繼電器模塊
在顯示模塊調試完成之后,在進行電機抽水檢測時,發現當繼電器吸合之后液晶屏顯示正常,當按下按鍵,繼電器關閉時,液晶屏就容易出現花屏(概率40%,沒顯示任何內容,就亮著背光燈,系統功能可以正常工作,按下按鍵一樣可以操作繼電器,只有斷電重啟后,液晶屏才又正常)。經過查閱資料后發現繼電器閉合時,負載充電電流較大,導致電源電壓跌落,LCD復位;最后給LCD電源處并聯100μF的電容,經過這樣修改之后模塊顯示正常[10]。
使用proteus仿真軟件對電路進行軟件仿真,查看仿真電路是否可以正常運行。在仿真電路中利用滑動變阻器模擬經過AD轉換后的水位信號和水質信號。仿真電路圖如圖4所示。

圖4 電路仿真圖
仿真調試也是要模塊化調試,一個程序塊一個程序塊的調試,例如,先寫一個液晶顯示程序,看顯示屏是否正常工作,從單個到整體,在本系統的軟件調試中分別對水位水質檢測系統的各個子程序進行調試,直到系統功能全部均能實現。
本系統由單片機、檢測水位的壓力傳感器、檢測水質的濁度傳感器、LCD1602顯示屏、繼電器、水泵等組成。實物圖如圖5所示。

圖5 電路實物圖
在完成硬件電路檢查和軟件仿真調試后,就要將軟硬結合在一起進行調試了,也就是讓編寫好的程序代碼直接在所焊接好的硬件電路中運行,觀察現象,當系統的運行狀況與之前設計要求的思路不一致時,就要對系統硬件或者軟件進行修改了。綜合調試步驟如下:
(1)將壓力傳感器、濁度傳感器、水泵和電源線連在電路板上。
(2)插上電源線之后按下電源開關。
(3)4個功能按鍵,分別為功能加鍵、功能減鍵、模式選擇鍵和確定鍵,首先按“模式選擇鍵”選擇進入水位檢測模式還是水質檢測模式狀態,再按加、減按鍵可以調節水位和水質的上限值及下限值。
(4)液晶顯示屏應顯示當前水位值和水質值。
滅菌后不可強行開鍋冷卻,停火2小時后趁熱出鍋,放置在冷卻室或接種室內,當料袋溫度冷卻到25~28℃或常溫時開始接種。接種室、接種箱及接種帳在接種前要選用規定的無公害藥劑進行噴霧或熏蒸消毒處理后再進行接種作業。栽培種菌齡30~35天,750克菌種瓶每瓶可接10~12袋。
(5)當水位當前檢測值小于設定的下限值時,水泵開始抽水,報警系統工作。當水位當前檢測值大于設定的上限閾值時,水泵停止抽水。當濁度值高于設定的上限值時,打開水泵開始排水,同時蜂鳴器報警。
4.4.1 水位高度的檢測
向量杯中分別倒入不同體積的水,通過讀取量杯外壁的刻度值測量出當前水位的實際值,同時可以從LCD1602顯示屏讀取當前水位的測量值,將6次測量結果記錄在表1中。

表1 水位檢測數據
4.4.2 濁度的檢測

表2 濁度檢測數據
本系統利用單片機完成了基于水情監測系統的設計,實現了當水塔或水箱中的水位低于所設定的一個臨界值時,報警裝置啟動,同時繼電器吸合,水泵開始抽水,當水泵加水水量達到所設定的上限值時,報警解除,同時水泵停止工作,并擴展到了液晶顯示屏上。為適應市場需求還擴充了水質檢測,水質檢測是保證安全用水的前提, 在本系統中利用濁度傳感器檢測當前水質,當檢測到的當前濁度值高于設定的上限值時,打開水泵開始排水,同時蜂鳴器報警。
本次設計的水情監測系統電路實現簡單,操作容易,穩定性比較高,測量準確,實用性比較強。因此,該系統可使用在農村儲水、水庫水位監測以及城市水源的控制檢測等領域。