韓 璐,宗 群
(天津大學 電氣與自動化工程學院,天津 300072)
基于FPGA的數字高度計開發*
韓 璐,宗 群
(天津大學 電氣與自動化工程學院,天津 300072)
針對聲納高度計、全球定位系統(GPS)和氣壓高度計的高度定位應用,開發了一種基于現場可編程門陣列(FPGA)的數字高度計,具有成本低、速度快、功耗小的特點。FPGA完成聲納高度計、GPS和氣壓高度計的數據采集,高度信息處理,氣壓高度計溫度補償及串口輸出等工作。對高度計的誤差來源進行分析,重點對氣壓高度計的溫度漂移現象進行了補償修正。為了驗證設計效果,對數字高度計進行了測試,測試結果表明:高度計在進行誤差補償后,在低空范圍內誤差為0.1 m左右,高空范圍內誤差為2~3 m,可用于普通導航領域。
聲納高度計;氣壓高度計;全球定位系統;溫度補償;現場可編程門陣列
隨著科技的迅速發展和社會的需要,高度計的使用越來越廣泛,出現了全球定位系統(GPS)高度計、氣壓高度計等。高度計作為飛行器中重要的傳感器,對飛行器的飛行安全和控制具有十分關鍵的作用[1]。傳統的高度計如GPS高度計等因為自身的限制,在有障礙物或者天氣變化劇烈的情況下難以滿足飛行器的要求,而傳統的氣壓高度計因為其結構復雜,體積龐大,測量精度低,功耗大[2],也難以滿足飛行器的要求。因此,設計穩定性好、適應性強的數字高度計變得十分迫切。
本文開發了一種新型的數字高度計,具有高精度、性能穩定、可靠性強的特點。
1.1 系統構成
如圖1所示,數字高度計主要由高度傳感器模塊,微處理器模塊,顯示與輸出模塊和電源模塊4個部分組成。

圖1 系統結構框圖Fig 1 Structure block diagram of system
傳感器模塊輸出當前的衛星測量高度信息,氣壓測量高度信息以及聲納測量高度信息;電源模塊用于提供整個系統的供電;顯示輸出模塊能夠實時顯示當前的高度信息和完成對數據的串口輸出;微處理器FPGA完成對傳感器數據的采集處理,并輸出顯示。
1.2 傳感器模塊
傳感器模塊由氣壓高度計、聲納高度計、GPS組成。
氣壓高度計是基于大氣壓與高度之間的關系的原理來測量高度的,選用芬蘭VTI公司的SCP1000—D01數字式壓力傳感器進行測量。SCP1000—D01的分辨率可達亞米級別,測量誤差能夠在1 m左右。其輸出接口為SPI接口,芯片在內部時鐘驅動下工作,無需外接時鐘[3]。本設計中SCP1000—D01芯片選取在高速測量模式下工作,其輸出數據更新率可以達到9 Hz。
聲納高度計選用國外進口原裝的SRF08,其測量范圍為3~6 m,測量精度為1 cm,具有使用方便、精度高的優點。SRF08供電電壓為5 V,正常工作時典型功耗為150 mW;其輸出數據為數字量,通過I2C總線接口與處理器FPGA進行通信。
GPS選用芬蘭Fastrax公司的UP500GPS接收機模塊。UP500是Fastrax公司的一種主流產品,UP500信息默認更新率為1 Hz,定位精度為1.8 m,速度精度為0.1 m/s。UP500是一種性價比極高的功耗低、精度高、安裝方便的OEM GPS接收機。
1.3 微處理器
采用FPGA作為微處理器,芯片選用Altera公司Cyclone系列的EP1C3T144C8,該芯片具有2 910個邏輯單元,能夠滿足開發的組合高度計的變成需要。FPGA通過SPI,I2C與RS—232總線接口采集傳感器的數據后,對數據進行數字濾波處理,再將數據進行FIFO緩存,最后計算得到高度信息并且將高度信息顯示到LED四段數碼管上。
1.4 顯示輸出模塊
該模塊包括LED四段數碼管顯示和串口輸出。采用數碼管實時顯示當前的高度信息,顯示范圍為0~999 m。串口輸出部分將采集得到的傳感器數據通過串口傳到PC上,便于數字高度計的測試和校正工作。
2.1 氣壓高度計測量原理
氣壓高度計是根據大氣壓強隨高度變化而變化的原理而制成的。根據國際標準大氣,可以建立在-2 000~11 000 m高度范圍內海拔高度和對應高度上大氣壓強pH之間的關系[3],具體如下
(1)
式中R=287.052 87 m2/(K·s2),為空氣專用氣體常數;gn=9.806 65 m·s-2,為自由落體重力加速度;β為溫度垂直變化率(β=dT/dH);T0,H0和p0為國際標準大氣給出的高度分層中相應層的大氣溫度、標準氣壓高度和大氣壓力的下限值[4]。
在0~999 m的范圍內,根據標準大氣規定可以取相關參數:T0=288.15 K,β=-6.50 K·km-1,p0=101.325 Pa,H0=0,帶入公式(1),可以得到該高度范圍內的氣壓高度公式為
(2)
在理想大氣條件下,得到的高度基本等于真實高度[5]。但是在實際的大氣條件下,載體所處的位置很難符合標準大氣的各項要求,因此,需要進行氣壓高度計的溫度補償。本文采用利用已知高度點溫度、壓力數據對待測的氣壓高度計的測量值進行修正,這樣能夠部分消除外界條件造成的誤差[6],所得高度和實際高度更加相近。
本文使用的基于已知點高度的溫度補償算法如下:


(3)
同時,可由式(1)得到


(4)
又因M,N點的溫度關系滿足
T0=Tm-βHm=Tn-βHn.
(5)
將式(5)帶入式(4),可得
(6)
2.2 聲納高度計測量原理
聲納是根據聲波的傳播來測量距離,高度計中只做短距離低空測量[8]。實際應用中,在無人機等起飛過程中需要高精度的高度測量,使用聲納在起飛短距離階段具有良好的效果。
2.3 各模塊數據采集
1)聲納高度計數據采集
聲納高度計的輸出接口是標準的I2C接口,對于FPGA中I2C總線的實現,具體采用狀態機的方法來實現。狀態機就是把程序分成很多個狀態,每一個狀態的執行要看上一個狀態的執行結果和輸入信號。
FPGA主機通過I2C總線從聲納高度計讀取數據的步驟如下:FPGA首先向從機發送器件地址(SRF08地址為0XE0),在得到器件的應答后,FPGA繼續向從機發送控制字,使從機開始工作,然后再向從機發送器件地址和寄存器地址,從而該寄存器里讀取傳感器數據。
2)GPS數據采集
GPS接收機UP500的輸出為數字信號,通過標準的RS—232串口與FPGA進行通信。UP500上電后,必須進行初始化,包括設置波特率、數據更新頻率和數據輸出格式等;模塊初始化完成后,FPGA就可以通過串口提取UP500模塊的數據,UP500的數據格式默認為NMEA0183格式,為了得到正確的高度信息參數,處理器還需要對該格式進行數據解析,提取出高度信息。
3)氣壓高度計數據采集
氣壓高度計SCP1000—D01的輸出接口為SPI接口。SCP1000—D01剛上電后的60 ms之內,不能對傳感器進行讀取操作,因為傳感器本身需要對自身進行初始配置完成線性化和狀態檢測。SCP1000—D01有4種工作模式,本系統選擇高精度測量模式[9]。上電初始化完成以后,FPGA對控制寄存器發送控制字選擇測量模式,然后開始發送數據寄存器地址,完成對氣壓高度計數據的讀取。
2.4 軟件主流程
無人直升機在起飛、降落以及低空飛行時,要求高精度的距離信息,而GPS/氣壓高度計組合導航系統的高度信息精度一般在m級,無法滿足要求。本設計中,在低空范圍內,系統識別后采用聲納高度計的高度信息作為唯一的高度輸出,用來測量與地面的距離信息。由于GPS接收機的信號被遮擋后容易丟失,在GPS無效的短暫時間內,加入了氣壓高度計傳感器,它可以為直升機提供GPS無效階段期間的高度信息。聲納高度計測量范圍是有限的,超出其測量范圍會輸出一個固定值FFFF,因此,可以通過判斷聲納輸出值是否有效來判斷何時使用該信息,而GPS輸出無效時輸出為一重復錯誤值,可通過與氣壓高度計的值重復比較來判斷其是否失效。組合數字高度計的高度信息顯示如圖2所示。

圖2 數字高度計高度信息顯示Fig 2 Digital altimeter height information display
在實際實現中,FPGA的設計采用VHDL硬件描述語言進行軟件編程。FPGA數據處理單元是整個組合數字高度計的運算核心部分,它包括3個功能模塊,即串口連接模塊、數據處理模塊、顯示模塊。
串口控制模塊主要實現FPGA和控制端口的連接,模塊通過設置內部工作寄存器來控制它的工作狀態。
數據處理模塊主要分為模式切換和數據處理部分。模式切換主要應對在不同高度和不同狀況下,各高度傳感器的工作狀態和工作方式,以此來實現在各種情況下均能有效輸出高度信息的目的。數據處理主要是利用FPGA的數據處理能力對得到的傳感器信息進行數據信息處理,去除冗余信息,得到所需要的準確的高度信息。
顯示模塊主要完成高度信息的實時顯示。
為了驗證開發系統的有效性,按照設計的流程制作出了實物系統,并進行了測試。選取實驗室樓作為數字高度計測量的對象,實驗室樓每一層的高度大約為3.8~4 m。測量距離從實驗樓3~6樓的高度,測得的結果如圖3。

圖3 測高與時間曲線Fig 3 Height measurement vs times curve
可以知道,在室內情況下,GPS是無法工作的,根據設計流程,此時主要以氣壓高度計工作為主,從圖3的結果可以看出:在第三層樓的海拔是13.2 m,第六層為25 m,三層樓高11.8 m,與三層樓高相吻合,從圖上也可以看出每一層樓的高度也基本是相同的。
而從圖4可以看出:在室外情況下GPS能夠正常工作,此時氣壓高度計被屏蔽掉,對某一地點采取重復測量的方式求取誤差,可以看出:GPS的誤差在2 m左右,最高不超過4 m。

圖4 GPS測高誤差Fig 4 GPS height measurement error
對于聲納高度計來說,其主要針對超低空情況下飛行器起飛情況,因此,可以單獨測量得到精度信息。經測試,聲納高度計的分辨率為1 cm,當其位置變化1 cm時,傳感器數據會相應發生變化,而當小于1 cm時,數據不會發生變化。實驗中,采用精密的標尺,每變化1 cm,聲納高度計的輸出也為1 cm,其誤差很小,幾乎為0。
本文開發了一種基于FPGA的數字高度計,并從器件選擇、硬件設計和軟件設計上進行了詳細的闡述和研究。為了驗證開發方案的可行性,對數字高度計實物進行了測試。初步試驗結果表明:數字高度計開發方案是可行的,且經過氣壓高度計溫度補償后數字高度計的誤差可達到3 m以內,在室內和室外條件下均可以使用,實現了可靠性強、性能穩定、高精度的數字高度計設計。
[1] 王秀琳,曹云峰.基于單片機的微型飛行器高度計[J].傳感器與微系統,2006,25(5):64-66.
[2] 史利劍.無人駕駛飛機大氣數據計算機系統的研究[M].西安:西北工業大學出版社,2001.
[3] 姚 怡,黃智剛,李 銳.便攜式氣壓高度計研制及誤差修正技術[J].遙測遙控,2009,30(6):48-51.
[4] 嚴家明,張宏濤.基于FPGA的無人機氣壓高度測量系統的設計[J].傳感技術學報,2007,20(3):707-710.
[5] 劉歌群,劉衛國,盧京潮.利用GPS校準、帶 溫度補償的無人機氣壓高度測量[J].電子測量與儀器學報,2004(Z2):1161-1165.
[6] 高善清,魏新亮.氣壓測高誤差分析及修正[J].電子測量技術,2012,35(9):60-63.
[7] 李 銳,姚 怡.車載便攜式氣壓高度計的設計[J].微計算機應用,2010,31(4):43-47.
[8] 李洪輝,裴海龍.無人直升機高度測量的設計與實現[J].自動化與儀表,2012(7):11-15.
[9] 沈宗月,曹云峰.基于SCP1000—D01的氣壓計的設計[J].國外電子元器件,2007(8):49-51.
Development of digital altimeter based on FPGA*
HAN Lu,ZONG Qun
(School of Electrical and Automation Engineering,Tianjin University,Tianjin 300072,China)
Aiming at height location application of sonar altimeter,GPS and barometric altimeter,a kind of digital altimeter based on FPGA is developed,which has advantage of low cost,fast speed,low power consumption.FPGA is responsible for completion of sonar altimeter,GPS and barometric altimeter data acquisition,height information processing,barometric altimeter temperature compensation,and serial port output.After analyzing barometric altimeter error sources,compensation and correction of temperature drift of barometric altimeter are emphasized on. In order to verify design effect,the digital altimeter is tested,and test results show that the precision of digital altimeter in a low range can reach 0.1 m or so,for high altitude range error is 2~3 m after error compensation,which can be used for general navigation field.
sonar altimeter; barometric altimeter; GPS;temperature compensation;FPGA
10.13873/J.1000—9787(2014)10—0080—03
2014—03—12
國家自然科學基金資助項目(91016018);天津市基礎研究重點項目(11JCZDJC25100)
TP 274
A
1000—9787(2014)10—0080—03
韓 璐(1991-),男,安徽阜陽人,碩士研究生,從事組合導航研究工作。