楊 棟,江 虹,羅 穎,但璐瑤
(1.西南科技大學,四川綿陽 621000;2.攀枝花學院,四川攀枝花 617000)
隨著無人機技術的成熟和發(fā)展,目前無人機已應用于特殊環(huán)境的數據采集,包括溫度、濕度、氣體濃度檢測等方面[1]。由于高空環(huán)境的特殊性,無人機在特殊環(huán)境下的溫度采集存在采集誤差大、數據傳輸可靠性低、系統穩(wěn)定性差等問題[2],并且受到體積和質量等限制,采集設備必須滿足體積小、質量輕等要求。
FPGA(現場可編程門陣列)具有多路數據并行處理的優(yōu)勢,并且器件穩(wěn)定性高。因此,本文針對以上問題,設計以FPGA為主控芯片,配合多個功能模塊共同協作,實現對多路數據并行采集以及對K型熱電偶的冷端補償[3],并將采集數據組幀通過以太網接口模塊傳輸至上位機,上位機再對數據進行波形重構。該系統具有設備體積小、高精度、高可靠等特點,可應用于特殊環(huán)境下的K型熱電偶溫度采集,例如無人機在高空中對激光打靶的測試。
整體采集系統結構如圖1所示,由前端信號調理模塊、A/D轉換模塊、FPGA主控模塊、數據存儲模塊、以太網傳輸模塊以及上位機構成。
圖1 系統框圖
FPGA作為采集系統的主控模塊,具有高穩(wěn)定性和并行數據處理等優(yōu)點[4],其主要作用為:
(1)產生各模塊驅動時鐘。系統時鐘由YS0321SR有源晶振產生,FPGA通過內核PLL鎖相環(huán)分頻輸出各模塊需求時鐘。
(2)控制前端數據采集。16路傳感信號由Δ-Σ型ADC進行增益放大、濾波、模數轉換等操作,最后得到可供FPGA處理的數字信號。
(3)驅動存儲、傳輸模塊工作。將采集數據進行數字濾波、打包處理,以統一的數據包格式通過UDP協議發(fā)送給無人機。
由于數據采集系統具有多通道、高分辨率以及對熱電偶冷端補償等特點,為此選用ADS1248作為模數轉換芯片,其具有24位的垂直分辨率,有8個模擬輸入通道,內置可編程增益放大器(PGA),可實現至多128倍增益放大。
ADS1248芯片有7根引腳和FPGA進行命令交互與數據傳輸,包括SPI通信引腳以及相關接口引腳,測試時需根據DRDY引腳的電平信號來判定數據是否轉換完成。整體采樣狀態(tài)如圖2所示,芯片起始于IDLE狀態(tài),經過1 μs延時后,發(fā)送RESET命令(06h),確保上電后設備復位正常,接著對寄存器進行配置操作。MUX狀態(tài)為通道選擇,8個通道會被依次組合成4組差分輸入通道,組合完成后在SYNC狀態(tài)進行數據采集,當1組數據采集完成后DRDY引腳拉低,跳轉到下一組通道再進行數據采集,數據在RDATA態(tài)被讀出,需給足32個時鐘周期的時間。
圖2 ADC采集狀態(tài)圖
ADS1248芯片可設置采樣率為20 SPS、40 SPS、80 SPS、160 SPS、320 SPS、640 SPS、1 KSPS、2 KSPS。由于采集系統包傳輸間隔為25 Hz,沒有對應的采樣率,因此需精確控制convert的時間點,方案設計為:選擇合適的采樣率(轉換時間的4倍小于40 ms),在SYNC狀態(tài)時開始計數,當四通道數據轉換完成后,狀態(tài)鎖定在SYNC狀態(tài),計數至25 Hz周期時再繼續(xù)下一輪采樣。
在數據采集系統中,共有16路的傳感信號(10路熱電偶傳感器信號、5路光耦傳感器信號和1路溫度補償信號),16路信號使用4個ADC進行采集。由1 KSPS采樣率可得:1 h內產生的數據量為329.6 Mbit,因此選擇Nor Flash型存儲器W25Q512,其具有512 Mbit的存儲容量,262 144個可編程頁面,每個頁面可以存儲256字節(jié)數據,為了實現完整翻頁問題,設計上行數據包格式為128字節(jié),則2個包數據寫滿1頁,避免了在同一頁連續(xù)刷寫的問題。
FLASH與FPGA之間采用SPI通信,主控器模塊直接連接存儲設備的控制信號線:CLK、DIN、DOUT和CS。FPGA通過控制信號線,實現對Flash的寫數據操作和讀數據操作,控制器框圖如圖3所示。
圖3 Flash控制框圖
在FPGA的開發(fā)設計中,主設備控制模塊負責整理命令發(fā)向狀態(tài)流程控制模塊,并接收Flash讀寫地址等;狀態(tài)流程控制模塊對命令進行應答處理,并將數據信息發(fā)向數據讀寫控制模塊;讀寫控制模塊再根據讀寫時序與Flash芯片進行數據交互。數據緩存模塊用于緩存寫入或讀出Flash的數據,其中寫數據FIFO用于采集模塊寫入數據的緩存,讀數據FIFO用于讀出Flash的數據緩存[5],實現對下一模塊的穩(wěn)定寫入。Flash讀寫測試如圖4所示,圖4(a)表明CS片選信號拉低后,當檢測到寫Flash命令時,主設備控制模塊發(fā)出寫請求脈沖,并將數據寫入Flash;圖4(b)為Flash讀數據驗證,在檢測到讀Flash命令時,讀寫控制模塊將Flash中數據讀出。經對比寫入與讀出數據一致。
在數據采集完成后,FPGA將所有數據按照標準以太網幀格式打包發(fā)送給W5500芯片的片上緩存Buffer,再由W5500通過UDP協議發(fā)送至上位機。單包數據包含8 Byte包頭、80 Byte效應點陣數據、32 Byte狀態(tài)數據、4 Byte時間碼、2 Byte包計數碼、2 Byte校驗碼。W5500的數據收發(fā)流程如圖5所示。
(a)Flash寫入數據
(b)Flash讀出數據圖4 Flash數據讀寫功能驗證
圖5 UDP數據收發(fā)流程
圖5(a)為UDP協議的接收流程:FPGA讀取中斷寄存器Sn_IR的信息,若第3位拉高,表明接收到對方數據,則發(fā)送“RECV”命令?!敖邮兆x指針寄存器”Sn_RX_RD緩存了所要發(fā)送的數據量,SocketRxBuffer再根據接收讀指針寄存器的內容發(fā)送對應的數據個數。
圖5(b)為UDP協議的發(fā)送流程:FPGA從“發(fā)送寫指針寄存器”Sn_TX_WR中獲取所要發(fā)送的數據個數,在“SEND”命令發(fā)送后,檢測中斷寄存器Sn_IR第5位的信息,若該位拉高則表明數據發(fā)送完成。具體的包傳輸由第4節(jié)驗證。
在無人機高空作業(yè)時,由于采集器中K型熱電偶傳感器冷端不為0 ℃,會造成兩端電勢差減小,使轉換的溫度值也產生誤差,因此,需對熱電偶作冷端補償。
設計使用ADS1248模數芯片的三線式RTD(resistance temperature detector)應用電路作冷端補償,分別由2個IDIC電流源實現。IDIC1電流源為RTD元件提供激勵,IDIC2電流源具有相同的電流設置,通過在電阻上產生相等的電壓降來消除導線電阻[6]。并且RTD兩端的電壓是在模數轉換器引腳上差分測量的,因此導線電阻兩端的電壓會相互抵消,減小了測量誤差。參考電平將RTD信號轉換到模數轉換器指定的共模輸入范圍內,再通過多路選擇器選擇雙通道差分輸入ADC進行轉換,ADS1248的熱電偶測量系統如圖6所示。
圖6 熱電偶測量系統
考慮在FPGA內部作算法會消耗大量的邏輯資源,因此溫度補償交由上位機實現。計算時先由A/D轉換模塊測量出RTD的電壓值:
V=2.5T/256/H
(1)
式中:V為電壓,mV;T為轉換的3字節(jié)十進制數;H為0x7fffff。
由于激勵電流為1 mA,即冷端測量電阻值等于電壓值。再根據電阻值得到冷端實際溫度:
t=AR3+BR2+CR+D
(2)
式中:A=-2.667 1×10-5;B=0.009 3;C=1.497 4;
D=-216.29。
再將冷端溫度轉換為實際電壓值:
(1)當t∈(-270 ℃,0 ℃)時:
(3)
(2)當t∈(0 ℃,1 370 ℃)時:
(4)
式中:a0、a1、a2、a3、Ci為冷端電壓轉換系數;t為冷端實際轉換溫度;E為冷端電壓值。
最后利用K型熱電偶采集電壓值加上冷端電壓值通過式(5)得出實際溫度值。
T=b0+b1x+b2x2+…+bnxn
(5)
式中:T為所需的實際溫度值;x為熱電偶電壓值加上冷端電壓值;b0,…,bn為K型熱電偶溫度轉換系數。
首先對采集系統的數據傳輸可靠性作測試驗證,其中wireshark抓包數據如圖7所示。
由包傳輸間隔可以驗證系統的采樣率為25 Hz,單包數據量為128字節(jié),其中包頭為42 4a 00 14,后面為傳感器采樣數據以及包計數碼等。
圖7 wireshark抓包數據
采集系統上位機測試主要關注多通道間的轉換誤差、數據的轉換精度以及冷端補償后的實際溫度[7]。本次實驗信號源選擇fluke 5522A產生25.5 mV的直流信號經由熱電偶2通道采集。測試結果表明:冷端Pt100測量溫度為16.93 ℃,K型熱電偶未加冷端補償溫度為606.17 ℃,加入冷端補償后溫度為622.05 ℃,溫度大于400 ℃時,測量誤差在%1t以內,滿足系統指標,測試結果如圖8(a)所示。為驗證系統對交流信號的采集可靠性,信號源輸入10 mV、0.1 Hz交流信號,采集結果如圖8(b)所示。
(a)直流信號輸入
(b)交流信號輸入圖8 上位機界面
系統選取3個通道25 mV直流分量輸入,采集結果如圖9所示。整體數據落在25.02 mV與25.10 mV之間,ADC轉換值為3個字節(jié)數據,經計算得出各通道間誤差小于0.1%,數據轉換誤差小于0.4%。
圖9 直流分量采集
針對無人機上行鏈路采集系統可靠性差、熱電偶測量誤差大等問題,本文以FPGA作為主控芯片,設計了多個功能模塊對多路傳感信號進行采集、存儲、傳輸。模塊之間通過FIFO實現多bit數據跨時鐘域可靠傳輸,保證了系統的可靠性,并通過對K型熱電偶的冷端作溫度補償,以此來減小測量誤差。經測試,系統通道間誤差以及冷端補償誤差均滿足指標要求。本系統不僅可以應用于無人機在特殊環(huán)境下的溫度數據采集,還可以應用于其他相關領域的數據采集中,具有一定的應用價值。