1.引言
無人機的高度測量傳統(tǒng)上一直采用靜壓傳感器作為感知手段,通過其壓差膜盒對大氣靜壓的感應(yīng),將大氣壓力轉(zhuǎn)化為模擬信號輸出,從而計算出實際的高度值[1]。由于大氣壓力的變化除了與高度變化緊密聯(lián)系外,與本地的實際溫度也密切相關(guān),但是大部分靜壓傳感器在設(shè)計時并未考慮到實際溫度對大氣壓力的影響,這就造成了實際輸出靜壓值與真實值之間的大幅度偏差,從而影響了高度的精確計算[2]。
本文針對上述不足,提出了使用帶有溫度補償和校準系數(shù)的高靈敏度靜壓傳感器MS5534B作為無人機高度測量的傳感器件,同時考慮到無人機飛控處理器運算能力不足的實際情況,提出一種分段擬合曲線的線性算法,以較高的精度實現(xiàn)了無人機的高度計算。
2.系統(tǒng)硬件設(shè)計
2.1MS5534B的特性
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所示。
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直接通過標(biāo)準的SPI接口與其相連,簡化了電路設(shè)計,提高了實時性。
ARM7微處理器與氣壓傳感器間的通信通過標(biāo)準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ù)降孛嬲荆瑢崟r掌握飛機的飛行高度,對出現(xiàn)的意外情況可以及時處理[5]?;贛S5534B的高度測量系統(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ù)和理論推導(dǎo)得擬合公式(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仿真折線擬合法所得海拔高度與我國標(biāo)準大氣壓對照高度誤差示意圖,在-700m~8000m時最大高度誤差為+/-5m,而在-100~1000m時的誤差在+/-3m以內(nèi),適合小型無人機的高度需求。
4.結(jié)論
在自行研制的無人機自動駕駛儀上,應(yīng)用了上述的基于MS5534B的氣壓高度測量系統(tǒng),在實際多次飛行任務(wù)中測試的效果良好,定位高度準確。本文針對小型無人機自動駕駛儀微處理器浮點運算能力不強,實時性要求高的特點,提出折線線性擬合的方法,減少了大量浮點運算,提高了運算效率,節(jié)省了寶貴的RAM存儲空間,適合于小型無人機的自動駕駛儀中。