唐曉波,劉曉君,劉斌
(1.桂林市氣象局,廣西桂林,541001;2.陽朔縣氣象局,廣西桂林,541900)
隨著山洪地質(zhì)災(zāi)害防治項(xiàng)目的推進(jìn),氣象、水利部門建成的雨量自動(dòng)氣象站快速增長,相關(guān)研發(fā)和維護(hù)的從業(yè)人次也隨之增加。由于商業(yè)競(jìng)爭(zhēng)、工作難度等因素,雖然自動(dòng)氣象站維護(hù)的資料較多[1-3],但是自動(dòng)氣象站設(shè)計(jì)的公開資料很少[4]。當(dāng)前,大量的自動(dòng)氣象站研發(fā)和維護(hù)人員,不僅需要維護(hù)知識(shí),如果能更深入的了解自動(dòng)氣象站的設(shè)計(jì),將有助于靈活的開展工作,提高效率。
雨量自動(dòng)氣象站主要由采集器、傳感器、供電模塊等組成[5]。根據(jù)中國氣象局發(fā)布的《氣象專用技術(shù)裝備使用許可證名錄》[6],獲得中國氣象局使用許可證的雨量自動(dòng)氣象站其中有以下幾款:1)華云升達(dá)公司DSD21型雨量自動(dòng)氣象站[7]。其采集器基于ARM7內(nèi)核,雨量傳感器可選配SL3-1翻斗式雨量傳感器。ARM7是英國ARM公司量產(chǎn)的一款32位微處理器,可采用C語言編寫驅(qū)動(dòng)程序,其驅(qū)動(dòng)程序具有較高的可讀性和可移植能力。2)江蘇無線電科學(xué)研究所DSD22型雨量自動(dòng)氣象站。該自動(dòng)站采用32位操作系統(tǒng),2個(gè)232通訊串口,可接1路雨量傳感器。3)上海氣象儀器廠DSD25型雨量自動(dòng)氣象站。該自動(dòng)站具有對(duì)降水?dāng)?shù)據(jù)的采集、計(jì)算、傳輸?shù)裙δ堋?/p>
可見,不同廠商雖采用不同型號(hào)命名雨量自動(dòng)氣象站,但其采集器普遍選用ARM等32位可編程器件,傳感器多見翻斗式雨量傳感器,加上一些供電電源、通訊電路即構(gòu)成雨量自動(dòng)氣象站。本文采用類似的設(shè)計(jì)思路,介紹一種雨量自動(dòng)氣象站的設(shè)計(jì)方法。
本設(shè)計(jì)的雨量自動(dòng)氣象站選擇32位可編程器件FPGA作為采集器內(nèi)核,verilog語言編程。FPGA與ARM同屬于嵌入式微處理器,都能通過計(jì)算機(jī)高級(jí)語言編寫驅(qū)動(dòng)程序。FPGA測(cè)量、計(jì)算、控制外部電量,作為電子設(shè)備的“大腦”,實(shí)現(xiàn)產(chǎn)品功能。選用由承水口、計(jì)量翻斗、計(jì)數(shù)翻斗等構(gòu)成的SL3-1翻斗式雨量傳感器,計(jì)數(shù)翻斗每翻轉(zhuǎn)一次,代表0.1mm降水[8]。選用可供二次開發(fā)的LED顯示屏,通過顯示屏通訊串口,可以接收FPGA發(fā)出的顯示的數(shù)據(jù)。圖1是該自動(dòng)站主要器件及其連接示意圖。
圖1 主要器件及連接示意圖
當(dāng)無降水時(shí),翻斗式雨量傳感器不翻動(dòng),雨量傳感器的兩個(gè)接線柱相當(dāng)于斷開。通過雨量上拉電阻電路,將接入FPGA的端口鉗制在高電平。此時(shí)FPGA檢測(cè)到持續(xù)的高電平,不記錄降水。
當(dāng)有降水時(shí),翻斗式雨量傳感器翻斗翻動(dòng),雨量傳感器兩個(gè)接線柱會(huì)產(chǎn)生短暫的導(dǎo)通狀態(tài),此時(shí)在雨量上拉電阻電路中,CON器件的1和2插針導(dǎo)通。接入FPGA的端口,由高電平,轉(zhuǎn)而出現(xiàn)一段低電平。翻斗翻轉(zhuǎn)完畢后,接入FPGA的端口恢復(fù)高電平,此時(shí)已產(chǎn)生了一個(gè)完整的低脈沖信號(hào)。通過檢測(cè)一個(gè)低脈沖信號(hào),F(xiàn)PGA記錄翻斗一次翻轉(zhuǎn),即0.1mm的降水。
本設(shè)計(jì)硬件由采集器(FPGA內(nèi)核)、雨量傳感器、LED顯示屏等組成。采集器(FPGA內(nèi)核)包含采用FPGA廠家提供的核心板電路和自主設(shè)計(jì)的RS232串口電路。FPGA核心板電路,見圖2。它含有FPGA內(nèi)核運(yùn)行必備的電源電路、晶振時(shí)鐘電路、JTAG接口程序下載配置電路、FLASH存儲(chǔ)電路等單元。自主設(shè)計(jì)的采集器RS232串口電路,見圖3,用于實(shí)現(xiàn)FPGA和LED顯示屏的通信。
圖2 FPGA核心板電路
圖3 采集器RS232串口電路
雨量傳感器采用上海氣象儀器廠SL3-1型翻斗式雨量傳感器,將該傳感器的紅黑接線柱,接入圖1中的雨量上拉電阻電路CON插針1口和2口。CON插針1口另一端,接FPGA的信號(hào)檢測(cè)接口和上拉電阻。CON插針2口另一端,接GND地線。雨量傳感器不翻轉(zhuǎn)時(shí),CON插針的1口與2口之間相當(dāng)于斷路。當(dāng)雨量傳感器翻轉(zhuǎn)時(shí),CON插針的1口和2口形成短接[9]。
LED顯示屏用于顯示雨量結(jié)果,采集器和LED顯示屏約定采用RS232串口通信協(xié)議傳輸,將采集器和LED顯示屏的串口連接。
軟件部分包括:復(fù)位模塊、idle空閑等待模塊、confirm_rain雨量確認(rèn)模塊、cnt_rain雨量計(jì)數(shù)模塊。軟件流程圖見圖4。
圖4 軟件流程圖
采集器的復(fù)位按鍵擁有程序流程的最高優(yōu)先級(jí),當(dāng)此按鍵按下,雨量值清零。復(fù)位按鍵松開時(shí),程序可以進(jìn)入雨量檢測(cè)。Idle狀態(tài)時(shí),軟件不斷檢測(cè)rain_in接口是否出現(xiàn)低電平,當(dāng)出現(xiàn)低電平,跳到確認(rèn)該電平是否有效的狀態(tài)。
為了濾除雨量翻斗掃過干簧管的過程中和雨量自動(dòng)氣象站周圍的電磁干擾信號(hào)[10-12]。本設(shè)計(jì)采用軟件濾波的方式,濾除干擾信號(hào)。圖5是示波器觀察本設(shè)計(jì)的高頻信號(hào),看到的一些信號(hào)擾動(dòng)。本設(shè)計(jì)通過大量實(shí)驗(yàn)發(fā)現(xiàn),如果雨量翻斗翻轉(zhuǎn)時(shí)的干擾信號(hào),未經(jīng)濾除,將會(huì)造成測(cè)量值比實(shí)際值偏大3-5倍。所以,在檢測(cè)脈沖信號(hào)時(shí),我們將高、低電平的檢測(cè)確認(rèn)時(shí)間延長至毫秒量級(jí),即超過毫秒量級(jí)時(shí)長的高、低電平才判斷為有效電平,本設(shè)計(jì)檢測(cè)確認(rèn)時(shí)間定為5毫秒,可以達(dá)到軟件濾波的目的。
圖5 干擾信號(hào)波形圖
當(dāng)程序判斷rain_in接口再次出現(xiàn)高電平時(shí),并且該電平時(shí)長超過5毫秒。則認(rèn)為,雨量翻斗已經(jīng)成功翻轉(zhuǎn)一次。雨量計(jì)數(shù)增加1。至此,完成一次翻斗翻動(dòng),即雨量值增加0.1mm。部分verilog語言編寫的程序如下:
采用JJS2型雨量校準(zhǔn)儀作為標(biāo)準(zhǔn)器,測(cè)試本設(shè)計(jì)雨量測(cè)量結(jié)果。參考中國氣象局《區(qū)域自動(dòng)氣象站翻斗式雨量傳感器現(xiàn)場(chǎng)校準(zhǔn)方法》[13-14],制定本測(cè)試方法。將本設(shè)計(jì)的雨量自動(dòng)氣象站連續(xù)開機(jī)運(yùn)行,取第30天、第60天、第90天做測(cè)試。測(cè)試小雨強(qiáng)1mm/min和大雨強(qiáng)4mm/min,每種雨強(qiáng)測(cè)試3次,取平均值,記錄JJS2雨量校準(zhǔn)儀的平均示值和本設(shè)計(jì)雨量自動(dòng)氣象站的平均示值。結(jié)果見表1。
表1 本設(shè)計(jì)雨量自動(dòng)氣象站測(cè)試結(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
從測(cè)試結(jié)果可見,本設(shè)計(jì)示值和JJS2標(biāo)準(zhǔn)器示值高度一致,由于JJS2標(biāo)準(zhǔn)器通過測(cè)量雨量傳感器翻斗翻動(dòng)的次數(shù),即得到其示值。本設(shè)計(jì)也是通過測(cè)量同樣的翻斗翻動(dòng)次數(shù),得到本設(shè)計(jì)的示值。出現(xiàn)示值的一致,說明本設(shè)計(jì)在測(cè)量翻斗翻動(dòng)次數(shù),換算雨量值,顯示結(jié)果等軟硬件環(huán)節(jié)未產(chǎn)生額外的測(cè)量誤差。JJS2標(biāo)準(zhǔn)器示值和標(biāo)準(zhǔn)值之間的誤差,與本設(shè)計(jì)的示值和標(biāo)準(zhǔn)值之間的誤差,誤差來源相同,即雨量傳感器產(chǎn)生的誤差。
基于FPGA的雨量自動(dòng)氣象站設(shè)計(jì)可以準(zhǔn)確、穩(wěn)定的測(cè)得雨量值。在本設(shè)計(jì)的基礎(chǔ)上,通過修改、補(bǔ)充部分模塊,可以實(shí)現(xiàn)其他雨量自動(dòng)氣象站的設(shè)計(jì)。例如:(1)將本設(shè)計(jì)采集器的FPGA內(nèi)核換成ARM內(nèi)核,將verilog代碼翻譯成C語言代碼,實(shí)現(xiàn)目前市面上應(yīng)用較多的基于ARM的雨量自動(dòng)氣象站。(2)在軟件設(shè)計(jì)中將每一翻斗得到0.1mm雨量值改成每一翻斗其他規(guī)格的雨量值,實(shí)現(xiàn)將雨量傳感器更改成其他規(guī)格的雨量傳感器。(3)通過在本設(shè)計(jì)基礎(chǔ)上增加通訊模塊,設(shè)計(jì)在遠(yuǎn)端顯示數(shù)據(jù)的雨量自動(dòng)氣象站。