吳平,張海
(北京航空航天大學 飛行器控制一體化技術重點實驗室,北京100191)
?

吳平,張海
(北京航空航天大學 飛行器控制一體化技術重點實驗室,北京100191)
設計了一款基于MSP430F149微控制器的室外移動機器人自主定位系統。該系統通過GPIO引腳模擬SPI時序擴展接口電路,重點解決該款微控制器的硬件接口資源不足的問題,能夠有效地接入衛星導航接收機、慣性測量單元、高度氣壓計,完成導航服務,同時可輸出原始測量信息用于進一步高精度組合導航解算。此外,該系統還解決了由于高度氣壓計MS5803-02BA使用手冊中的疏漏導致無法正常工作的問題,并分段線性化氣壓值與高度之間的函數關系,從而完成氣壓值到高度的轉換。最后,給出了衛星數據與慣導數據時間對準的工程解決方法。
MSP430F149;多路數據采集;組合導航;時間對準
本文以低功耗MSP430F149為核心,設計了能夠同時實現衛星導航(GNSS)接收機、慣性測量單元(IMU)、氣壓高度等導航信息的高速采集與高速合路傳輸,并進行初步導航定位信息融合的導航系統,既可為室外移動機器人提供直接的導航服務,也可作為高精度組合導航系統的原始測量信息高速采集系統。
本系統由電源、氣壓計接口、IMU接口、GNSS接收機接口、SPI轉UART模塊及MSP430F149構成。系統組成如圖1所示。
組合導航系統的功能實現分為IMU數據接收與解析、GNSS數據接收與解析、氣壓計數據接收與解析、組合導航解算以及數據輸出5個部分。IMU數據接收與解析功能用來獲取導航解算中需要的加速度和角速度信息;GNSS數據接收與解析功能用來獲取導航解算中需要的位置和速度信息(松耦合組合)或者GNSS偽距和偽距率(緊耦合組合);氣壓計數據接收與解析功能用來獲取高度信息;組合導航解算功能為系統核心,用來進行組合導航解算;數據的輸出包括原始數據包的整合輸出和解算結果的輸出。

圖1 系統組成結構圖
2.1 微控制器接口
整個組合導航定位系統需要3個UART接口和2個SPI接口。其中2個UART接口由MSP430F149單片機自帶的UART資源提供,另外一個UART接口由GPIO模擬SPI通過MAX3111E芯片轉換得到;2個SPI接口由GPIO模擬得到。另外,需要一個外部中斷引腳捕獲秒脈沖信號(PPS),一個外部中斷引腳捕獲MAX3111E中斷信號。MSP430F149引腳[2]分配表略——編者注。
2.2 電源電路
本系統供電需求為3.3 V供電,因此采用AMS1117穩壓芯片,接入5 V電源即可輸出3.3 V穩定電壓,可提供1 A電流,滿足系統供電需求。
2.3 IMU器件及GNSS接收機接口電路
IMU器件及GNSS接收機都采用UART接口方式接入,采用RS232協議。因此可使用MSP430F149單片機上自帶的兩個UART接口,但是需要進行TTL電平與RS232電平轉換。這里采用常見的MAX3232芯片,電路設計如圖2所示。

圖2 IMU及GNSS接口電路
2.4 氣壓計MS5803-02BA接口電路
MS5803-02BA[3]是由MEAS公司生產的數字壓力傳感器,分辨率達10 cm。芯片內部包含一個高線性的壓力傳感器和一個內部工廠標定系數的超低功耗24位Δ-Σ型ADC。該款芯片有SPI和I2C總線兩種接口方式,通過芯片的PS引腳配置選擇不同的接口方式(PS置低時,采用SPI工作模式;PS置高時,采用I2C總線工作模式)。本文所闡述的定位系統將氣壓計配置為SPI工作模式。MS5803-02BA與微控制器的接口電路設計如圖3所示。

圖3 MS5803-02BA接口電路
MS5803-02BA的控制命令包括復位命令、溫度ADC命令、氣壓ADC命令、ADC讀取命令、PROM讀取命令。控制命令表略——編者注。
控制命令通過SDI口移位輸入,響應結果從SDO移位輸出。輸入的電平判定在時鐘信號的上升沿,輸出的電平判定在時鐘信號的下降沿。輸出的氣壓值可以進行溫度補償,需要利用芯片內部PROM中的系數來補償。ADC讀取命令輸入之后,輸出24位ADC結果;PROM讀取命令輸入之后,輸出16位補償系數。
讀取ADC的C語言代碼略——編者注。
結合器件的使用手冊及手冊疏漏的地方,使用MS5803-02BA時需要注意:
① 溫度和氣壓ADC命令發送之后,芯片內部需要一定的時間進行采樣轉換,具體時間與過采樣率(OSR)有關,最大需求時間為10 ms,因此本文采用的延時時間為10 ms;
② 片選信號CS的下降沿到時鐘SCLK信號的第一個上升沿至少要有21 ns的時間延遲,否則命令無法正確寫入芯片;
③ 8位的ADC讀取命令之后,必須保持CS片選信號持續為低,再產生24位時鐘信號輸入,將24位的ADC結果讀取出來(即一個命令字為8位,但實際需要32個連續的時鐘周期才能完整讀取ADC結果);
④ 對于PROM讀取命令同ADC讀取命令,一共需要24個連續的時鐘周期完成,其中8位命令字輸入,16位數據讀出。
⑤ 從SDO移位輸出數據的同時,都需要SDI輸入端保持低電平。
2.5 SPI轉UART電路
由于MSP430F149的片上UART資源都被IMU器件和GNSS接收機占用,因此需要擴充一個UART接口以滿足定位系統與PC機間的通信。為此將MSP430F149上的GPIO模擬SPI,再通過MAX3111E芯片轉成UART接口。
MAX3111E[4]是MAXIM公司推出的全功能收發器,內部包含UART和RS232電平轉換兩個獨立的部分。UART部分包括兼容于SPI的串行接口、可編程波特率發生器、發送移位寄存器、接收移位寄存器、8字長的FIFO以及4種可屏蔽中斷發生器。RS232部分包括電泵電容、硬件關斷(SHDN引腳),具有±15 kV靜電保護作用。
它可以選擇1.8432 MHz或3.6864 MHz兩種晶振作為外部晶振,芯片能夠工作在300 bps~230 kbps波特率,本文使用的是3.6864 MHz晶振。MAX3111E與MSP430F149連接電路如圖4所示。

圖4 MAX3111E與MSP430F149連接電路
MAX3111E的控制命令分為寫配置命令、讀配置命令、寫數據命令以及讀數據命令4種。本文寫入芯片的配置命令是0xE809,8位數據長度、使能FIFO、發送中斷使能、波特率38 400 bps。數據的寫入需要在每個字節前面加上0x81,例如若要發送字節0x55,則需要從DIN端移位輸入0x8155。
連續發送n個字節的C語言代碼略——編者注。
使用MAX3111E時需要注意:
① 片選信號CS的下降沿到時鐘SCLK信號的第一個上升沿至少要有100 ns的時間延遲;
② 芯片判定片選信號CS失效時,需要CS引腳保持高電平的時間至少為200 ns。因此當需要連續發送數據時,兩個寫數據命令之間至少需要200 ns,建議間隔250 ns;
③ 寫配置命令需要晶振工作穩定,因此可以在寫配置命令后再讀配置,直到寫入和讀出的配置數據相應位相同時才保證芯片按需求配置完畢。
3.1 GPIO模擬SPI實現方法
使用GPIO模擬SPI,對選定的I/O口進行時序上的電平操作,模擬出SPI時序。本文將SPI的電平操作采用宏定義的方式,可參考表1中的源代碼。

表1 GPIO模擬SPI操作方法
程序按照SPI邏輯關系使用上述的宏定義,可以在選定的I/O端口產生SPI信號,并且可以靈活的控制每個CS有效期間的時鐘數。使用GPIO模擬的SPI具有操作直觀、靈活可變等優點。相比較模擬得到的SPI,控制器上自帶的SPI接口基本不占用控制器資源,發送和接收的移位、時鐘信號的產生都交由內部SPI模塊處理。而GPIO模擬的SPI需要控制器不斷對I/O接口進行操作,因此會占用控制器處理時間。時鐘信號也因對電平操作消耗機器周期,導致時鐘信號速度有限。
3.2 數據的采集和處理方法
IMU和GNSS接收機的數據會主動發送到MSP430F149單片機的UART接口,本文采用中斷接收的方式接收數據,將每次到來的一個字節循環存儲在指定的存儲區;氣壓計需要MSP430F149單片機查詢式獲取高度信息。因此當需求IMU或者GNSS信息的時候,需要在存儲區內掃描數據,掃描依據是設備發送一幀數據的協議(幀頭、幀尾、CRC等),再根據協議獲取相應物理量的數值;當需要高度信息的時候,需要MSP430F149單片機對氣壓計發送控制字獲取信息。在對IMU和GNSS信息掃描時,需要一個變量ptr保存有效數據的首地址在存儲區內的偏移地址,為了不重復使用已用數據,需要在利用完信息后,破壞這一幀有效數據的幀頭幀尾。
另外需要注意,使用循環存儲數據和掃描取用這種方式,需要數據的處理速度比數據的接收速度快,否則舊數據會被新數據覆蓋。

圖5 氣壓值對應的高度計算流程圖
3.3 高度計算方法
高度信息的獲取需要通過MS5803-02BA獲取的氣壓信息轉換得到。對這款氣壓計的操作,需要先在芯片內部的PROM獲取C1~C6六個參數,再獲取溫度ADC結果D1和氣壓ADC結果D2,最后利用官方提供的計算公式計算得到帶補償的氣壓值。氣壓值獲取的軟件流程圖如圖5所示。
按照氣壓計的用戶手冊中提供的計算公式,最后可以計算得到一個經過溫度補償的標準氣壓值,單位為mbar。高度信息的獲取還需要將氣壓值經過函數關系轉換[5]。高度h和標準大氣P之間有如下函數關系:
Th=288.15 K,是g0對應高度下的溫度下限值;β=-6.5 K/km,是溫度的垂直變化率;H=0 m,是g0對應的高度;Ph=101 325 Pa,是g0對應高度下的氣壓下限值;R=287.05 287 m2/(K·s2),是氣體常數;g0=9.80 665 m/s2,是海平面重力加速度。
在氣壓與高度的關系轉換中,本文采用分段線性化的方法擬合它們的非線性關系。在不同氣壓值區間內,線性化公式得到h=a·P+b,取得不同的線性參數a、b,詳見表2。

表2 氣壓與高度的分段線性關系
3.4 組合導航的時間對準
進行組合導航濾波解算時,從IMU和GNSS接收機接收到的數據在時間上應該是同步的,因為如果在一個數據融合點上,進入Kalman濾波器的來自兩個子系統中的數據來自不同的時間點,會給濾波計算帶來誤差,同時也會給校正計算帶來影響。GNSS接收機輸出的導航數據都帶有精確的時間標簽,而從 IMU 輸出的數據只有一個相對時間標簽。以GNSS接收機的時間標簽作為時間基準,分析時間差的組成。系統時間示意圖如圖6所示。

圖6 系統時間示意圖
3.4.1 時間差分析
當一個GNSS數據(1 Hz)到來時,接收機產生一個秒脈沖信號(PPS),用于時間對準。GNSS接收機本身存在數據時延:接收機整個計算過程會產生一個解算時間延遲Δt1,從衛星導航接收機和慣導系統輸出的數據分別經過McBSP和RS232數據接口,輸入導航解算處理器會產生一定的傳輸延遲Δt2。因此,在PPS信號前的Δt1+Δt2時刻才是當前接收到的GNSS數據幀的真實時刻。IMU數據處理時間相對于遞推時間來說很小,可以忽略。另外PPS脈沖信號和慣性測量信號之間的時間差Δτ,它描述GNSS絕對時間和IMU相對時間之間的關系,使得GNSS和IMU統一在同一個時間標準下。
3.4.2 處理思想
根據總時間差,找到IMU數據對應的插值時刻。通過時間就可以獲得對準時間點與最近的兩個慣性采集時刻,其后對時間同步點兩側時間點上,即圖中t(k-1)和t(k)時間點的慣性數據進行線性插值運算,就可以獲得慣導數據和GNSS接收機數據在同一時間點上的同步化測量數據。
3.4.3 實施方法
GNSS接收機解算時間Δt2由接收機提供。傳輸時間通常為一個固定時間,使用示波器分別測量GNSS接收機發送時間和導航解算電路的接收時間,再將兩個時間作差即可獲得。
Δτ的獲取需要開啟MSP430F149的計時器和外部中斷,通過中斷計時的方式獲得。具體方法是:通過將PPS信號接入導航處理器的外部中斷接口,采用邊沿觸發方式觸發中斷事件的發生。中斷事件啟動計時器工作。當通過串口中斷方式接收到IMU數據時,讀取計時器的值,即可得到IMU數據相對于PPS的延遲時間Δτ。
本文基于MSP430F149單片機設計的室外移動機器人組合導航定位系統,通過接口的擴展使得該款定位系統能夠接入IMU、GNSS接收機、氣壓計三路信息,完成初步導航定位服務功能。同時,可作為多路數據采集設備,將多路數據整合到一路高速輸出接口,用于進一步的高精度導航解算。該系統根據使用者的需求不同,可接入不同成本和精度的設備,只要滿足RS232協議即可。筆者將其實際運用,整個系統充分利用該款單片機的資源,結構簡單、功耗低、適用范圍廣,不僅可作為初步導航定位服務的設備,還可作為多路數據采集設備。

[1] 張宗麟. 慣性導航與組合導航[M].北京:航空工業出版社,2000:7-8.
[2] TEXAS INSTRUMENTS. MSP430x1xx Family User's Guide[EB/OL].[2014-01].http://www.ti.com.cn/cn/lit/ug/slau049f/slau049f.pdf.
[3] Measurement Specialties Inc. MS5803-02BA Miniature Altimeter Module[EB/OL]. [2014-01].http://www.meas-spec.cn/downloads/MS5803-02BA.pdf.
[4] Maxim Integrated Products. MAX3110E/MAX3111EDatasheet[EB/OL]. [2014-01].http://datasheets.maximintegrated.com/en/ds/MAX3110E-MAX3111E.pdf.
[5] 郝振海, 黃圣國. 高精度氣壓高度表的研制[J]. 南京航空航天大學學報, 2009, 41(1): 134-138.
吳平(碩士研究生),主要研究組合導航技術;張海(副教授),主要從事導航技術領域和智能交通領域的研究工作。

Wu Ping,Zhang Hai
(Science and Technology on Aircraft Control Laboratory, Beihang University, Beijing 100191, China)
The paper designes an outdoor mobile robot autonomous positioning system based on MSP430F149 microcontroller.The system applies the method of simulation SPI timing by GPIO pin to extend interface circuit, and the system focuses on solving the problem of lack of interface resources in the microcontroller, which can effectively complete the robot navigation services by accessing the satellite navigation receiver and inertial measurement unit, as well as the barometer. At the mean time the raw measured informations can be output for further precision navigation.In addition, this system solves the running problem of barometer MS5803-02BA which caused by negligences in the “user guide”.The conversion from pressure to height is also achieved by piecewise linear the function of pressure and height.The engineering solutions of aligning GNSS data and IMU data are given at last.
MSP430F149;multi-channel data acquisition; integrated navigation; time alignment
TP332
A
迪娜
2013-01-12)