王 特,李 杰,胡陳君,趙計賀,薛 棟
(1.中北大學 電子測試技術重點實驗室,太原 030051;2.蘇州中盛納米科技有限公司,江蘇 蘇州 215123)
煤炭產業一直是我國社會生產和經濟發展重要物質保障,由于近些年的不斷開采,容易開采的淺層礦層已經接近枯竭,只能向更深的礦層開采,而伴隨著開采深度的增加,危險源也隨之到來,如甲烷氣體,礦層坍塌等[1-2]。為保障煤下的人員安全,一套可靠的礦下環境監測顯得尤為重要。而現如今我國的礦下的監測系統還存在采集傳感器接口單一,擴展性能差,系統和分站之間布設電纜不易維護,采集系統分析處理大量數據所需時間長等問題,這些問題可能導致礦下安全監測中心不能及時地獲取可靠的信息,影響人們的生命和財產安全[3-4]。
針對以往的礦用傳感器采集系統存在的問題,設計了一款基于FPGA的傳感器采集傳輸系統,相比于使用ARM或單片機來進行控制,數據吞吐率更快、實時性更好、接口數量更多且易于實現。本設計相比其他以FPGA為控制核心的采集系統通道數量更多,采樣精度更高,能夠滿足目前對采集系統的要求。
采集系統設計的目標主要是為實現對于多通道、模擬量和數字量輸出的傳感器進行同步的采集和存儲。系統構成部分包括電源模塊、信號調理模塊、模數轉換模塊、FPGA控制模塊、無線傳輸模塊等部分構成個部分,系統總體框架如圖1所示,主要設計參數如表1所示。

圖1 系統總體框圖

表1 信號主要設計參數表
系統的主要設計思路是首先對模擬輸出的傳感器信號進行適當的調理,如放大濾波等[5-6],然后 FPGA通過控制具有16 bit的高精度模數轉換芯片AD7616對于4路的模擬信號進行采樣,并將其轉換為數字量。同時將4路輸出數字量的傳感器通過相應的轉換輸入到控制芯片中,以實現同步采樣。最后FPGA將采集到的數據進行相應的編幀,然后發送到無線傳輸模塊或存儲到備份存儲模塊中。同時FPGA將采到的傳感器數據進行判別,程序中設定每種傳感器的閾值當采集到的傳感器數據達到各自設定的閾值時,控制聲光報警器開始報警。
硬件是整個前段采集系統的核心,對于礦下采集系統而言確保采集到的信號的完整性和準確性,以及將采集到的數據及時處理并發送到控制中心非常關鍵。同時由于礦下環境監測傳感器種類較多,輸出類型也有所差別,因此兼容性在設計時也應該考慮到。
電源模塊是保證系統正常工作的基礎,電源的質量直接影響系統的精度,針對電源可能存在的不能響應負載電流的快速變化及供電路徑阻抗引起的電壓波動問題,采用電源去耦來解決這一問題[7-8]。去耦電容提供了一條低阻抗回路使高頻分量從地釋放,從而減弱電源系統噪聲對其供電器件的影響。考慮到有時模擬供電和數字供電可能由不同芯片提供,為防止相互干擾將模擬供電和數字供電用0歐電阻單點相接。采集部分電壓轉換模塊如圖2所示。

圖2 電壓轉換模塊
對于AD7616而言,為滿足A/D芯片的精度要求,供電噪聲一定要小于其最低有效位,計算公式為:
(1)
其中:LSB為A/D芯片的最低有效位,FS為A/D的輸入電壓最大值5 V,N為A/D的位數,經計算AD7616最低有效位大小為152 μV。電壓轉換模塊采用REG104-5芯片,輸出噪聲峰-峰值小于33 μV,噪聲遠小于LSB的值,滿足A/D芯片的供電要求。
在設計采集系統時,信號調理模塊的主要是根據系統對于模擬信號的要求,將模擬信號進行放大、濾波,同時隔離被測信號和采集電路的地線。通過隔離電路將電路的前后級地線相互隔離,保證采集電路安全,還可以用來增強輸入信號的驅動能力[10-11]。此外,模擬輸出的傳感器有效信號的頻率一般集中在1 kHz以下,因此采用濾波器將輸出信號集中在所需頻段。
基于以上要求,運放采用OP4177ARUZ作為調理前段的運放。由于模擬信號的輸出電壓在-5~5 V之間,滿足AD的輸入電壓范圍,因此采用電壓跟隨方式。濾波器采用MAX291,作為集成的八階巴特沃斯濾波器,通過電容來調節信號的輸出頻率。
數模轉換模塊的作用是將傳感器輸出的模擬信號轉換為可被處理器接收的數字信號[12]。為滿足設計的需要,最終選用AD7616為模數轉換芯片,它是一款可以進行16個通道同步采樣的高精度模數轉換芯片。為防止信號輸入端產生反射,造成采到的傳感器噪聲過大,因此需要阻抗匹配。計算阻抗的公式為:
(2)
其中:VDD為供電電壓5 V,Ripple為供電電壓波動范圍的上限10%,ΔIMAX為最大工作電流65 mA,得到阻抗為7.692 Ω。為避免通道間的失調誤差,同時將輸入電流限制在規定的范圍內。

圖3 前端調理電路
控制模塊由FPGA與外圍電路組成,主要功能是控制ADC的采樣、還要控制數字量輸出傳感器的采集,并將相應的的數據進行編幀處理后發送給無線傳輸模塊或存儲到備份存儲模塊無線傳輸模塊主要是由ZigBee無線通信模塊構成,采用MESH網絡結構,支持多跳轉發,為實現在礦下的無線傳輸在兩采集模塊或網關模塊和采集模塊之間加入若干路由節點,從而實現數據的多級轉發。當信號某一傳輸路徑損壞時,會自動尋找新的路徑實現信息傳輸。
主控芯片采用FPGA是由于其工作穩定性好,擁有豐富的門陣列資源,非常適合進行復雜的邏輯控制,有豐富的I/O口資源,系統擴展性好,滿足多通信接口的需要。選用ZigBee進行無線網絡通信是由于礦井下巷道錯綜復雜,監測點數量如果增多,鋪設線纜和維護時成本太高,采用ZigBee無線傳輸模塊低成本、低功耗、延時短和安全性高。
采集系統的軟件設計主要是針對FPGA編寫控制程序,其中主要包括了采集控制程序、FIFO緩存程序、數據分析與預警程序和無線模塊數據交互等部分。采集控制程序主要是FPGA控制AD進行模擬信號的轉換和數字信息的采集。
FIFO緩存程序是應對不同時鐘的信號過來之后的時鐘域轉換問題。而數據分析與預警程序是將采集到的數據與設定的每個傳感器閾值對比,控制聲光報警器實現危險報警。FPGA與無線模塊數據交互是通過使用I/O口資源實現串口功能,通過串口將傳感器整合后的數據傳輸到無線模塊。
為了節省FPGA的I/O口的數量,減少對PCB板布局的影響,避免并行總線可能產生的串擾和反射,本文采用串行工作模式,時序如圖4所示。為提高吞吐率,AD工作在軟件串行接口2線模式下,此時V0A到V7A通道的轉換結果從SDOA引腳輸出,V0B到V7B通道的轉換結果從SDOB引腳輸出。

圖4 AD工作時序圖
當轉換信號從低電平變為高電平時,啟動對輸入模擬信號的轉換。BUSY信號為高電平表示轉換正在進行,BUSY信號從高電平變為低電平表示轉換已完成,可以通過串行接口回讀轉換結果。為使數據輸出線路SDOA和SDOB脫離三態CS必須為下降沿,此時轉換后的最高有效位開始輸出。時鐘的上升沿時將隨后的數據位逐個發到串行數據輸出口。
AD轉換程序流程如圖5所示。頂層程序定義了FPGA與AD模塊之間信號的輸出和輸入。

圖5 模擬量轉換流程圖
當系統上電時,FPGA控制復位引腳完成對AD7616的初始化,然后發送啟動轉換的信號。當轉換完成后BUSY變為低電平時,開始進行數據的讀取,此時片選信號CS置低。在讀取數據有效的時候將16通道的數據讀到內部緩存中,此時一次的轉換完成。這樣不斷循環實現模擬量的采集。
對于數字量輸出的傳感器,它一般為UART串口輸出。對于普通串口輸出的傳感器,它的接口電平為LVTTL電平,對于這種類型的接口,可以直接通過IO接口讀入FPGA中。對于輸出接口是RS422或者RS232的傳感器而言,就需要先將422或者232轉換為LVTTL電平,然后傳輸到FPGA中。FPGA對讀取到的數據進行編幀然后緩存到FIFO中。對于外部通過IO口接入FPGA的信號,一般對其先進行消抖處理,去除毛刺的干擾。
為解決跨時鐘域的數據傳輸和不同位寬的數據匹配問題,本文采用在FPGA內部搭建FIFO緩存模塊來解決這個問題。本文的FIFO模塊共有3種,一種是對于模擬量通過AD轉換過后,用于暫時存放轉換過后整合的32位數據。還有對于數字信號經過相應處理后通過IO口輸入數據,這個8位的數字量也要存入一個FIFO中。最后這個FIFO是用于實現FPGA到FLASH的接口轉換功能。
模擬信號的采集速率往往大于數字量信號,為實現對輸入輸出數據速率和位寬匹配的要求,本文通過對FIFO模塊讀寫操作來控制,進而達到實時、高速采集的采集信號,保證數據的完整性。
為方便之后對數據的判讀和處理,采用編幀方式來編碼數據。將不同傳感器的信息采用固定的幀格式編為一幀數據,以采樣率高的模擬量傳感器為基準,同時加上特定的幀頭“EB 90”方便對于數據讀取后的分析。數據編幀格式如表2所述。

表2 編幀格式
幀頭是為方便接收端在接收到數據后進行準確性的判斷。幀計數是確保在讀取數據后判斷與前一幀數據是否連貫,保證數據的連續性。傳感器數據包括模擬量輸出和數字量輸出兩種,前面32字節為模擬量傳感器輸出,后面4字節為數字量傳感器輸出。最后考慮到數據的傳輸和處理,在幀尾加上校驗和,即前面所有數據和的低八位,如果處理時發現校驗和錯誤,就丟棄此幀數據。
預警程序主要是控制聲光報警器,在檢測到有危險時及時有效地提醒井下工作人員的目的,主要滿足燈光和響度的要求,報警燈光要在井下20 m內清晰可見,而響度要求不低于80 db。程序在設計時考慮到井下環境的復雜性,將危險等級分為兩級,當井下處于安全環境時,亮綠燈,蜂鳴器和紅燈均不工作;當采到的傳感器數據處于第一個閾值時,輕度危險報警,綠燈亮蜂鳴器開始報警;當采集到的傳感器到達第二閾值時,嚴重危險報警開始,蜂鳴器和紅色LED燈都工作,綠燈不工作,同時向控制中心開始發送報警信息。與無線模塊交互程序是通過FPGA的I/O接口將處理后的傳感器數據編幀處理后發送到無線模塊,同時接受無線模塊發送的相關指令,并將其存儲到外部設備中。
為驗證所寫程序的準確性和系統工作的可靠性,在ISE中對AD7616轉換程序進行編寫、調試和仿真。為驗證系統能否實現對于模擬信號和數字信號的同步采集,將系統安裝在三軸轉臺上轉動一定的角度檢測采集到的數據完整性和準確性。最后進行ZigBee模塊的無障礙距離與采集到的傳感器精度測試。圖6為AD7616的時序仿真,由chipscope的時序仿真確定AD轉換程序的準確性。

圖6 AD轉換時序仿真
由圖6可以看出,在AD串行輸出的模式下,當轉換信號convst_OBUF來臨后,片選信號CS_n置地。當遇到時鐘SCLK的上升沿時,計數器rx_numA開始計數,同時移位寄存器reve_dataA在每個時鐘上升沿后左移一位,當經過十六時鐘后得到一個16位轉換后的值,然后將datacheckA輸入到FIFO之中,此時完成一個通道的轉換。當連續的64個時鐘之后,一次轉換完成。
對于最終的實物而言,系統時序上連續性與準確性,以及采集傳感器的精度是必須要檢驗的參數。為驗證系統對于模擬信號和數字信號采集的同步性,通過在三軸轉臺上采集數字量輸出的傳感器和模擬量輸出的傳感器來判讀采集到數據的判讀。采樣率調整為1 K,將采集到的數據經過分離和處理,得到數據如圖7所示。

圖7 傳感器輸出測試
通過采集模擬量和數字量輸出的加速度計的連續采樣,證實了系統在模擬與數字量采集上的時序上的同步性和連續性,對比設定的位置與采集到的加速度信息,可以證明系統能準確的采集到傳感器的輸出信號。同時為保證采集到的的傳感器精度符合要求,對采集電路的精度進行測試,測試結果如圖8所示。
圖8為系統采集高精度電源輸出的2 V電壓,其采集誤

圖8 采集系統精度測試
差為400 μV,可以滿足被采傳感器的精度要求。對ZigBee無線網絡的接受和發送距離測試采用有障礙和無障礙測試,有障礙測試是在教學樓樓道中進行,測試結果表3所示,以下都是測得6組后取得的平均值。

表3 ZigBee接收有無障礙對比
根據測試結果顯示,在空曠無障礙區域,兩個ZigBee模塊可以再200 m以內正常通信,無丟數現象。而在有障礙的情況下,兩模塊之間在50 m內能正常通信,大于50 m逐漸出現丟包現象。所以根據煤礦井下情況的不同,合理布置ZigBee通信節點以達到降低數據丟失的目的,來提高數據傳輸的準確性和可靠性。
本文首先介紹了系統的設計目的,隨后介紹了采集電路的總體設計思路,詳細闡述了系統的硬件電路設計和FPGA的軟件程序設計,并且通過程序仿真和實物驗證充分證明了設計的可行性和穩定性。設計中采用FPGA為主控芯片使得系統的擴展性得到提高,處理數據能力更強,避免數據的冗余,增強了井下環境監測系統的可靠性。同時該電路具有非常靈活的移植性,適用于各種高精度和多通道的數據采集環境,包括彈載數據采集,大棚溫控等諸多測控領域。