1.引言
無人機的高度測量傳統(tǒng)上一直采用靜壓傳感器作為感知手段,通過其壓差膜盒對大氣靜壓的感應(yīng),將大氣壓力轉(zhuǎn)化為模擬信號輸出,從而計算出實際的高度值[1]。由于大氣壓力的變化除了與高度變化緊密聯(lián)系外,與本地的實際溫度也密切相關(guān),但是大部分靜壓傳感器在設(shè)計時并未考慮到實際溫度對大氣壓力的影響,這就造成了實際輸出靜壓值與真實值之間的大幅度偏差,從而影響了高度的精確計算[2]。
本文針對上述不足,提出了使用帶有溫度補償和校準系數(shù)的高靈敏度靜壓傳感器MS5534B作為無人機高度測量的傳感器件,同時考慮到無人機飛控處理器運算能力不足的實際情況,提出一種分段擬合曲線的線性算法,以較高的精度實現(xiàn)了無人機的高度計算。
2.系統(tǒng)硬件設(shè)計
2.1 MS5534B的特性
MS5534B是一種低電壓、低功耗、高精度的測壓力模塊,其中包含一個壓阻式壓力傳感器和一個15bit的ADC集成模塊,具有數(shù)字輸出功能,它可以提供16位的氣壓和溫度數(shù)字信息,壓力測量范圍10~1100mbar,分辨率為0.1mbar。另外,傳感器有六個軟件校準系數(shù),壓力絕對精度為+/-1.5mbar,相對精度為+/-0.5mbar,并且不需再接其他外圍模塊,接口簡單,電路連接方便。該模塊尺寸很小,平面尺寸為9mmX9mm,厚度僅為3.7mm,可以在-40°C
到 +125°C環(huán)境中應(yīng)用[3]。模塊的內(nèi)部結(jié)構(gòu)圖如圖1所示。
圖1 模塊內(nèi)部結(jié)構(gòu)圖
2.2 系統(tǒng)組成及接口連接
基于MS5534B的高度傳感器系統(tǒng)主要有兩部分組成:(1)MS5534B氣壓數(shù)據(jù)采集單元;(2)ARM7微處理器單元。MS5534B的主要功能就是把壓阻壓力傳感器測得的未經(jīng)補償?shù)臍鈮耗M電壓輸出量轉(zhuǎn)化為16位數(shù)字的絕對氣壓值D1,同時輸出16位的絕對溫度值D2。在飛控系統(tǒng)中采用了32位微處理器內(nèi)核的ARM7,由于其快速的運算速度和豐富的外圍接口資源,所以將MS5534B直接通過標準的SPI接口與其相連,簡化了電路設(shè)計,提高了實時性。
ARM7微處理器與氣壓傳感器間的通信通過標準SPI接口完成[4]。DOUT、DIN分別是數(shù)字輸出、輸入引腳,SCLK為串行數(shù)據(jù)時鐘,MCLK為主頻32.768kHZ的系統(tǒng)時鐘,由微處理器提供。MS5534B數(shù)字輸出的參考電壓是3V供電電壓,外接的4.7uF鉭電容應(yīng)盡量靠近MS5534B,以保證數(shù)據(jù)轉(zhuǎn)換時的供電穩(wěn)定和轉(zhuǎn)換精度。模塊實物和引腳分布圖如圖2所示。
3.系統(tǒng)軟件設(shè)計
3.1 系統(tǒng)軟件設(shè)計流程
每個MS5534B在出廠時都有一個針對模塊特有的四個Word校準數(shù)據(jù),儲存在64位的PROM中。ARM7微處理器在初始化以后通過串口從MS5534B中讀出Word1~Word4,然后運用邏輯移位操作方式轉(zhuǎn)化為6個校準補償系數(shù)C1~C6。ARM7微處理器從MS5534B不斷讀取絕對氣壓值D1和溫度值D2,然后結(jié)合校準補償系數(shù)計算求得相對氣壓值P,判斷其是否在有效范圍內(nèi),對有效值進行低通濾波處理,最后按折線法轉(zhuǎn)化為海拔高度值。將高度值通過與飛控系統(tǒng)相連接的無線數(shù)據(jù)傳輸模塊實時傳輸?shù)降孛嬲?,實時掌握飛機的飛行高度,對出現(xiàn)的意外情況可以及時處理[5]。基于MS5534B的高度測量系統(tǒng)的軟件流程圖3如下所示。
3.2 折線線性擬合法將氣壓值轉(zhuǎn)化為高度值
在實際應(yīng)用中,大氣壓力與海拔高度的關(guān)系是非線性的[6],傳統(tǒng)的方法是將氣壓值與對應(yīng)的高度值做成數(shù)據(jù)表,運用查表的方式,如果精確到1m,則需要上萬個數(shù)據(jù),需要龐大的存儲空間,且耗時較大,另外由于飛控系統(tǒng)中微處理器對大量浮點運算的能力不是很強,并且飛控系統(tǒng)對實時性要求很高,為了節(jié)省寶貴的存儲空間,所以本系統(tǒng)設(shè)計運用折線法進行線性擬合[7]。折線線性擬合法的基本思想就是將被逼近的函數(shù)曲線根據(jù)變化情況分成多個間隔區(qū)域值,為了提高精度及縮短運算時間,各間隔域值內(nèi)可根據(jù)精度要求,采用不同的斜率線性線段表示曲線線段。擬合原理誤差分析如圖4所示。
根據(jù)大量實驗數(shù)據(jù)和理論推導得擬合公式(1)
其中,alti表示海拔高度(0.1m),pres表示氣壓值(mbar),j,i表示折線間隔系數(shù)。在不同的i,j取值范圍內(nèi),大氣壓向高度轉(zhuǎn)化時是線性的,提高了轉(zhuǎn)化的時間,誤差是周期性的,且在一個小的范圍內(nèi)。將正常的工作高度范圍內(nèi)分成不同的多段,會得到不同的高精度值。i,j的一種分段列表,如表1所示。
根據(jù)以上表格數(shù)據(jù),運用Matlab對大氣壓向高度轉(zhuǎn)化方程所得曲線圖進行擬合[8],擬合效果非常好,仿真結(jié)果如下圖5所示。
為了進一步提高精度,可以采用非等距分段法,根據(jù)函數(shù)曲線形狀的變化率的大小來修正間隔點間的距離。曲率變化大的部分,距離取小一點,而在曲線較平緩區(qū)域距離取大一點。
圖6為在海拔-700m~8000m時,運用Matlab仿真折線擬合法所得海拔高度與我國標準大氣壓對照高度誤差示意圖,在-700m~8000m時最大高度誤差為+/-5m,而在-100~1000m時的誤差在+/-3m以內(nèi),適合小型無人機的高度需求。
4.結(jié)論
在自行研制的無人機自動駕駛儀上,應(yīng)用了上述的基于MS5534B的氣壓高度測量系統(tǒng),在實際多次飛行任務(wù)中測試的效果良好,定位高度準確。本文針對小型無人機自動駕駛儀微處理器浮點運算能力不強,實時性要求高的特點,提出折線線性擬合的方法,減少了大量浮點運算,提高了運算效率,節(jié)省了寶貴的RAM存儲空間,適合于小型無人機的自動駕駛儀中。
(本文轉(zhuǎn)自電子工程世界: