郝智皓,黃釘勁,王錦濤
(西安工業(yè)大學 光電工程學院,西安 710021)
隨著我國近幾年來大氣污染越來越嚴重,大氣監(jiān)測與治理任務越來越重。無人機遙感技術作為繼航空、航天之后的第 3 代遙感技術, 具有立體監(jiān)測、響應速度快、監(jiān)測范圍廣、地形干擾小等優(yōu)點, 是今后進行大氣突發(fā)事件污染源識別和濃度監(jiān)測的重要發(fā)展方向之一[1]??捎糜趦逇怏w泄漏、火災現(xiàn)場檢測、煙道檢測、工業(yè)園區(qū)檢測、石油管道檢測的監(jiān)測任務中。
但由于無人機載荷有限,要完成多種氣體監(jiān)測工作需要搭載多種類型的氣體傳感器。而現(xiàn)在使用的氣體監(jiān)測系統(tǒng)多以ARM處理器作為中控芯片,由于ARM(Advanced RISC Machine,ARM)處理器外設固定,并且氣體監(jiān)測時所使用的各類傳感器的通訊形式與協(xié)議各不相同,實現(xiàn)多種氣體同步采集,必須另外設計擴展電路,這就導致大氣監(jiān)測系統(tǒng)的功耗與重量極大增加,對其研發(fā)過程帶來了一定挑戰(zhàn)[2]。此外,當氣體監(jiān)測系統(tǒng)中的數(shù)據(jù)采集模塊以ARM處理器或數(shù)字信號處理器(Digital Signal Processing,DSP)為控制核心時,并不能有效解決高速數(shù)據(jù)采集處理過程中存在的實時性和同步性差的技術難題[3]。因此需要設計一種適用于以無人機為搭載平臺實現(xiàn)多種氣體實時同步檢測的大氣監(jiān)測系統(tǒng)。
FPGA芯片具有引腳數(shù)目多,編程配置靈活、純硬件并行控制、時鐘頻率高、抗干擾能力強、功耗低(相比于ARM芯片),邏輯控制能力強等優(yōu)點[4-5]。本文設計了一種以FPGA為主控芯片的多通道同步氣體監(jiān)測系統(tǒng),在簡化系統(tǒng)電路結構的同時增加了系統(tǒng)的靈活性、擴展性,且兼容多種氣體傳感器,可完成對前端數(shù)據(jù)的采集,存儲、各通道的選通控制、以及數(shù)據(jù)的無線傳輸?shù)?,實現(xiàn)了多種有毒有害可燃氣體的遠程實時、同步采集。
該系統(tǒng)由傳感器陣列,空氣泵、主控制器、無線串口模塊、GPRS無線數(shù)據(jù)模塊、Flash存儲、上位機組成??傮w結構設計如圖1所示。傳感器陣列可掛載6個7NE系列智能氣體傳感器、PM2.5PM10傳感器、溫濕度傳感器,完成對溫濕度、PM2.5/10、二氧化氮、二氧化硫、臭氧等8種氣體濃度的同步實時采集;空氣泵通過控制電路與FPGA主控芯片相連,當該系統(tǒng)到達檢測現(xiàn)場時,遠程控制空氣泵的開閉狀態(tài),為各個氣體傳感器泵吸大氣實現(xiàn)氣體的泵吸式檢測的同時減小了系統(tǒng)的功耗;主控制器采用Xilinx公司的Spartan6系列的FPGA,通過控制空氣泵的開閉、端口的通斷、循環(huán)采集時間、傳感器的工作狀態(tài)等,實現(xiàn)了數(shù)據(jù)同步處理、實時采集、數(shù)據(jù)緩存、時序約束、端口控制、數(shù)據(jù)存儲、數(shù)據(jù)傳輸?shù)裙δ?;無線串口模塊與GPRS模塊均用于數(shù)據(jù)的遠程無線傳輸,對于較近距離的檢測任務可使用無線串口模塊對監(jiān)測系統(tǒng)進行指令下發(fā)和實時監(jiān)測數(shù)據(jù)的接收,在進行遠距離監(jiān)測任務時可使用GPRS無線傳輸模塊通過服務器對監(jiān)測系統(tǒng)進行指令下發(fā)和實時監(jiān)測數(shù)據(jù)的接收;上位機為遠程端,用于實時顯示監(jiān)控數(shù)據(jù)生成相應的趨勢曲線。本系統(tǒng)需要對傳感器陣列進行同步實時循環(huán)測量與控制,并對測量數(shù)據(jù)進行緩存、判斷、處理、存儲與傳輸。主要包括命令解析、傳感器狀態(tài)管理、信號通道切換、數(shù)據(jù)存儲、數(shù)據(jù)上傳等功能。
圖1 系統(tǒng)總體結構
采集系統(tǒng)硬件設計主要分為FPGA與傳感器陣列的硬件連接、空氣泵控制電路、無線通訊模塊等。硬件設計連接如圖2所示。
圖2 硬件連接
傳感器陣列共設有8組接口,可連接6個圣凱安公司所生產(chǎn)的7NE系列傳感器,一個攀升科技有限公司生產(chǎn)的PMSA003 PM2.5/10傳感器,一個DHT11數(shù)字式溫濕度傳感器。
該系統(tǒng)使用的DHT11數(shù)字溫濕度傳感器,使用數(shù)字模塊采集技術和溫濕度傳感技術。該產(chǎn)品體積小、功耗低、濕度測量范圍20%~90%、測濕精度±5%、溫度測量范圍0~50 ℃、測溫精度±2 ℃。它包含一個電阻式感濕元件和一個NTC測溫元件,輸出經(jīng)過內(nèi)置的高性能8位單片機進行校準。其經(jīng)過實驗室校準,將校準系數(shù)存儲于OTP內(nèi)存之中,在檢測過程中調(diào)用這些系數(shù)對測量結果進行校準。由于其為單總線數(shù)字式數(shù)據(jù)輸出,因此可減少模擬信號與數(shù)字信號的轉(zhuǎn)換電路設計,提高了檢測速率。
PMSA003是一款基于激光散射原理的數(shù)字式通用顆粒物傳感器,令激光照射在空氣中的懸浮顆粒物上產(chǎn)生散射,同時在某一特定角度收集散射光,得到散射光強度隨時間變化的曲線。進而微處理器基于米氏(MIE)理論的算法,得出顆粒物的等效粒徑及單位體積內(nèi)不同粒徑的顆粒物數(shù)量,進而換算成為質(zhì)量濃度,并以通用數(shù)字接口形式輸出。其顆粒物質(zhì)量濃度有效量程(PM2.5標準值)為0~500 μg/m3,顆粒物質(zhì)量濃度分辨率為1 μg/m3,工作溫度范圍為-10~+60℃,工作濕度范圍為0~99%。
7NE系列氣體傳感器是由圣凱安科技公司生產(chǎn)的專門針對氣體檢測的新型智能傳感器,可滿足對不同種類氣體探測的需求。該類傳感器工作電壓為DC5V±1%,采用電化學檢測原理,采樣精度±2%FS,重復性±1%FS,工作溫度-20~70℃,工作濕度10~95%RH(非凝結),適用于工業(yè)現(xiàn)場或?qū)嶒炇覉鼍爸?。并且該類傳感器具有模擬電壓和串口輸出特點,本系統(tǒng)中使用串口輸出,不用為此設計專門的數(shù)模轉(zhuǎn)換電路。并且該類傳感器采用本安電路設計,可帶電熱插拔操作,增加了系統(tǒng)的靈活性,有利于系統(tǒng)的拆裝和擴展。
空氣泵控制電路用于實現(xiàn)空氣泵的開關控制。其控制電路如圖3所示。其中繼電器選用SRD-05VDC,吸合電壓為5 V,光耦EL817C845對FPGA芯片與控制電路進行光電隔離,從而實現(xiàn)了對主控芯片進行保護,增強了主控芯片的穩(wěn)定性。
圖3 空氣泵控制電路
無線通訊方式可選用GPRS無線通訊模塊或無線串口模塊。GPRS模塊使用RS-232電平標準,而FPGA的I/O接口只支持LVTTL電平標準與LVCMOS電平標準。為解決FPGA與GPRS無線串口模塊的電平匹配問題,該系統(tǒng)使用MAXIM公司生產(chǎn)的MAX3232ESE芯片完成RS232信號的收發(fā)驅(qū)動,實現(xiàn)了電平匹配。無線串口模塊使用TTL電平標準則可直接與FPGA芯片連接實現(xiàn)電平匹配,通過FPGA內(nèi)部時序設計實現(xiàn)對無線串口模塊的收發(fā)控制。
FPGA軟件設計主要分為系統(tǒng)同步時鐘、通用異步收發(fā)器(Universal Asynchronous Receiver and Transmitter,UART)時序配置、DHT11驅(qū)動時序配置、指令解析、數(shù)據(jù)緩存處理模塊等??傮w框架設計如圖4所示。
圖4 FPGA設計總體框架
該系統(tǒng)硬件使用50 MHz的有源晶振,通過FPGA芯片的外圍I/O引腳將時鐘引入到芯片內(nèi)部。本系統(tǒng)中使用FPGA內(nèi)部的鎖相環(huán)(Phase Locked Loop,PLL)采用分頻的方法將50 MHz時鐘生成為25 MHz的時鐘。通過FPGA內(nèi)部的PLL生成的系統(tǒng)時鐘具有低抖動、低延遲的特點,保證了系統(tǒng)各模塊之間數(shù)據(jù)傳輸與處理的同步性,提高了時鐘的穩(wěn)定性[6-7]。同時運用時序約束的方法約束時鐘的占空比,建立時間,保持時間等,從而減小數(shù)據(jù)與時鐘之間的偏斜,避免了數(shù)據(jù)傳輸錯誤[8]。
本模塊由4個部分組成,分別為baud_gen_tx發(fā)送時鐘產(chǎn)生模塊、baud_gen_rx接收時鐘產(chǎn)生模塊、uart_tx發(fā)送控制模塊、uart_rx接收控制模塊。模塊框圖及數(shù)據(jù)流如圖5所示。
圖5 UART時序配置模塊框圖
該系統(tǒng)中,UART信號幀由10bit構成,其中包括1個起始位,8個數(shù)據(jù)位,1個停止位,串口速率9.6 kbps,TTL電平。其中div_en為數(shù)據(jù)發(fā)送使能信號,當需要發(fā)送數(shù)據(jù)時,將div_en信號置高一個時鐘周期,同時使tx_busy信號置高,按照baud_gen_tx信號周期開始傳輸數(shù)據(jù),當數(shù)據(jù)傳輸結束后,tx_busy信號置零。時序如圖6所示。因為UART為異步通訊模式,UART收發(fā)每一個數(shù)據(jù)的時間寬度需要以所設定的波特率進行計算,該系統(tǒng)中系統(tǒng)時鐘為25 MHz,系統(tǒng)時鐘周期為40 ns,當波特率為9 600 bit/s,每個數(shù)據(jù)的時間寬度則為(1*109/9 600)/40個系統(tǒng)時鐘周期[9]。
圖6 數(shù)據(jù)發(fā)送時序圖
當接收端口檢測到信號下降沿時,此刻將start_grx信號置高,因為數(shù)據(jù)信號邊沿存在亞穩(wěn)態(tài)與信號毛刺的現(xiàn)象,為了防止讀取數(shù)據(jù)準確,則選擇在每個波特率周期中心點對電平信號進行判讀,讀取完成后start_grx信號拉低,并產(chǎn)生dout_en信號輸出所讀數(shù)據(jù)。其時序如圖7所示。
圖7 數(shù)據(jù)接收時序圖
使用ModelSim仿真軟件對該模塊進行仿真測試。仿真結果如圖8所示。
圖8 UART時序仿真圖
DHT11溫濕度傳感器與主控芯片之間的通訊并不是標準的通訊協(xié)議,而是廠家自定義的一種通訊格式。DHT11的DATA引腳采用單總線的數(shù)據(jù)格式,一次通訊時間為4 ms左右,具體時序可參考DHT11時序圖[10]。總線空閑時保持高電平,F(xiàn)PGA先將總線電平拉低20 ms,再將總線拉高40 μs。此時將總線設置為輸入,DHT11將總線拉低80 μs再拉高80 μs作為相應信號,接下來開始傳輸40 bit數(shù)據(jù)。每bit數(shù)據(jù)傳輸時序為總線先拉低50 μs,再將總線拉高,總線拉高時間為26~28 μs時為數(shù)據(jù)0,總線拉高時間為70 μs時為數(shù)據(jù)1。
根據(jù)DHT11溫濕度傳感器工作時序使用verliog語言設計狀態(tài)機。系統(tǒng)上電后,該模塊處于st_power_wait狀態(tài),此狀態(tài)下需要等待一段時間用于DHT11溫濕度傳感器對傳感器參數(shù)進行初始化,所以在該狀態(tài)下設定等待10 μs進入IDLE狀態(tài)。在IDLE狀態(tài)下,當該模塊收到start信號時,啟動DHT11溫濕度傳感器,對大氣溫濕度進行測量。st_low_20 ms狀態(tài)下FPGA芯片將DATA總線電平拉低20 ms后進入下一狀態(tài)。st_high_40 μs狀態(tài)下FPGA芯片將DATA總線置高40 μs。st_rec_ack狀態(tài)下,總線由DHT11溫濕度傳感器控制,F(xiàn)PGA芯片等待檢測總線電平上升沿信號sda_pos,當檢測到sda_pos置高時則進入下一狀態(tài)。st_rec_data狀態(tài)下該模塊開始接收DHT11溫濕度傳感器發(fā)送來的40 bit數(shù)據(jù),當數(shù)據(jù)全部接收完畢后,進入IDLE狀態(tài)。狀態(tài)機設計如圖9所示。
圖9 DHT11狀態(tài)機設計圖
無線模塊將從上位機接收到的指令,以串口通訊的方式傳輸給FPGA主控芯片,F(xiàn)PGA內(nèi)部需要對接收到的指令進行緩存、判讀、解析與狀態(tài)更新。通過利用FPGA的內(nèi)部資源配置串口時序,在其時序下,將接收到的8 bit數(shù)據(jù)緩存到8 byte的移位寄存器中并不斷對移位寄存器中的8 byte數(shù)據(jù)進行判讀,判斷移位寄存器中的高2 byte與低2 byte是否符合預先設定的指令頭、指令尾的固定格式,如果符合則可將其存入RAM中等待下一步對命令進行解析。在命令解析過程中RAM的高16 bit為操作地址,低16 bit為操作指令。另外程序中專門設置了一塊8 bit的片上RAM用于記錄每次指令對各個傳感器的操作狀態(tài),每一位分別代表各個傳感器的工作狀態(tài),置一為工作,置零位停止。在對命令解析后,實時更新每個傳感器的工作狀態(tài)。
由于該系統(tǒng)為多通道的同步數(shù)據(jù)采集,每進行一次采集任務會產(chǎn)生大量的數(shù)據(jù)需要處理,同時FPGA與外部通信模塊之間存在硬件差異,會導致數(shù)據(jù)傳輸速度不匹配。因此,為了解決數(shù)據(jù)存儲與傳輸?shù)膶崟r性問題,該系統(tǒng)利用FPGA內(nèi)置的知識產(chǎn)權核(Intellectual Property core,IP)資源,調(diào)用FIFO核,對數(shù)據(jù)進行緩存。數(shù)據(jù)緩存處理過程如圖10所示。
圖10 數(shù)據(jù)緩存處理過程
在進行檢測時,每個智能氣體傳感器回傳18 byte采集數(shù)據(jù),PMSA003顆粒物傳感器回傳32 byte采集數(shù)據(jù),DHT11溫濕度傳感器傳回5 byte采集數(shù)據(jù),可分別將其采集到的信息存入各自通道預設好的RAM片上存儲器中,對采集到的數(shù)據(jù)進行緩存,并實時判讀RAM中存儲的數(shù)據(jù),例如傳感器的工作狀態(tài),檢測物種類,濃度值等。之后通過數(shù)據(jù)選通模塊與數(shù)據(jù)處理模塊將正常工作的傳感器采集到的信息數(shù)據(jù)進行重新編碼,按照通訊協(xié)議格式依次將數(shù)據(jù)存入FIFO中等待無線傳輸模塊將數(shù)據(jù)上傳。
搭建氣體檢測系統(tǒng),使用12 V 4800 mA聚合物鋰電池為供電電源,掛載6個智能氣體傳感器、1個PM2.5/10傳感器、1個溫濕度傳感器的情況下,通過上位機遠程控制對本系統(tǒng)的實際功能進行測試,測試時間為25 min。測試內(nèi)容為別為循環(huán)檢測時間間隔更改、各傳感器工作的狀態(tài)控制、傳感器數(shù)據(jù)采集通道的選擇性開閉。測試結果如表1所示。測試結果表明,本系統(tǒng)符合實際應用要求,滿足設計要求,系統(tǒng)穩(wěn)定性高,在簡化系統(tǒng)電路結構的同時可實現(xiàn)對大氣多參數(shù)的實時、準確、同步監(jiān)測。
表1 測試結果
針對傳統(tǒng)數(shù)據(jù)采集系統(tǒng)需要設計外圍擴展電路以及在數(shù)據(jù)傳輸存儲過程中不能有效地解決同時性和實時性的問題。本文采用Xilinx公司Spartan6系列的FPGA作為核心控制器件,發(fā)揮其并行處理能力和時序約束能力??刂茪怏w傳感器的數(shù)據(jù)傳輸,運用FPGA內(nèi)部資源,實現(xiàn)數(shù)據(jù)的采集緩存?zhèn)鬏數(shù)哪J?,完成了大氣多參?shù)的同步實時采集,存儲,處理,傳輸。增強了系統(tǒng)的可靠性,有效性和穩(wěn)定性。整套方案基于通用架構,并針對氣體傳感器多通道處理的特殊之處,使得整套系統(tǒng)同時具有針對性以及普適性。