通過更簡(jiǎn)單的途徑增加低功耗 9 軸運(yùn)動(dòng)跟蹤功能
發(fā)布時(shí)間:2018-03-13 責(zé)任編輯:wenwei
【導(dǎo)讀】越來(lái)越多的可穿戴設(shè)備和物聯(lián)網(wǎng)設(shè)計(jì)將檢測(cè)方向和跟蹤運(yùn)動(dòng)的能力視為重要要求。盡管已經(jīng)有各種各樣的可用運(yùn)動(dòng)傳感器,但工程師還是不斷受到挑戰(zhàn),探索以更低的功耗更快、更高效地集成這些設(shè)備,這在額外增加傳感器時(shí)尤其具有挑戰(zhàn)性。
為應(yīng)對(duì)這些運(yùn)動(dòng)跟蹤挑戰(zhàn),設(shè)計(jì)人員需要集成度更高的加速計(jì)、陀螺儀和磁力儀五金件以及更加高效且智能的數(shù)據(jù)融合算法。
本文將介紹 TDK InvenSense 提供的同時(shí)為硬件和軟件提供幫助的解決方案。然后,本文還將介紹設(shè)計(jì)人員如何著手將該解決方案應(yīng)用于簡(jiǎn)化需要復(fù)雜的運(yùn)動(dòng)感應(yīng)功能的復(fù)雜低功耗多傳感器應(yīng)用的開發(fā)。
高效運(yùn)動(dòng)跟蹤的挑戰(zhàn)
利用傳統(tǒng)的運(yùn)動(dòng)跟蹤方法,開發(fā)人員可以同時(shí)為硬件和軟件處理重要的集成問題。在硬件方面,開發(fā)人員通常會(huì)努力在采用單獨(dú)的傳感器(包括加速計(jì)、陀螺儀和磁力儀)構(gòu)建的設(shè)計(jì)中最大限度減少其復(fù)雜性、尺寸和零件的數(shù)量。軟件工程師則需要特別注意同步各種各樣的傳感器輸出,以創(chuàng)建高級(jí)運(yùn)動(dòng)跟蹤應(yīng)用中所用傳感器融合算法所需的統(tǒng)一數(shù)據(jù)流。對(duì)于硬件和軟件開發(fā)人員而言,需要在設(shè)計(jì)中集成額外傳感器類型的應(yīng)用面臨的挑戰(zhàn)均顯著增加。
但是,使用 TDK InvenSense ICM-20948,開發(fā)人員便能夠以最少的工作量快速實(shí)現(xiàn)運(yùn)動(dòng)跟蹤設(shè)計(jì)或其他多傳感器系統(tǒng)。
運(yùn)動(dòng)跟蹤解決方案
TDK InvenSense ICM-20948 是一種多芯片模塊,尺寸只有 3 mm x 3 mm x 1 mm,它集成了提供完整運(yùn)動(dòng)跟蹤解決方案所需的整套傳感器、信號(hào)鏈、數(shù)據(jù)處理和接口電路(圖 1)。
圖 1: TDK InvenSense ICM-20948 通過其專用的信號(hào)鏈、可編程濾波器、接口電路和數(shù)字運(yùn)動(dòng)處理器執(zhí)行運(yùn)動(dòng)跟蹤。(圖片來(lái)源: TDK InvenSense)
該模塊在全面工作模式下僅需要 3 毫安 (mA) 左右便能實(shí)現(xiàn)其全部功能。對(duì)于功率受限的應(yīng)用,開發(fā)人員可以關(guān)閉模塊的某些部分,從而將完全休眠模式下各階段的電流消耗降低至 8 微安 (μA)。產(chǎn)生的功耗取決于工作電壓 (VDD),根據(jù)設(shè)計(jì)要求,該電壓值可以介于 1.71 伏特和 3.6 伏特。
單獨(dú)的信號(hào)鏈集成在模塊中,為集成的 3 軸加速計(jì)、3 軸陀螺儀和 3 軸磁力儀以及集成的溫度傳感器的每個(gè)通道提供支持。每個(gè)信號(hào)鏈都包括緩沖放大器和一個(gè)專用的 16 位模數(shù)轉(zhuǎn)換器 (ADC),以及特定于傳感器的電路,如驅(qū)動(dòng)模塊的霍爾效應(yīng)磁力儀的電流源。
為了提高每種信號(hào)鏈的輸出,模塊包括適用于每種進(jìn)一步傳感器類型的信號(hào)調(diào)節(jié)階段。例如,磁力儀輸出通過算術(shù)電路進(jìn)行基本信號(hào)處理,而其他傳感器的輸出各自饋入自動(dòng)的傳感器特定調(diào)節(jié)階段,以執(zhí)行采樣平均等處理功能。開發(fā)人員可以將 ICM-20948 設(shè)置為平均多達(dá) 128 個(gè)陀螺儀數(shù)據(jù)采樣,或者將加速計(jì)設(shè)置為平均多達(dá) 32 個(gè)采樣。最終,每個(gè)通道的信號(hào)調(diào)節(jié)階段的輸出饋入一組專用的傳感器寄存器中。
ICM-20948 的核心是一個(gè)專有的數(shù)字運(yùn)動(dòng)處理器 (DMP),用于提供各種不同的功能,包括執(zhí)行運(yùn)動(dòng)處理算法、校準(zhǔn)和自測(cè)試。在正常工作期間,DMP 會(huì)處理來(lái)自專用傳感器寄存器的數(shù)據(jù)。然后再將結(jié)果存儲(chǔ)在模塊的集成式 FIFO 中,供主機(jī) MCU 通過共享的 I2C 或 SPI 總線訪問。
DMP 和 FIFO 的功能為很多實(shí)際應(yīng)用提供重要功能。很多情況下,應(yīng)用以相對(duì)較慢的速度更新其運(yùn)動(dòng)跟蹤結(jié)果,甚至允許其主機(jī)處理器在更新之間休眠,以降低總功耗。然而,運(yùn)動(dòng)跟蹤算法需要的更新速度明顯更高,以確保其在應(yīng)用請(qǐng)求更新時(shí)以最低的延時(shí)提供精確的數(shù)據(jù)。DMP 能夠在不需要主機(jī)參與的情況下維持高更新速度,這有助于確保準(zhǔn)確性,而不會(huì)對(duì)主機(jī)應(yīng)用本身的性能或功耗強(qiáng)加額外的要求。
簡(jiǎn)單的集成
ICM-20948 結(jié)合了小封裝、系統(tǒng)集成功能及主機(jī)獨(dú)立操作等特點(diǎn),特別適合在移動(dòng)設(shè)備、可穿戴設(shè)備和物聯(lián)網(wǎng)設(shè)計(jì)中使用。模塊的高水平集成意味著,開發(fā)人員僅使用三個(gè)電容器便可以執(zhí)行典型的運(yùn)動(dòng)跟蹤設(shè)計(jì)。按照 TDK InvenSense 使用陶瓷 X7R 零件的建議,開發(fā)人員將在模塊的 REGOUT 引腳上增加一個(gè) 0.1 μF 電容器進(jìn)行穩(wěn)壓器濾波,并在其 VDD 和 VDDIO 引腳上增加一個(gè)該電容器用于電源旁通(圖 2)。
圖 2: 設(shè)計(jì)人員可以將 TDK InvenSense ICM-20948 輕松添加到基于 MCU 的設(shè)計(jì)中,從而通過 SPI(此處所示)或 I2C 接口連接到 MCU,后者使用相同的配置,但引腳 22 (nCS) 與 VDDIO 相關(guān)聯(lián)。(圖片來(lái)源: TDK InvenSense)
雖然 ICM-20948 為運(yùn)動(dòng)跟蹤設(shè)計(jì)提供了近乎直接替代型的解決方案,但很多應(yīng)用還是對(duì)其他傳感器類型提出了要求。為幫助開發(fā)人員簡(jiǎn)化這些多傳感器設(shè)計(jì),ICM-20948 為其他外部傳感器提供單獨(dú)的 I2C 接口和內(nèi)置支持。開發(fā)人員在此將兼容 I2C 的智能傳感器連接到模塊的專用輔助 I2C 端口(圖 3)。
圖 3: 在 SPI(或 I2C)與主機(jī) MCU 連接的同時(shí),開發(fā)人員可以使用 TDK InvenSense ICM-20948 模塊的輔助 I2C 接口(AUX_CL 和 AUX_DA)連接外部傳感器,并通過 ICM-20948 的輔助設(shè)備專用寄存器管理它們。(圖片來(lái)源: TDK InvenSense)
在正常操作中,ICM-20948 將充當(dāng) I2C 總線控制器,以與外部傳感器通信。在此模式下,開發(fā)人員可編程一組專用的模塊寄存器,以定義外部設(shè)備的 I2C 地址、輸出數(shù)據(jù)地址以及其他的傳輸參數(shù)。用此信息,模塊可以將外部傳感器數(shù)據(jù)讀入其 FIFO 和外部設(shè)備數(shù)據(jù)寄存器中,從而在傳感器 I2C 總線上使用單字節(jié)或多字節(jié)讀取,而不會(huì)涉及到主機(jī) MCU。
ICM-20948 提供專門設(shè)計(jì)用于協(xié)調(diào) ICM-20948 與外部傳感器之間時(shí)間的一項(xiàng)額外功能。除了使用模塊的專用中斷 INT 引腳之外,開發(fā)人員還可以使用外部傳感器的中斷或同步脈沖驅(qū)動(dòng)模塊的 FSYNC 引腳。例如,在圖像穩(wěn)定應(yīng)用中,開發(fā)人員可以使用圖像傳感器的幀同步輸出來(lái)將圖像數(shù)據(jù)與 ICM-20948 傳感器讀數(shù)同步。使用模塊的 FSYNC_CONFIG 寄存器,開發(fā)人員甚至可以將模塊配置為測(cè)量外部傳感器 FSYNC 事件與 ICM-20948 數(shù)據(jù)事件之間的時(shí)間,從而在圖像和運(yùn)動(dòng)數(shù)據(jù)間提供更密集的同步。
但是,作為專用的運(yùn)動(dòng)跟蹤設(shè)備,ICM-20948 缺乏使用一般由主機(jī) MCU 處理的那種設(shè)備特定設(shè)置操作來(lái)配置外部傳感器所需的功能。為簡(jiǎn)化系統(tǒng)初始化過程,該模塊提供一種直通模式,以使用集成的接口旁通多路復(fù)用器將主機(jī)系統(tǒng)處理器直接連接到外部傳感器上。
在直通模式下,該設(shè)備使用其集成的模擬開關(guān)將輔助 I2C 引腳 AUX_CL(引腳 7)和 AUX_DA(引腳 21)直接以電氣方式連接到主機(jī) I2C 總線(引腳 23 和 24)。該工作模式提供一種簡(jiǎn)單的方法,以允許主機(jī)處理器處理與每個(gè)外部傳感器相關(guān)的任何配置和設(shè)置要求。初始化后,開發(fā)人員禁用旁通多路復(fù)用器,以允許 ICM-20948 接管正常操作時(shí)的外部傳感器訪問。
快速開發(fā)
盡管 ICM-20948 提出了相對(duì)簡(jiǎn)單的接口要求,但希望評(píng)估運(yùn)動(dòng)跟蹤解決方案的開發(fā)人員甚至可以避免該水平的硬件原型開發(fā)。TDK InvenSense 的 DK-20948 評(píng)估板和參考設(shè)計(jì)提供現(xiàn)成的開發(fā)平臺(tái),其結(jié)合了主機(jī) MCU、嵌入式調(diào)試器、USB 接口和用于增加其他傳感器的多個(gè)連接器、無(wú)線連接和其他功能(圖 4)。
圖 4: TDK InvenSense DK-20948 板提供一種完整的運(yùn)動(dòng)感應(yīng)設(shè)計(jì),其結(jié)合了 ICM-20948 模塊與 Microchip Technology ATSAMG55J19B MCU(左側(cè)中間)和基于 Microchip AT32UC3A4256 MCU(位于板的后側(cè))的嵌入式調(diào)試器。(圖片來(lái)源: TDK InvenSense)
DK-20948 板基于 Microchip Technology ATSAMG55J19B MCU,使用 ICM-20948 提供完整的運(yùn)動(dòng)傳感器設(shè)計(jì)。同時(shí),該板包括一個(gè)提供嵌入式調(diào)試功能的 Microchip AT32UC3A4256 MCU,從而在與主機(jī) ATSAMG55 MCU 結(jié)合使用時(shí)消除對(duì)外部工具的需求。開發(fā)人員可以使用該板評(píng)估 ICM-20948,在此過程中,無(wú)需進(jìn)一步的硬件工作或者其他定制或可用子板來(lái)擴(kuò)展其功能。開發(fā)人員完成其 ICM-20948 評(píng)估后,可以使用套件的示意圖、詳細(xì)的 BOM 和板設(shè)計(jì)文件創(chuàng)建定制設(shè)計(jì)。
對(duì)于軟件工程師而言,DK-20948 套件同樣包括用于快速評(píng)估和定制開發(fā)的選項(xiàng)。對(duì)于評(píng)估,公司基于 MotionLink GUI 的工具可使開發(fā)人員探索不同的配置設(shè)置及評(píng)估它們對(duì)所產(chǎn)生運(yùn)動(dòng)數(shù)據(jù)的影響。然而,對(duì)于大多數(shù)開發(fā)人員來(lái)說(shuō),套件的軟件開發(fā)包將很快成為他們的主要關(guān)注點(diǎn)。
定制軟件
對(duì)于定制軟件開發(fā),TDK InvenSense eMD(嵌入式運(yùn)動(dòng)驅(qū)動(dòng)器)SmartMotion 軟件包提供應(yīng)用編程接口 (API) 說(shuō)明文檔、驅(qū)動(dòng)源代碼、傳感器融合文庫(kù)以及預(yù)建的 DMP 固件圖像。同時(shí),該軟件包還包括構(gòu)建和閃現(xiàn)定制固件圖像的工具以及與評(píng)估板進(jìn)行控制臺(tái)交互的命令行實(shí)用程序。
eMD 軟件平臺(tái)設(shè)計(jì)用于與 Atmel/Microchip Technology Atmel Studio 配合使用,包含兩個(gè) Atmel Studio 包:內(nèi)核和應(yīng)用。內(nèi)核包包含編程和操作 ICM-20948 所需的底層驅(qū)動(dòng)器和固件,以及 DK-20948 板的 Microchip ATSAMG55J19B 主機(jī) MCU 的預(yù)建運(yùn)動(dòng)算法和 math 文件。
應(yīng)用包包含一個(gè)樣例應(yīng)用程序,用于演示內(nèi)核包的使用,包括從頂層應(yīng)用向下延伸到串行總線交易的主要設(shè)計(jì)模式。例如,主要的 C 例程展示開發(fā)人員如何初始化 ICM-20948 和獲取數(shù)據(jù)(列表 1)。
int main (void)
{
...
/* Initialize icm20948 serif structure */
struct inv_icm20948_serif icm20948_serif;
icm20948_serif.context = 0; /* no need */
icm20948_serif.read_reg = idd_io_hal_read_reg;
icm20948_serif.write_reg = idd_io_hal_write_reg;
icm20948_serif.max_read = 1024*16; /* max num bytes allowed per serial read */
icm20948_serif.max_write = 1024*16; /* max num bytes allowed per serial write */
icm20948_serif.is_spi = interface_is_SPI();
...
* Setup the icm20948 device */
icm20948_sensor_setup();
/*
* Now that Icm20948 device was initialized, proceed with DMP image loading
* This step is mandatory as DMP image are not store in non volatile memory
*/
load_dmp3();
/*
* Initialize Dynamic protocol stuff
*/
DynProTransportUart_init(&transport, iddwrapper_transport_event_cb, 0);
DynProtocol_init(&protocol, iddwrapper_protocol_event_cb, 0);
/*
* Initializes the default sensor ODR in order to properly init the algorithms
*/
sensor_configure_odr(period_us);
InvScheduler_init(&scheduler);
...
while (1) {
InvScheduler_dispatchTasks(&scheduler);
if (irq_from_device == 1) {
inv_icm20948_poll_sensor(&icm_device, (void *)0, build_sensor_event_data);
__disable_irq();
irq_from_device = 0;
__enable_irq();
}
}
return 0;
}
列表 1: 開發(fā)人員可以檢查 DK-20948 eMD SmartMotion 軟件包中提供的示例源代碼,以了解主要設(shè)計(jì)模式,如示例應(yīng)用的 main.c 例程中此代碼片段所列的 ICM-20948 初始化和傳感器輪詢模式。(代碼來(lái)源: TDK InvenSense)
編程 ICM-20948 等高度集成的設(shè)備時(shí),開發(fā)人員很容易發(fā)現(xiàn)自己不僅要應(yīng)付設(shè)備的很多配置選項(xiàng),還要應(yīng)付高效操作設(shè)備所需的大量軟件組件。eMD 內(nèi)核包通過一系列的抽象(包括軟件結(jié)構(gòu)和服務(wù)層)消除了該復(fù)雜性。例如,關(guān)鍵軟件結(jié)構(gòu) inv_icm20948 收集了操作 ICM-20948 所需的所有數(shù)據(jù)和元數(shù)據(jù),包括其串行接口定義(列表 2)。
/** @brief ICM20948 serial interface
*/
struct inv_icm20948_serif {
void * context;
int (*read_reg)(void * context, uint8_t reg, uint8_t * buf, uint32_t len);
int (*write_reg)(void * context, uint8_t reg, const uint8_t * buf, uint32_t len);
uint32_t max_read;
uint32_t max_write;
inv_bool_t is_spi;
};
列表 2: 為幫助降低軟件復(fù)雜性,DK-20948 eMD SmartMotion 軟件內(nèi)核例程提供很多 C 語(yǔ)言結(jié)構(gòu),這就是其中一個(gè)例子,該示例定義 ICM-20948 串行接口的設(shè)置及 I2C 或 SPI 交易所需的適當(dāng)?shù)讓幼x取和寫入例程的指示器。(代碼來(lái)源: TDK InvenSense)
在實(shí)例化 eMD 結(jié)構(gòu)及初始化設(shè)備本身之后,開發(fā)人員可以調(diào)用單個(gè)例程 inv_icm20948_poll_sensor(),以使用 inv_icm20948 結(jié)構(gòu)實(shí)例讀取傳感器和通過 DMP 處理數(shù)據(jù)。這份記錄齊全的例程有 900 多行,為開發(fā)人員詳細(xì)演示了操作傳感器、管理 FIFO 和利用 DMP 的核心功能的使用。
有興趣從更基礎(chǔ)的層面了解 ICM-20948 操作的開發(fā)人員可以轉(zhuǎn)向底層內(nèi)核例程,如設(shè)備自測(cè)試 Icm20948SelfTest.c 模塊中使用的例程。在此模塊中,int inv_do_test_accelgyro 等例程顯示了控制設(shè)備的典型寄存器操作(列表 3)。
static int inv_do_test_accelgyro(struct inv_icm20948 * s, enum INV_SENSORS sensorType, int *meanValue, int *stMeanValue)
{
...
// Set Self-Test Bit
if (sensorType == INV_SENSOR_GYRO)
{
// Enable gyroscope Self-Test by setting register User Bank 2, Register Address 02 (02h) Bit [5:3] to b111
result = inv_icm20948_write_single_mems_reg(s, REG_GYRO_CONFIG_2, BIT_GYRO_CTEN | SELFTEST_GYRO_AVGCFG);
} else
{
result = inv_icm20948_write_single_mems_reg(s, REG_ACCEL_CONFIG_2, BIT_ACCEL_CTEN | SELFTEST_ACCEL_DEC3_CFG);
}
...
}
列表 3: 開發(fā)人員可以在 DK-20948 eMD SmartMotion 軟件包中發(fā)現(xiàn)演示 ICM-20948 在多個(gè)抽象層面使用的例程,包括 Icm20948SelfTest.c 模塊此代碼片段中顯示的寄存器級(jí)訪問。(代碼來(lái)源: TDK InvenSense)
在列表 3 中,(相對(duì))高級(jí)的 inv_icm20948_write_single_mems_reg() 函數(shù)會(huì)調(diào)用低級(jí)例程 inv_icm20948_write_reg(),從而傳遞給常見的 inv_icm20948 結(jié)構(gòu)實(shí)例。該調(diào)用會(huì)向下傳達(dá)到低層,最終到達(dá)實(shí)際執(zhí)行寄存器寫入操作的例程中。為執(zhí)行此操作,該最終低級(jí)函數(shù)使用軟件初始化期間加載到 inv_icm20948_serif 串行接口結(jié)構(gòu)實(shí)例中的寄存器寫入例程指示器,如前面的列表 2 所示。這種分層方法對(duì)于幫助最大限度降低軟件復(fù)雜性和最大限度提高性能是必不可少的。
對(duì)于開發(fā)人員,eMD SmartMotion 架構(gòu)提供一個(gè)在一組一致的關(guān)鍵預(yù)定義結(jié)構(gòu)上構(gòu)建的靈活框架。使用 eMD 軟件包,開發(fā)人員可以在高水平上工作,從而使用抽象快速執(zhí)行應(yīng)用。同時(shí),開發(fā)人員可以輕松跳入低層以執(zhí)行定制功能,而不會(huì)失去與更高級(jí)軟件的一致性。eMD SmartMotion 軟件包和 DK-20948 開發(fā)板一起使用,可以提供全面的平臺(tái)來(lái)快速開發(fā)運(yùn)動(dòng)感應(yīng)應(yīng)用。
總結(jié)
TDK InvenSense ICM-20948 模塊為運(yùn)動(dòng)感應(yīng)提供了完全集成的解決方案。使用相關(guān)的 DK-20948 開發(fā)套件和 eMD SmartMotion 軟件包,開發(fā)人員可以快速構(gòu)建能夠滿足最低尺寸和功耗要求的運(yùn)動(dòng)感應(yīng)解決方案。
推薦閱讀:
特別推薦
- 授權(quán)代理商貿(mào)澤電子供應(yīng)Same Sky多樣化電子元器件
- 使用合適的窗口電壓監(jiān)控器優(yōu)化系統(tǒng)設(shè)計(jì)
- ADI電機(jī)運(yùn)動(dòng)控制解決方案 驅(qū)動(dòng)智能運(yùn)動(dòng)新時(shí)代
- 倍福推出采用 TwinSAFE SC 技術(shù)的 EtherCAT 端子模塊 EL3453-0090
- TDK推出新的X系列環(huán)保型SMD壓敏電阻
- Vishay 推出新款采用0102、0204和 0207封裝的精密薄膜MELF電阻
- Microchip推出新款交鑰匙電容式觸摸控制器產(chǎn)品 MTCH2120
技術(shù)文章更多>>
- 精準(zhǔn)監(jiān)測(cè)電離分?jǐn)?shù)與沉積通量,助力PVD/IPVD工藝與涂層質(zhì)量雙重提升
- ADC 總諧波失真
- 貿(mào)澤電子持續(xù)擴(kuò)充工業(yè)自動(dòng)化產(chǎn)品陣容
- 更高精度、更低噪音 GMCC美芝電子膨脹閥以創(chuàng)新?lián)屨夹袠I(yè)“制高點(diǎn)”
- 本立租完成近億元估值Pre-A輪融資,打造AI賦能的租賃服務(wù)平臺(tái)
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
電工電路
電機(jī)控制
電解電容
電纜連接器
電力電子
電力繼電器
電力線通信
電流保險(xiǎn)絲
電流表
電流傳感器
電流互感器
電路保護(hù)
電路圖
電路圖符號(hào)
電路圖知識(shí)
電腦OA
電腦電源
電腦自動(dòng)斷電
電能表接線
電容觸控屏
電容器
電容器單位
電容器公式
電聲器件
電位器
電位器接法
電壓表
電壓傳感器
電壓互感器
電源變壓器