吳金玲
(沈陽工程學(xué)院 工程訓(xùn)練中心,遼寧 沈陽 110136)
本雨量計(jì)校驗(yàn)系統(tǒng)在整體設(shè)計(jì)上主要包括用戶輸入部分、雨量控制(模擬)部分、實(shí)時(shí)顯示部分及故障檢測(cè)部分等,主要構(gòu)成如圖1所示。
圖1 智能雨量計(jì)校驗(yàn)系統(tǒng)主要結(jié)構(gòu)
用戶可以通過鍵盤輸入所需要的雨量模擬值,液位檢測(cè)模塊負(fù)責(zé)檢測(cè)雨量模擬儲(chǔ)存箱的液位信息,當(dāng)雨量模擬儲(chǔ)存箱的液位低于最低設(shè)定值時(shí),單片機(jī)給出相應(yīng)的控制信號(hào),報(bào)警模塊啟動(dòng)報(bào)警,并在上位機(jī)的顯示頁面上顯示相關(guān)信息以便提醒用戶及時(shí)加水;當(dāng)液位高于設(shè)定值時(shí),系統(tǒng)保存當(dāng)前液位信息。首先單片機(jī)接收到用戶的輸入值后,對(duì)數(shù)據(jù)進(jìn)行計(jì)算處理;然后輸出相應(yīng)的控制信號(hào)給電機(jī)驅(qū)動(dòng)模塊,在驅(qū)動(dòng)電路的作用下,步進(jìn)電機(jī)將帶動(dòng)水閥的開與合,實(shí)現(xiàn)雨量模擬,并對(duì)系統(tǒng)實(shí)時(shí)監(jiān)測(cè);最后給出校驗(yàn)結(jié)果,即是否合格。
當(dāng)用戶輸入設(shè)定的雨量模擬值后,Arduino 單片機(jī)通過設(shè)定的算法給出校正數(shù)字量和相應(yīng)的閥門開度、放水時(shí)間以及液位下降目標(biāo)值,繼而輸出控制信號(hào)驅(qū)動(dòng)步進(jìn)電機(jī)打開閥門,當(dāng)達(dá)到放水時(shí)間時(shí),單片機(jī)立刻給出控制信號(hào),隨即電機(jī)驅(qū)動(dòng)模塊驅(qū)動(dòng)步進(jìn)電機(jī)反向運(yùn)行將閥門關(guān)閉。系統(tǒng)對(duì)水閥的開合程度進(jìn)行實(shí)時(shí)監(jiān)控,當(dāng)發(fā)現(xiàn)故障時(shí)會(huì)給出相應(yīng)的提示與處理。在閥門打開并進(jìn)行雨量模擬的過程中,系統(tǒng)會(huì)記錄并統(tǒng)計(jì)被檢定雨量計(jì)的輸出信號(hào)。在雨量模擬結(jié)束之后,系統(tǒng)會(huì)顯示被檢定雨量計(jì)的測(cè)量值,并對(duì)測(cè)量結(jié)果進(jìn)行自動(dòng)校驗(yàn)。
本文所設(shè)計(jì)的智能雨量計(jì)校驗(yàn)系統(tǒng)的硬件主要包括Arduino UNO 板、液位檢測(cè)模塊、電機(jī)驅(qū)動(dòng)模塊、顯示存儲(chǔ)模塊及監(jiān)視報(bào)警模塊等。
該系統(tǒng)使用的是UNO 版本Arduino單片機(jī),以ATmega328 MCU 主控芯片為核心的處理器,具有6 路模擬輸入,14 路數(shù)字輸入/輸出口,其中6 路可用于PWM 輸出,1 個(gè)USB 接口,1 個(gè)16 MHz 晶體電路,1 個(gè)電源接口,1 個(gè)ICSP leader 串行編程端口和1 個(gè)復(fù)位按鈕,可以非常簡(jiǎn)單、方便地進(jìn)行各種信號(hào)地采集和控制回路的擴(kuò)展[1]。Arduino UNO單片機(jī)實(shí)物如圖2所示。
圖2 Arduino UNO單片機(jī)
由于雨量模擬儲(chǔ)水室要保持足夠的水量,所以必須設(shè)置液位檢測(cè)模塊,可以隨時(shí)檢測(cè)儲(chǔ)水室的液位信息。本系統(tǒng)使用的是AJ-SR04M-T-X 超聲波測(cè)距模塊,其理論探測(cè)距離為20 cm~800 cm,在保證較高精度時(shí)其探測(cè)距離為20 cm~250 cm。該模塊與外部連接的有4 個(gè)引腳:直流電源端VCC、接地端GND、輸入啟動(dòng)信號(hào)端Trig 及輸出測(cè)量信號(hào)端Echo[2]。將Trig 和Echo 引腳分別接至Arduino系統(tǒng)的數(shù)字信號(hào)I/O 口8 腳和9 腳。數(shù)據(jù)采集及處理具體過程如下:
1)Arduino 控制I/O 口8 腳輸出1 個(gè)大于10 μs的高電平,觸發(fā)模塊發(fā)出40 k的超聲信號(hào);
2)在超聲信號(hào)發(fā)出時(shí),I/O 口9腳讀入1個(gè)持續(xù)的高電平,直到檢測(cè)到回波;
3)測(cè)量距離=(I/O 口9 腳高電平持續(xù)時(shí)間*340 m/s)/2。
雨量模擬的開始、停止以及模擬雨強(qiáng)大小均需要水閥來控制,而水閥的開啟、閉合以及開啟程度是需要步進(jìn)電機(jī)來控制的。步進(jìn)電機(jī)可以將電脈沖信號(hào)轉(zhuǎn)變?yōu)榫€位移或角位移,能夠?qū)崿F(xiàn)非常精確的定位和速度控制。驅(qū)動(dòng)電路的輸入端會(huì)一直檢測(cè)有無脈沖信號(hào),當(dāng)沒有信號(hào)的時(shí)候,步進(jìn)電機(jī)的轉(zhuǎn)子不動(dòng);當(dāng)輸入端接收到脈沖信號(hào)時(shí),轉(zhuǎn)子便以固定的角度(稱之為步距角)轉(zhuǎn)動(dòng)[3],步距角決定了步進(jìn)電機(jī)完成一轉(zhuǎn)所需要的步數(shù),而內(nèi)部繞組的通電順序則決定了步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向。
本系統(tǒng)采用的電機(jī)驅(qū)動(dòng)芯片是L298N,它是一種驅(qū)動(dòng)能力很強(qiáng)的集成電路,并且體積小、啟動(dòng)性好。其硬件電路如圖3 所示,其中續(xù)流二極管D1、D2、D3 和D4 構(gòu)成的“H 橋”作為L(zhǎng)298N 的輔助電路,Arduino 單片機(jī)控制器通過ENA 對(duì)電機(jī)進(jìn)行調(diào)速,INT1和INT2分別控制電機(jī)的轉(zhuǎn)向與制動(dòng)。
圖3 步進(jìn)電機(jī)驅(qū)動(dòng)電路
根據(jù)國(guó)家氣象局出臺(tái)的相關(guān)雨量計(jì)檢定規(guī)程,雨量計(jì)檢定一般設(shè)置小雨、中雨和大雨3 種降雨強(qiáng)度[4],本雨量計(jì)校驗(yàn)系統(tǒng)提供小雨(0.5 mm/min)、中雨(1.0 mm/min 或2.0 mm/min)、大雨(4.0 mm/min 或5.0 mm/min),共5 種模擬雨強(qiáng),模擬的雨量大小為10 mm 或30 mm。目前,我國(guó)采用的雨量計(jì)承水器直徑d大小為20 cm,因此雨量大小h為10 mm時(shí),對(duì)應(yīng)的總降水量為
雨量大小為30 mm時(shí),對(duì)應(yīng)的降水量為942 mL。
已知雨量計(jì)承水器直徑大小為d,雨量大小為h,放水時(shí)間為t,可得雨強(qiáng)大?。?/p>
水流量大小為
該雨量計(jì)校驗(yàn)儀在不同雨強(qiáng)大小(當(dāng)模擬降雨量為10 mm 和30 mm 時(shí))下的放水時(shí)間,分別如表1和表2所示。
表1 模擬降雨量為10 mm時(shí)的放水時(shí)間
表2 模擬降雨量為30 mm的放水時(shí)間
系統(tǒng)的整體檢定流程如圖4 所示。系統(tǒng)上電后,首先檢查水閥和報(bào)警燈是否處于關(guān)閉狀態(tài),如果在開始前水閥未關(guān)閉,可能會(huì)因?yàn)槁┧斐烧`差,若檢測(cè)到閥門沒有關(guān)閉,則發(fā)出指令關(guān)閉閥門;校驗(yàn)開始前必須確保雨量模擬儲(chǔ)水室內(nèi)的水量充足,因此需要啟動(dòng)液位檢測(cè)模塊,若檢測(cè)到雨量模擬儲(chǔ)水室的水位低于最低設(shè)定值,則發(fā)出警報(bào),提醒用戶及時(shí)加水,若檢測(cè)到水位高于設(shè)定值,則保存當(dāng)前液位值,繼續(xù)向下執(zhí)行。用戶通過上位機(jī)選擇所需要模擬的雨強(qiáng)(0.5 mm/min~5.0 mm/min)和降雨量大?。?0 mm/30 mm),系統(tǒng)讀取到用戶所輸入的數(shù)據(jù)后,經(jīng)過一系列換算得出總放水時(shí)間和步進(jìn)電機(jī)的步距角,繼而控制步進(jìn)電機(jī)打開閥門并計(jì)時(shí),當(dāng)達(dá)到設(shè)定的總放水時(shí)間時(shí),控制閥門關(guān)閉。雨量模擬過程完成以后,系統(tǒng)讀取被校驗(yàn)雨量計(jì)的輸出信號(hào),從而計(jì)算出被校驗(yàn)雨量計(jì)的誤差值,并顯示測(cè)量值和誤差值,同時(shí)給出判斷結(jié)論,即被校驗(yàn)雨量計(jì)是否符合國(guó)家標(biāo)準(zhǔn)規(guī)定的精度要求。
圖4 系統(tǒng)總體流程
Arduino UNO 系統(tǒng)讀取到用戶輸入的模擬雨強(qiáng)值后,通過計(jì)算,輸出相應(yīng)的控制信號(hào),電動(dòng)機(jī)驅(qū)動(dòng)模塊接收到控制信號(hào),便會(huì)驅(qū)動(dòng)步進(jìn)電機(jī)正傳、反轉(zhuǎn)和停止并控制步距[5],閥門在步進(jìn)電機(jī)的帶動(dòng)下實(shí)線開啟和閉合,從而通過不同的開啟程度控制水量。具體控制流程如圖5所示。
圖5 步進(jìn)電機(jī)流量控制流程
系統(tǒng)依據(jù)模擬雨量大小h及模擬雨強(qiáng)大小p,計(jì)算出相應(yīng)的總模擬降水量大小vi,進(jìn)而得到驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)相應(yīng)的步數(shù)Ti,最終使模擬水量均勻地排出。當(dāng)用戶所選擇的模擬雨強(qiáng)較大時(shí),步進(jìn)電機(jī)要增加轉(zhuǎn)動(dòng)步數(shù),閥門開啟程度加大,從而加大實(shí)時(shí)流量,放水時(shí)間隨之縮短;反之則減少轉(zhuǎn)動(dòng)步數(shù),閥門開啟程度減小,從而減小實(shí)時(shí)流量,放水時(shí)間隨之延長(zhǎng)。當(dāng)計(jì)數(shù)時(shí)間達(dá)到目標(biāo)值時(shí),即達(dá)到要求“降水量”時(shí),單片機(jī)及時(shí)驅(qū)動(dòng)步進(jìn)電機(jī)反轉(zhuǎn),迅速并精確地將水閥關(guān)閉。
與傳統(tǒng)的人工手動(dòng)校驗(yàn)方式相比,本文所設(shè)計(jì)的智能雨量計(jì)校驗(yàn)系統(tǒng)自動(dòng)化程度高,能夠有效地避免人為操作誤差,該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、省時(shí)省力、易于維護(hù)。今后還需進(jìn)一步地提高步進(jìn)電機(jī)控制水閥的精度使流量更加均勻、精確,同時(shí)不斷改進(jìn)完善各個(gè)功能模塊,使整個(gè)雨量計(jì)校驗(yàn)系統(tǒng)更加的穩(wěn)定智能,檢定結(jié)果更加精準(zhǔn)、可靠。