摘 要: 介紹了基于DSP和BMP085數(shù)字氣壓傳感器的高精度高度采集系統(tǒng)在無(wú)人機(jī)上的設(shè)計(jì),并對(duì)系統(tǒng)實(shí)際運(yùn)行的結(jié)果數(shù)據(jù)進(jìn)行測(cè)試分析,實(shí)現(xiàn)高度的測(cè)量與傳輸。重點(diǎn)描述了系統(tǒng)采集端軟硬件的設(shè)計(jì)與實(shí)現(xiàn),闡述了軟件與硬件的設(shè)計(jì)要求。本系統(tǒng)功耗低、結(jié)構(gòu)簡(jiǎn)單、精度高、抗干擾能力強(qiáng)、且能減少環(huán)境因素變化的影響,該測(cè)量系統(tǒng)使用卡爾曼濾波算法對(duì)測(cè)量數(shù)據(jù)進(jìn)行修正,以便更準(zhǔn)確地計(jì)算出相對(duì)高度。
關(guān)鍵詞: DSP;BMP085;卡爾曼濾波;無(wú)人機(jī)
具有自主飛行能力的無(wú)人駕駛飛機(jī)是一個(gè)應(yīng)用到多學(xué)科前沿性的研究課題,無(wú)人機(jī)在機(jī)艙內(nèi)不需要有人進(jìn)行操縱,它在飛行的過(guò)程中依靠各種電子設(shè)備,全自動(dòng)地完成各種姿態(tài)飛行。高度信息作為無(wú)人機(jī)的一項(xiàng)飛行參數(shù),是保障無(wú)人機(jī)飛行控制系統(tǒng)正常有維持飛機(jī)安全平穩(wěn)飛行的一個(gè)重要指標(biāo)。本文以BMP085氣壓傳感器為研究對(duì)象,采用卡爾曼濾波算法,通過(guò)TMS320F2812 DSP構(gòu)建一種更為精確的高度采集系統(tǒng)[1]。
1 系統(tǒng)工作原理及硬件結(jié)構(gòu)
基于DSP的無(wú)人機(jī)高度采集系統(tǒng)的硬件部分主要包括氣壓和溫度采集、數(shù)據(jù)處理及數(shù)據(jù)發(fā)送3個(gè)部分。該系統(tǒng)使用氣壓溫度傳感器采集無(wú)人機(jī)的氣壓和溫度值送到無(wú)人機(jī)的處理器,使用無(wú)線傳輸發(fā)送給地面控制中心并通過(guò)公式計(jì)算得到相對(duì)高度值,經(jīng)過(guò)卡爾曼濾波算法修正數(shù)據(jù)得到更為精確的高度值,以便于地面站工作人員對(duì)無(wú)人機(jī)進(jìn)行控制,使無(wú)人機(jī)運(yùn)行在安全可靠的飛行高度。
1.1 系統(tǒng)總體框架
基于DSP的無(wú)人機(jī)高度采集系統(tǒng)總體結(jié)構(gòu)如圖1所示,系統(tǒng)硬件部分由BMP085數(shù)字式氣壓傳感器、TMS320F2812 DSP、無(wú)線傳輸模塊、電源模塊以及其他外圍電路組成。TMS320F2812控制器通過(guò)I/O口模擬I2C總線與BMP085氣壓傳感器相連接,BMP085氣壓傳感器實(shí)時(shí)獲得測(cè)量點(diǎn)的壓強(qiáng)值與溫度值,通過(guò)I/O口發(fā)送給控制器處理,并將壓強(qiáng)值與溫度值數(shù)據(jù)通過(guò)無(wú)人機(jī)的無(wú)線傳輸模塊實(shí)時(shí)傳輸?shù)綗o(wú)人機(jī)地面站。無(wú)人機(jī)地面站接收數(shù)據(jù)后,根據(jù)壓力與高度的轉(zhuǎn)換關(guān)系,求得在該氣壓下的相對(duì)應(yīng)的高度值,對(duì)高度值進(jìn)行補(bǔ)償,并用卡爾曼濾波算法進(jìn)行數(shù)據(jù)修正,分析后進(jìn)行存儲(chǔ),再通過(guò)上行數(shù)據(jù)鏈把控制指令發(fā)送給飛控中心,調(diào)整無(wú)人機(jī)的姿態(tài),從而控制無(wú)人機(jī)的高度,使無(wú)人機(jī)的飛行更加平穩(wěn)[2]。
1.2 系統(tǒng)硬件選擇
TMS320F2812數(shù)字信號(hào)處理器是TI公司最新推出的32位定點(diǎn)DSP控制器,是目前控制領(lǐng)域最先進(jìn)的處理器之一。其頻率高達(dá)150 MHz,大大提高了控制系統(tǒng)的控制精度和芯片處理能力;處理數(shù)據(jù)位數(shù)也從16位定點(diǎn)躍升到32位定點(diǎn);最大的亮點(diǎn)是其擁有EVA、EVB事件管理器和配套的12位16通道的A/D數(shù)據(jù)采集,支持JTAG邊界掃描接口;具有8 KB內(nèi)部ROM存儲(chǔ)器和128 KB的內(nèi)部Flash存儲(chǔ)器,3個(gè)32位CPU定時(shí)器;串口通信外設(shè)主要包括1個(gè)SPI串行接口、兩個(gè)SCI串行接口、增強(qiáng)型控制器局域網(wǎng)通信接口Ecan2.0B;56個(gè)可配置通用I/O引腳;具有低功耗模式和省電模式;外部I/O口電壓為3.3 V,內(nèi)核電壓為1.8 V,F(xiàn)lash的編程電壓為3.3 V;有179引腳BGA封裝和176引腳的LQFP封裝[3]。
為了滿足系統(tǒng)的抗超過(guò)載的要求,采用德國(guó)Bosch公司基于MEMS的BMP085氣壓傳感器。BMP085采用強(qiáng)大的8-pin陶瓷無(wú)引線芯片承載(LCC)超薄封裝,其壓力測(cè)量范圍為30 kPa~110 kPa(相當(dāng)于-500 m~9 000 m),絕對(duì)精度最低可以達(dá)到0.03 hPa(0.25 m),溫度測(cè)量范圍為-40℃~+85℃。BMP085傳送的是沒(méi)有經(jīng)過(guò)補(bǔ)償?shù)臏囟群蛪毫χ?,要想得到補(bǔ)償過(guò)的溫度和壓力值可以通過(guò)BMP085的EEPROM存儲(chǔ)器中的標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行補(bǔ)償。EEPROM儲(chǔ)存了176位單獨(dú)的標(biāo)準(zhǔn)數(shù)據(jù),這些數(shù)據(jù)用于溫度和壓力補(bǔ)償,而176位的EEPROM被劃分為11個(gè)字,每個(gè)字16位,一共11個(gè)校準(zhǔn)系數(shù),每個(gè)器件模塊都有自己?jiǎn)为?dú)的校準(zhǔn)系數(shù)[4]。
1.3 DSP系統(tǒng)內(nèi)部框架
由于壓力傳感器的數(shù)據(jù)都是通過(guò)I2C總線傳輸給DSP,而TMS320F2812缺少I2C總線接口,所以這里使用TMS320F2812的I/O模擬I2C總線。無(wú)線收發(fā)模塊則是通過(guò)SPI把數(shù)據(jù)發(fā)送給無(wú)人機(jī)地面站,因此在系統(tǒng)中要有SPI和I/O才能接收和發(fā)送數(shù)據(jù),以完成該系統(tǒng)的完整設(shè)計(jì)。而DSP內(nèi)部則包含了這兩部分,只需要調(diào)用這些模塊再配置好參數(shù)就可以與外部接口模塊進(jìn)行數(shù)據(jù)的傳輸[5],如圖2所示。
2 系統(tǒng)的軟件設(shè)計(jì)
測(cè)量系統(tǒng)的軟件設(shè)計(jì)程序是基于Keil uVision4,使用C語(yǔ)言編寫。程序設(shè)計(jì)思路為從頂層到底層,采用模塊化設(shè)計(jì)方案,主要包括系統(tǒng)及其初始化、I/O口模擬I2C口通信以及卡爾曼濾波算法修正數(shù)據(jù)等3個(gè)子程序模塊。主程序以循環(huán)方式進(jìn)行,系統(tǒng)工作流程圖如圖3所示。
2.1 I/O口模擬I2C口通信
I/O口模擬I2C口通信主要用于TMS320F2812與BMP085之間的通信。對(duì)I/O口模擬I2C口通信進(jìn)行設(shè)置后,控制器通過(guò)I2C接口提前將BMP085中的EEPROM的11個(gè)補(bǔ)償系數(shù)讀取出來(lái),便于后面的溫度補(bǔ)償計(jì)算。DSP發(fā)送開始信號(hào)給BMP085傳感器,啟動(dòng)傳感器的壓強(qiáng)與溫度測(cè)量。BMP085傳感器接到DSP發(fā)來(lái)的開始信號(hào)后,開始對(duì)當(dāng)前壓強(qiáng)與溫度進(jìn)行測(cè)量。經(jīng)過(guò)4.5 ms的時(shí)間轉(zhuǎn)換后,DSP利用I2C接口讀取BMP085傳感器中測(cè)量的壓強(qiáng)與溫度,并結(jié)合獲取的補(bǔ)償系數(shù)對(duì)溫度和壓強(qiáng)進(jìn)行溫度補(bǔ)償。
該無(wú)人機(jī)于2011年暑假期間制作完畢,經(jīng)過(guò)遙控試飛調(diào)試后,整機(jī)載重可達(dá)2.5 kg,飛行時(shí)長(zhǎng)可滿足一般性巡航任務(wù)。機(jī)艙內(nèi)空間較為充足,可安裝的體積為7 cm×8 cm×9 cm,考慮到該點(diǎn),硬件電路板采用接插板的形式進(jìn)行設(shè)計(jì)。
BMP085數(shù)字式壓力傳感器對(duì)氣壓-海拔高度提供了參考公式,利用該公式配合傳感器采集到的氣壓值能得到較好的海拔高度,再經(jīng)過(guò)卡爾曼濾波后得到的值更為精確。
其中氣壓-海拔高度公式為:
Altitude=44 330[1-(P-P0)(1/5.255)]
其中,Altitude是以m為單位的海拔高度值,P0為標(biāo)準(zhǔn)大氣壓值,P為當(dāng)前某一高度的大氣壓強(qiáng)值。
整機(jī)測(cè)試結(jié)果如表1所示,以海拔高度測(cè)量結(jié)果作為理論值,將本機(jī)高度測(cè)量結(jié)果和海拔儀結(jié)果作對(duì)比。由于實(shí)驗(yàn)條件有限,高度取值范圍為0~500 m。
從表1可以看出,經(jīng)過(guò)系統(tǒng)解算出的高度誤差值在測(cè)量范圍內(nèi)最大為0.52 m,系統(tǒng)誤差普遍小于1 m。氣壓高度采集系統(tǒng)誤差主要由傳感器本身誤差、電路誤差和解算誤差造成。系統(tǒng)經(jīng)過(guò)傳感器校正、溫度補(bǔ)償、軟件濾波和解算高度公式,確保了測(cè)量結(jié)果的高精度,因此該高度測(cè)量系統(tǒng)滿足高度測(cè)量的需求。
采用BMP085大氣壓力傳感器和TMS320F2812 DSP設(shè)計(jì)的高精度高度采集測(cè)試系統(tǒng),通過(guò)簡(jiǎn)潔的電路和有效的軟件濾波算法,具有良好的穩(wěn)定性和較高的精度,適用于精度高、體積小、方便攜帶等多功能的需求,在實(shí)際生活中有較為廣泛的應(yīng)用前景。
參考文獻(xiàn)
[1] 王晅,李小民.高精度小型無(wú)人機(jī)氣壓高度測(cè)量系統(tǒng)的設(shè)計(jì)[J].測(cè)控技術(shù),2012,31(2):12-15.
[2] 梁勝展,郭雪梅,余曉填.基于BMP085氣壓傳感器及BP算法的高度測(cè)量研究與實(shí)現(xiàn)[J].傳感技術(shù)學(xué)報(bào),2013(5):654-659.
[3] 蔣樂(lè)平.基于DSP的太陽(yáng)能飛艇飛控系統(tǒng)研究[D].南昌:南昌航空大學(xué)研究生院,2012.
[4] 王俊彩,王福平,侯瑞峰,等.基于BMP085的一種便攜式海拔高度測(cè)量系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2011,30(12):123-125.
[5] 王琪,蔣樂(lè)平.基于PSoC的飛艇艇內(nèi)溫度采集系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2012,38(1):41-43.
[6] 敬喜.卡爾曼濾波器及其應(yīng)用基礎(chǔ)[M].北京:國(guó)防工業(yè)出版社,1973.