完成感測器融合設計的捷徑

資料提供者:DigiKey 北美編輯群

能準確可靠地感測位置、方位和移動,已成為許多市場區隔中(包括消費性、工業及軍事/航空)多種應用的關鍵需求。 若要提供這種複雜的資料,適當的感測器系統除了要整合來自基本的陀螺儀感測器或加速計的結果外,還需要其他來源的結果。

從這些個別的感測器取得準確的讀數本來就不容易,系統設計人員還必須進一步結合許多感測元素的輸出,並透過感測器融合來整合其輸出。 然而,感測器融合實作的複雜性足以讓系統開發作業停滯不前。

Bosch Sensortec 提供的兩款方位感測器裝置,能在這方面助設計人員一臂之力。 這些裝置是訂製型感測器融合設計的簡易替代方案,藉由現成的感測器融合功能解決方案加快開發速度。

感測器融合的需求

感測方位與移動的能力對許多仰賴虛擬或實體移動的應用而言十分重要。 智慧型手機仰賴此能力執行多種作業,小如直向橫向畫面的切換,大到能夠自行運作而不需倚靠 GPS 輔助的複雜慣性導航應用。 除了智慧型手機和其他許多消費性及工業物聯網 (IoT) 產品,醫療和汽車應用也愈來愈需要一定程度的方位感知功能性。 如此一來,設計人員就有機會提供差異化設計,即便在實作具有方位感知能力的感測器融合設計上需要一定的學習過程。

在硬體層面,內部的感測系統使用加速計來偵測動作、使用陀螺儀感測旋轉,並使用磁力計來識別航向。 理想情況下,這些感測器能提供判定方位、位置及航向所需的所有資訊。

然而在實際情況下,每種感測器在提供必要資料的能力上各有其嚴重的限制。 加速計由於靈敏度很高,因此會產生雜訊。 陀螺儀會隨著時間產生漂移,因此無法提供絕對旋轉資料。 磁力計則會對任何磁場產生反應,因此可能會受到周圍環境中的磁性材料影響而產生異常結果。

此外,這些感測器類型都無法明確量測更複雜的動作(像是偏航),更別說是識別感測器的絕對方位(相對於地球磁場)。 要取得這些更複雜的量測結果,需在稱為「感測器融合」的流程中結合感測器資料。

感測器融合方法

單一感測器無法產生的結果,可以靠感測器融合流程將多個感測器的資料合併取得。 方位與慣性導航專家會採用多種專為特定類別應用所設計的感測器融合演算法。 這些演算法的細節不在本文的探討範圍內,但每種演算法都力求達到最佳化的原始感測器資料合併效果,然後再依據感測器雜訊和準確度等各種特性以靜態或動態方式加權。 接著利用歐拉角或四元數等抽象概念,取得方位和移動的數學推測結果。

幸好,開發人員不必成為感測器融合演算法的專家,就能利用這些演算法的功能。 開發人員可使用現有的軟體解決方案來打造感測器融合應用程式,例如 NXP Semiconductors 的感測器融合函式庫。 此 NXP 軟體的設計可在 NXP 的 Kinetis K20 等 MCU 上執行,能將 MCU 的整合式類比訊號鏈(由可編程增益放大器 (PGA)、比較器和類比數位轉換器 (ADC) 構成)所取得的感測器資料結合在一起。

這種 MCU 架構方式提供絕佳靈活性,能滿足特定應用需求。 開發人員即便不熟悉感測器融合理論,也能利用可取得的函式庫開發出最佳化系統。 想要實作更專門演算法的專業人士,則可替換目標應用中的程式碼。 即便如此,所有開發人員在設計前端感測器系統上仍面臨重大的挑戰。

不論演算法為何,感測器融合結果的準確度幾乎取決於內部的感測器設計。 感測器融合的基本要求在於,感測器的量測資料必須達到密切同步(或夠密切),以滿足時間解析度的應用需求。 目標感測器的實體布局等問題會影響同步效果,特別是感測器遠離其處理裝置的應用。 在此情況下,若感測器和其各自的訊號處理鏈之間的時序路徑有所不同,會導致同步化出現系統性的計時誤差。 雖然開發人員能因應這些差異,但使用整合式感測器架構的方式就可解決此問題。

整合式感測器模組能簡化融合作業

整合式感測器裝置會將各個目標感測器置於同一個模組上,化解任何有關不同時序路徑的實際考量。 此外,若使用此裝置,開發人員就可仰賴感測器模組的設計人員,將會減損感測器準確度的雜訊來源或其他設計因素降至最低。 實際上,Bosch Sensortec 的 BMF055 九軸方位感測器更進一步發揮此方法。 此系統級封裝 (SiP) 裝置整合了 Atmel 的 ATSAMD20J18A 32 位元 MCU,以及大致和 BMA280 加速計、BMG160 陀螺儀和 BMM150 地磁感測器相當的多項感測器(圖 1)。 (請注意,BMF055 的感測器在某些效能值上和其獨立式同等產品有所不同。)

Bosch Sensortec 的 BMF055 圖片

圖 1:Bosch Sensortec 的 BMF055 結合了感測器和 Atmel 的 Cortex-M0+ 架構 MCU,以收集原始感測器資料並進行感測器融合,藉此簡化方位與慣性量測應用的感測器系統設計。 (圖片來源:Bosch Sensortec)

內建的 Atmel ATSAMD20J18A MCU 以 ARM® Cortex®-M0+ 核心為基礎,整合了 32 KB SRAM 和 256 KB 快閃記憶體。 此裝置能當作本機主機,透過 SPI 匯流排擷取原始感測器資料,並在模組內執行感測器融合軟體演算。 Atmel 的 MCU 則透過 USART 介面和外部主機通訊,以傳送最後的感測器融合結果。

硬體的設計簡單明瞭。 BMF055 只需借助外部 32 KHz 晶體和電容就能完成感測器融合設計(圖 2)。 事實上,Bosch Sensortec 的 BMF055 評估套件提供了現成可用的簡易開發平台,結合了分接板以及包括 BMF055 和所有必要元件在內的小型機板。

Bosch Sensortec 的 BMF055 圖片

圖 2:Bosch Sensortec 的 BMF055 僅需少許額外元件就能實作方位感測器系統,並提供序列介面以進行開發作業並將感測器融合結果傳送至主機系統。 (圖片來源:Bosch Sensortec)

BMF055 SiP 消除了感測器融合設計中重大的硬體實作阻礙。 開發人員如需編寫自己的感測器融合演算法,可將 BMF055 當作整合式替代方案,就不需建立自己的 MCU 架構感測器融合設計。 實際上,Bosch Sensortec 就以 Atmel 軟體架構 (ASF) 為基礎,用分層結構的方式提供 BSX-Lite 感測器融合函式庫。

此軟體套件在每一層提供一系列的 API,以存取 BSX-Lite 函式庫、感測器驅動程式和內部的 ASF 驅動程式(圖 3)。 實際的執行階段程式碼位於發佈版本隨附的套裝函式庫中。 開發人員能在提供的堆疊上快速建構其應用,並針對特定應用需求,用其自行研發的感測器融合函式庫進行替代。

Bosch Sensortec 的感測器融合軟體套件圖片

圖 3:Bosch Sensortec 提供感測器融合軟體套件,內含 API,可存取 BSX-Lite 感測器融合函式庫、感測器和 Atmel 軟體架構 (ASF)。 (圖片來源:Bosch Sensortec)

Bosch Sensortec 的軟體套件甚至含有範例程式碼,能示範高階調用,以執行多種裝置作業(程式碼列表)。 此軟體針對每個感測器進行分類,因此只要針對相關分類調用適當的方法,就能輕易從某特定的感測器讀取資料。 感測器支援函式庫中的低階常式會執行必要的匯流排讀取(由嵌入式 MCU 執行,以透過 SiP 模組的內部 SPI 匯流排存取感測器裝置暫存器)。

Copy

void bmf055_sensors_initialize (void)

 {

       /* Initialize BMA280 */

       bma_init();

      

       /*BMA settings for running BSXLite: Range = 2G, BW = 62.5Hz*/

       bma2x2_set_range(BMA2x2_RANGE_2G);

       bma2x2_set_bw(BMA2x2_BW_62_50HZ);

      

       /* Initialize BMG160 */

       bmg_init();

      

       /* BMG settings for running BSXLite: Range = 500dps, BW = 64Hz*/

       bmg160_set_range_reg(0x02);

       bmg160_set_bw(0x06);

      

       /* Initialize BMM150 */

       bmm_init();

      

       /*BMM settings for running BSXLite: Preset mode = Regular, Functional state = Forced mode*/

       bmm050_set_presetmode(BMM050_PRESETMODE_REGULAR);     

       bmm050_set_functional_state(BMM050_FORCED_MODE);

 }

程式碼列表。 BMF055 軟體套件含有範例常式,展示了如何使用高階常式執行一些作業,例如針對裝置的三個整合式感測器進行初始化。 (程式碼來源:Atmel/Bosch Sensortec)

立即可用的解決方案

BMF055 具備完整的可編程性,因此能針對需要自訂功能性甚至是專業感測器融合計算的應用,提供有效的解決方案。 對於正在尋找快速且立即可用之解決方案的開發人員,Bosch Sensortec 的 BNO055 整合了感測器融合韌體、感測器和 MCU,能直接輸出韌體所產生的高階資訊。 BNO055 採用以暫存器為基礎的方法,能讓主機取得最終結果,包括加速、線性加速、重力向量、磁場強度、角速率、溫度,以及歐拉角或四元數的方位。

在硬體整合性方面,此模組提供 I2C 與 UART 連接埠以連接至主機,並且和 BMF055 一樣需要基本晶體及電容補償。 如同 BMF055,Bosch Sensortec 也提供了含有裝置及所有必要元件的 BNO055 開發板

由於 BNO055 會執行感測器融合計算並提供最終結果,因此軟體介面相對簡單。 基本的裝置驅動程式會處理必要的匯流排讀寫,以讓外部主機得以透過 I2C 或 UART 硬體介面來存取裝置。

低階軟體常式會存取 BNO055 的專用暫存器以取得特定的感測器融合結果。 例如,驅動程式常式 bno055_read_accel_xyz() 會讀取原始線性加速資料,而 bno055_convert_float_accel_xyz_msq() 函數會將此資料轉換成浮點值(單位為 m/s2)。

結論

擴增實境、無人機和智慧型手機等應用皆仰賴判定方位與移動的能力。 單靠感測器本身無法產生這些資訊,或者無法提供明確且快速的結果,必須由感測器融合方式取得。 對於設計人員來說,打造適當的感測器解決方案在硬體設計和軟體開發上會面臨極大的挑戰。

BMF055 和 BNO055 裝置能針對感測器融合設計,滿足快速開發自訂且立即可用之解決方法的需求。

 
DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於出版者

DigiKey 北美編輯群