唐曉波,劉曉君,劉斌
(1.桂林市氣象局,廣西桂林,541001;2.陽朔縣氣象局,廣西桂林,541900)
隨著山洪地質(zhì)災(zāi)害防治項目的推進,氣象、水利部門建成的雨量自動氣象站快速增長,相關(guān)研發(fā)和維護的從業(yè)人次也隨之增加。由于商業(yè)競爭、工作難度等因素,雖然自動氣象站維護的資料較多[1-3],但是自動氣象站設(shè)計的公開資料很少[4]。當前,大量的自動氣象站研發(fā)和維護人員,不僅需要維護知識,如果能更深入的了解自動氣象站的設(shè)計,將有助于靈活的開展工作,提高效率。
雨量自動氣象站主要由采集器、傳感器、供電模塊等組成[5]。根據(jù)中國氣象局發(fā)布的《氣象專用技術(shù)裝備使用許可證名錄》[6],獲得中國氣象局使用許可證的雨量自動氣象站其中有以下幾款:1)華云升達公司DSD21型雨量自動氣象站[7]。其采集器基于ARM7內(nèi)核,雨量傳感器可選配SL3-1翻斗式雨量傳感器。ARM7是英國ARM公司量產(chǎn)的一款32位微處理器,可采用C語言編寫驅(qū)動程序,其驅(qū)動程序具有較高的可讀性和可移植能力。2)江蘇無線電科學(xué)研究所DSD22型雨量自動氣象站。該自動站采用32位操作系統(tǒng),2個232通訊串口,可接1路雨量傳感器。3)上海氣象儀器廠DSD25型雨量自動氣象站。該自動站具有對降水數(shù)據(jù)的采集、計算、傳輸?shù)裙δ堋?/p>
可見,不同廠商雖采用不同型號命名雨量自動氣象站,但其采集器普遍選用ARM等32位可編程器件,傳感器多見翻斗式雨量傳感器,加上一些供電電源、通訊電路即構(gòu)成雨量自動氣象站。本文采用類似的設(shè)計思路,介紹一種雨量自動氣象站的設(shè)計方法。
本設(shè)計的雨量自動氣象站選擇32位可編程器件FPGA作為采集器內(nèi)核,verilog語言編程。FPGA與ARM同屬于嵌入式微處理器,都能通過計算機高級語言編寫驅(qū)動程序。FPGA測量、計算、控制外部電量,作為電子設(shè)備的“大腦”,實現(xiàn)產(chǎn)品功能。選用由承水口、計量翻斗、計數(shù)翻斗等構(gòu)成的SL3-1翻斗式雨量傳感器,計數(shù)翻斗每翻轉(zhuǎn)一次,代表0.1mm降水[8]。選用可供二次開發(fā)的LED顯示屏,通過顯示屏通訊串口,可以接收FPGA發(fā)出的顯示的數(shù)據(jù)。圖1是該自動站主要器件及其連接示意圖。

圖1 主要器件及連接示意圖
當無降水時,翻斗式雨量傳感器不翻動,雨量傳感器的兩個接線柱相當于斷開。通過雨量上拉電阻電路,將接入FPGA的端口鉗制在高電平。此時FPGA檢測到持續(xù)的高電平,不記錄降水。
當有降水時,翻斗式雨量傳感器翻斗翻動,雨量傳感器兩個接線柱會產(chǎn)生短暫的導(dǎo)通狀態(tài),此時在雨量上拉電阻電路中,CON器件的1和2插針導(dǎo)通。接入FPGA的端口,由高電平,轉(zhuǎn)而出現(xiàn)一段低電平。翻斗翻轉(zhuǎn)完畢后,接入FPGA的端口恢復(fù)高電平,此時已產(chǎn)生了一個完整的低脈沖信號。通過檢測一個低脈沖信號,F(xiàn)PGA記錄翻斗一次翻轉(zhuǎn),即0.1mm的降水。
本設(shè)計硬件由采集器(FPGA內(nèi)核)、雨量傳感器、LED顯示屏等組成。采集器(FPGA內(nèi)核)包含采用FPGA廠家提供的核心板電路和自主設(shè)計的RS232串口電路。FPGA核心板電路,見圖2。它含有FPGA內(nèi)核運行必備的電源電路、晶振時鐘電路、JTAG接口程序下載配置電路、FLASH存儲電路等單元。自主設(shè)計的采集器RS232串口電路,見圖3,用于實現(xiàn)FPGA和LED顯示屏的通信。

圖2 FPGA核心板電路

圖3 采集器RS232串口電路
雨量傳感器采用上海氣象儀器廠SL3-1型翻斗式雨量傳感器,將該傳感器的紅黑接線柱,接入圖1中的雨量上拉電阻電路CON插針1口和2口。CON插針1口另一端,接FPGA的信號檢測接口和上拉電阻。CON插針2口另一端,接GND地線。雨量傳感器不翻轉(zhuǎn)時,CON插針的1口與2口之間相當于斷路。當雨量傳感器翻轉(zhuǎn)時,CON插針的1口和2口形成短接[9]。
LED顯示屏用于顯示雨量結(jié)果,采集器和LED顯示屏約定采用RS232串口通信協(xié)議傳輸,將采集器和LED顯示屏的串口連接。
軟件部分包括:復(fù)位模塊、idle空閑等待模塊、confirm_rain雨量確認模塊、cnt_rain雨量計數(shù)模塊。軟件流程圖見圖4。

圖4 軟件流程圖
采集器的復(fù)位按鍵擁有程序流程的最高優(yōu)先級,當此按鍵按下,雨量值清零。復(fù)位按鍵松開時,程序可以進入雨量檢測。Idle狀態(tài)時,軟件不斷檢測rain_in接口是否出現(xiàn)低電平,當出現(xiàn)低電平,跳到確認該電平是否有效的狀態(tài)。
為了濾除雨量翻斗掃過干簧管的過程中和雨量自動氣象站周圍的電磁干擾信號[10-12]。本設(shè)計采用軟件濾波的方式,濾除干擾信號。圖5是示波器觀察本設(shè)計的高頻信號,看到的一些信號擾動。本設(shè)計通過大量實驗發(fā)現(xiàn),如果雨量翻斗翻轉(zhuǎn)時的干擾信號,未經(jīng)濾除,將會造成測量值比實際值偏大3-5倍。所以,在檢測脈沖信號時,我們將高、低電平的檢測確認時間延長至毫秒量級,即超過毫秒量級時長的高、低電平才判斷為有效電平,本設(shè)計檢測確認時間定為5毫秒,可以達到軟件濾波的目的。

圖5 干擾信號波形圖
當程序判斷rain_in接口再次出現(xiàn)高電平時,并且該電平時長超過5毫秒。則認為,雨量翻斗已經(jīng)成功翻轉(zhuǎn)一次。雨量計數(shù)增加1。至此,完成一次翻斗翻動,即雨量值增加0.1mm。部分verilog語言編寫的程序如下:


采用JJS2型雨量校準儀作為標準器,測試本設(shè)計雨量測量結(jié)果。參考中國氣象局《區(qū)域自動氣象站翻斗式雨量傳感器現(xiàn)場校準方法》[13-14],制定本測試方法。將本設(shè)計的雨量自動氣象站連續(xù)開機運行,取第30天、第60天、第90天做測試。測試小雨強1mm/min和大雨強4mm/min,每種雨強測試3次,取平均值,記錄JJS2雨量校準儀的平均示值和本設(shè)計雨量自動氣象站的平均示值。結(jié)果見表1。

表1 本設(shè)計雨量自動氣象站測試結(jié)果 mm

第60天 1mm/min 10.0 9.7 9.7 -0.3 4mm/min 10.0 10.3 10.3 0.3第90天 1mm/min 10.0 10.1 10.1 0.1 4mm/min 10.0 10.2 10.2 0.2
從測試結(jié)果可見,本設(shè)計示值和JJS2標準器示值高度一致,由于JJS2標準器通過測量雨量傳感器翻斗翻動的次數(shù),即得到其示值。本設(shè)計也是通過測量同樣的翻斗翻動次數(shù),得到本設(shè)計的示值。出現(xiàn)示值的一致,說明本設(shè)計在測量翻斗翻動次數(shù),換算雨量值,顯示結(jié)果等軟硬件環(huán)節(jié)未產(chǎn)生額外的測量誤差。JJS2標準器示值和標準值之間的誤差,與本設(shè)計的示值和標準值之間的誤差,誤差來源相同,即雨量傳感器產(chǎn)生的誤差。
基于FPGA的雨量自動氣象站設(shè)計可以準確、穩(wěn)定的測得雨量值。在本設(shè)計的基礎(chǔ)上,通過修改、補充部分模塊,可以實現(xiàn)其他雨量自動氣象站的設(shè)計。例如:(1)將本設(shè)計采集器的FPGA內(nèi)核換成ARM內(nèi)核,將verilog代碼翻譯成C語言代碼,實現(xiàn)目前市面上應(yīng)用較多的基于ARM的雨量自動氣象站。(2)在軟件設(shè)計中將每一翻斗得到0.1mm雨量值改成每一翻斗其他規(guī)格的雨量值,實現(xiàn)將雨量傳感器更改成其他規(guī)格的雨量傳感器。(3)通過在本設(shè)計基礎(chǔ)上增加通訊模塊,設(shè)計在遠端顯示數(shù)據(jù)的雨量自動氣象站。