技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 淺析可穿戴設(shè)備和物聯(lián)網(wǎng)設(shè)計的運動跟蹤解決方案

淺析可穿戴設(shè)備和物聯(lián)網(wǎng)設(shè)計的運動跟蹤解決方案

時間:2018-08-02 10:59:04來源:網(wǎng)絡(luò)轉(zhuǎn)載

導(dǎo)語:?越來越多的可穿戴設(shè)備和物聯(lián)網(wǎng)設(shè)計將檢測方向和跟蹤運動的能力視為重要要求。盡管已經(jīng)有各種各樣的可用運動傳感器,但工程師還是不斷受到挑戰(zhàn),探索以更低的功耗更快、更高效地集成這些設(shè)備,這在額外增加傳感器時尤其具有挑戰(zhàn)性。

越來越多的可穿戴設(shè)備和物聯(lián)網(wǎng)設(shè)計將檢測方向和跟蹤運動的能力視為重要要求。盡管已經(jīng)有各種各樣的可用運動傳感器,但工程師還是不斷受到挑戰(zhàn),探索以更低的功耗更快、更高效地集成這些設(shè)備,這在額外增加傳感器時尤其具有挑戰(zhàn)性。

為應(yīng)對這些運動跟蹤挑戰(zhàn),設(shè)計人員需要集成度更高的加速計、陀螺儀和磁力儀五金件以及更加高效且智能的數(shù)據(jù)融合算法。

本文將介紹TDKInvenSense提供的同時為硬件和軟件提供幫助的解決方案。然后,本文還將介紹設(shè)計人員如何著手將該解決方案應(yīng)用于簡化需要復(fù)雜的運動感應(yīng)功能的復(fù)雜低功耗多傳感器應(yīng)用的開發(fā)。

高效運動跟蹤的挑戰(zhàn)

利用傳統(tǒng)的運動跟蹤方法,開發(fā)人員可以同時為硬件和軟件處理重要的集成問題。在硬件方面,開發(fā)人員通常會努力在采用單獨的傳感器(包括加速計、陀螺儀和磁力儀)構(gòu)建的設(shè)計中最大限度減少其復(fù)雜性、尺寸和零件的數(shù)量。軟件工程師則需要特別注意同步各種各樣的傳感器輸出,以創(chuàng)建高級運動跟蹤應(yīng)用中所用傳感器融合算法所需的統(tǒng)一數(shù)據(jù)流。對于硬件和軟件開發(fā)人員而言,需要在設(shè)計中集成額外傳感器類型的應(yīng)用面臨的挑戰(zhàn)均顯著增加。

但是,使用TDKInvenSenseICM-20948,開發(fā)人員便能夠以最少的工作量快速實現(xiàn)運動跟蹤設(shè)計或其他多傳感器系統(tǒng)。

運動跟蹤解決方案

TDKInvenSenseICM-20948是一種多芯片模塊,尺寸只有3mmx3mmx1mm,它集成了提供完整運動跟蹤解決方案所需的整套傳感器、信號鏈、數(shù)據(jù)處理和接 口電路(圖1)。

圖1:TDKInvenSenseICM-20948通過其專用的信號鏈、可編程濾波器、接口電路和數(shù)字運動處理器執(zhí)行運動跟蹤

該模塊在全面工作模式下僅需要3毫安(mA)左右便能實現(xiàn)其全部功能。對于功率受限的應(yīng)用,開發(fā)人員可以關(guān)閉模塊的某些部分,從而將完全休眠模式下各階段的電流消耗降低至8微安(μA)。產(chǎn)生的功耗取決于工作電壓(VDD),根據(jù)設(shè)計要求,該電壓值可以介于1.71伏特和3.6伏特。

單獨的信號鏈集成在模塊中,為集成的3軸加速計、3軸陀螺儀和3軸磁力儀以及集成的溫度傳感器的每個通道提供支持。每個信號鏈都包括緩沖放大器和一個專用的16位模數(shù)轉(zhuǎn)換器(ADC),以及特定于傳感器的電路,如驅(qū)動模塊的霍爾效應(yīng)磁力儀的電流源。

為了提高每種信號鏈的輸出,模塊包括適用于每種進(jìn)一步傳感器類型的信號調(diào)節(jié)階段。例如,磁力儀輸出通過算術(shù)電路進(jìn)行基本信號處理,而其他傳感器的輸出各自饋入自動的傳感器特定調(diào)節(jié)階段,以執(zhí)行采樣平均等處理功能。開發(fā)人員可以將ICM-20948設(shè)置為平均多達(dá)128個陀螺儀數(shù)據(jù)采樣,或者將加速計設(shè)置為平均多達(dá)32個采樣。最終,每個通道的信號調(diào)節(jié)階段的輸出饋入一組專用的傳感器寄存器中。

ICM-20948的核心是一個專有的數(shù)字運動處理器(DMP),用于提供各種不同的功能,包括執(zhí)行運動處理算法、校準(zhǔn)和自測試。在正常工作期間,DMP會處理來自專用傳感器寄存器的數(shù)據(jù)。然后再將結(jié)果存儲在模塊的集成式FIFO中,供主機MCU通過共享的I2C或SPI總線訪問。

DMP和FIFO的功能為很多實際應(yīng)用提供重要功能。很多情況下,應(yīng)用以相對較慢的速度更新其運動跟蹤結(jié)果,甚至允許其主機處理器在更新之間休眠,以降低總功耗。然而,運動跟蹤算法需要的更新速度明顯更高,以確保其在應(yīng)用請求更新時以最低的延時提供精確的數(shù)據(jù)。DMP能夠在不需要主機參與的情況下維持高更新速度,這有助于確保準(zhǔn)確性,而不會對主機應(yīng)用本身的性能或功耗強加額外的要求。

簡單的集成

ICM-20948結(jié)合了小封裝、系統(tǒng)集成功能及主機獨立操作等特點,特別適合在移動設(shè)備、可穿戴設(shè)備和物聯(lián)網(wǎng)設(shè)計中使用。模塊的高水平集成意味著,開發(fā)人員僅使用三個電容器便可以執(zhí)行典型的運動跟蹤設(shè)計。按照TDKInvenSense使用陶瓷X7R零件的建議,開發(fā)人員將在模塊的REGOUT引腳上增加一個0.1μF電容器進(jìn)行穩(wěn)壓器濾波,并在其VDD和VDDIO引腳上增加一個該電容器用于電源旁通(圖2)。

 

圖2:設(shè)計人員可以將TDKInvenSenseICM-20948輕松添加到基于MCU的設(shè)計中,從而通過SPI(此處所示)或I2C接口連接到MCU,后者使用相同的配置,但引腳22(nCS)與VDDIO相關(guān)聯(lián)

雖然ICM-20948為運動跟蹤設(shè)計提供了近乎直接替代型的解決方案,但很多應(yīng)用還是對其他傳感器類型提出了要求。為幫助開發(fā)人員簡化這些多傳感器設(shè)計,ICM-20948為其他外部傳感器提供單獨的I2C接口和內(nèi)置支持。開發(fā)人員在此將兼容I2C的智能傳感器連接到模塊的專用輔助I2C端口(圖3)。

 

圖3:在SPI(或I2C)與主機MCU連接的同時,開發(fā)人員可以使用TDKInvenSenseICM-20948模塊的輔助I2C接口(AUX_CL和AUX_DA)連接外部傳感器,并通過ICM-20948的輔助設(shè)備專用寄存器管理它們

在正常操作中,ICM-20948將充當(dāng)I2C總線控制器,以與外部傳感器通信。在此模式下,開發(fā)人員可編程一組專用的模塊寄存器,以定義外部設(shè)備的I2C地址、輸出數(shù)據(jù)地址以及其他的傳輸參數(shù)。用此信息,模塊可以將外部傳感器數(shù)據(jù)讀入其FIFO和外部設(shè)備數(shù)據(jù)寄存器中,從而在傳感器I2C總線上使用單字節(jié)或多字節(jié)讀取,而不會涉及到主機MCU。

ICM-20948提供專門設(shè)計用于協(xié)調(diào)ICM-20948與外部傳感器之間時間的一項額外功能。除了使用模塊的專用中斷INT引腳之外,開發(fā)人員還可以使用外部傳感器的中斷或同步脈沖驅(qū)動模塊的FSYNC引腳。例如,在圖像穩(wěn)定應(yīng)用中,開發(fā)人員可以使用圖像傳感器的幀同步輸出來將圖像數(shù)據(jù)與ICM-20948傳感器讀數(shù)同步。使用模塊的FSYNC_CONFIG寄存器,開發(fā)人員甚至可以將模塊配置為測量外部傳感器FSYNC事件與ICM-20948數(shù)據(jù)事件之間的時間,從而在圖像和運動數(shù)據(jù)間提供更密集的同步。

但是,作為專用的運動跟蹤設(shè)備,ICM-20948缺乏使用一般由主機MCU處理的那種設(shè)備特定設(shè)置操作來配置外部傳感器所需的功能。為簡化系統(tǒng)初始化過程,該模塊提供一種直通模式,以使用集成的接口旁通多路復(fù)用器將主機系統(tǒng)處理器直接連接到外部傳感器上。

在直通模式下,該設(shè)備使用其集成的模擬開關(guān)將輔助I2C引腳AUX_CL(引腳7)和AUX_DA(引腳21)直接以電氣方式連接到主機I2C總線(引腳23和24)。該工作模式提供一種簡單的方法,以允許主機處理器處理與每個外部傳感器相關(guān)的任何配置和設(shè)置要求。初始化后,開發(fā)人員禁用旁通多路復(fù)用器,以允許ICM-20948接管正常操作時的外部傳感器訪問。

快速開發(fā)

盡管ICM-20948提出了相對簡單的接口要求,但希望評估運動跟蹤解決方案的開發(fā)人員甚至可以避免該水平的硬件原型開發(fā)。TDKInvenSense的DK-20948評估板和參考設(shè)計提供現(xiàn)成的開發(fā)平臺,其結(jié)合了主機MCU、嵌入式調(diào)試器、USB接口和用于增加其他傳感器的多個連接器、無線連接和其他功能(圖4)。

 

圖4:TDKInvenSenseDK-20948板提供一種完整的運動感應(yīng)設(shè)計,其結(jié)合了ICM-20948模塊與MicrochipTechnologyATSAMG55J19BMCU(左側(cè)中間)和基于MicrochipAT32UC3A4256MCU(位于板的后側(cè))的嵌入式調(diào)試器

DK-20948板基于MicrochipTechnologyATSAMG55J19BMCU,使用ICM-20948提供完整的運動傳感器設(shè)計。同時,該板包括一個提供嵌入式調(diào)試功能的MicrochipAT32UC3A4256MCU,從而在與主機ATSAMG55MCU結(jié)合使用時消除對外部工具的需求。開發(fā)人員可以使用該板評估ICM-20948,在此過程中,無需進(jìn)一步的硬件工作或者其他定制或可用子板來擴(kuò)展其功能。開發(fā)人員完成其ICM-20948評估后,可以使用套件的示意圖、詳細(xì)的BOM和板設(shè)計文件創(chuàng)建定制設(shè)計。

對于軟件工程師而言,DK-20948套件同樣包括用于快速評估和定制開發(fā)的選項。對于評估,公司基于MotionLinkGUI的工具可使開發(fā)人員探索不同的配置設(shè)置及評估它們對所產(chǎn)生運動數(shù)據(jù)的影響。然而,對于大多數(shù)開發(fā)人員來說,套件的軟件開發(fā)包將很快成為他們的主要關(guān)注點。

定制軟件

對于定制軟件開發(fā),TDKInvenSenseeMD(嵌入式運動驅(qū)動器)SmartMotion軟件包提供應(yīng)用編程接口(API)說明文檔、驅(qū)動源代碼、傳感器融合文庫以及預(yù)建的DMP固件圖像。同時,該軟件包還包括構(gòu)建和閃現(xiàn)定制固件圖像的工具以及與評估板進(jìn)行控制臺交互的命令行實用程序。

eMD軟件平臺設(shè)計用于與Atmel/MicrochipTechnologyAtmelStudio配合使用,包含兩個AtmelStudio包:內(nèi)核和應(yīng)用。內(nèi)核包包含編程和操作ICM-20948所需的底層驅(qū)動器和固件,以及DK-20948板的MicrochipATSAMG55J19B主機MCU的預(yù)建運動算法和math文件。

應(yīng)用包包含一個樣例應(yīng)用程序,用于演示內(nèi)核包的使用,包括從頂層應(yīng)用向下延伸到串行總線交易的主要設(shè)計模式。例如,主要的C例程展示開發(fā)人員如何初始化ICM-20948和獲取數(shù)據(jù)(列表1)。

intmain(void)

{/*Initializeicm20948serifstructure*/

structinv_icm20948_serificm20948_serif;

icm20948_serif.context=0;/*noneed*/

icm20948_serif.read_reg=idd_io_hal_read_reg;

icm20948_serif.write_reg=idd_io_hal_write_reg;

icm20948_serif.max_read=1024*16;/*maxnumbytesallowedperserialread*/

icm20948_serif.max_write=1024*16;/*maxnumbytesallowedperserialwrite*/

icm20948_serif.is_spi=interface_is_SPI();

*Setuptheicm20948device*/

icm20948_sensor_setup();

/*

*NowthatIcm20948devicewasinitialized,proceedwithDMPimageloading

*ThisstepismandatoryasDMPimagearenotstoreinnonvolatilememory

*/

load_dmp3();

/*

*InitializeDynamicprotocolstuff

*/

DynProTransportUart_init(&transport,iddwrapper_transport_event_cb,0);

DynProtocol_init(&protocol,iddwrapper_protocol_event_cb,0);

/*

*InitializesthedefaultsensorODRinordertoproperlyinitthealgorithms

*/

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();

}

}

return0;

}

列表1:開發(fā)人員可以檢查DK-20948eMDSmartMotion軟件包中提供的示例源代碼,以了解主要設(shè)計模式,如示例應(yīng)用的main.c例程中此代碼片段所列的ICM-20948初始化和傳感器輪詢模式。(代碼來源:TDKInvenSense)

編程ICM-20948等高度集成的設(shè)備時,開發(fā)人員很容易發(fā)現(xiàn)自己不僅要應(yīng)付設(shè)備的很多配置選項,還要應(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)。

/**@briefICM20948serialinterface

*/

structinv_icm20948_serif{

void*context;

int(*read_reg)(void*context,uint8_treg,uint8_t*buf,uint32_tlen);

int(*write_reg)(void*context,uint8_treg,constuint8_t*buf,uint32_tlen);

uint32_tmax_read;

uint32_tmax_write;

inv_bool_tis_spi;

};

列表2:為幫助降低軟件復(fù)雜性,DK-20948eMDSmartMotion軟件內(nèi)核例程提供很多C語言結(jié)構(gòu),這就是其中一個例子,該示例定義ICM-20948串行接口的設(shè)置及I2C或SPI交易所需的適當(dāng)?shù)讓幼x取和寫入例程的指示器。(代碼來源:TDKInvenSense)

在實例化eMD結(jié)構(gòu)及初始化設(shè)備本身之后,開發(fā)人員可以調(diào)用單個例程inv_icm20948_poll_sensor(),以使用inv_icm20948結(jié)構(gòu)實例讀取傳感器和通過DMP處理數(shù)據(jù)。這份記錄齊全的例程有900多行,為開發(fā)人員詳細(xì)演示了操作傳感器、管理FIFO和利用DMP的核心功能的使用。

有興趣從更基礎(chǔ)的層面了解ICM-20948操作的開發(fā)人員可以轉(zhuǎn)向底層內(nèi)核例程,如設(shè)備自測試Icm20948SelfTest.c模塊中使用的例程。在此模塊中,intinv_do_test_accelgyro等例程顯示了控制設(shè)備的典型寄存器操作(列表3)。

staticintinv_do_test_accelgyro(structinv_icm20948*s,enumINV_SENSORSsensorType,int*meanValue,int*stMeanValue)

{

//SetSelf-TestBit

if(sensorType==INV_SENSOR_GYRO)

{

//EnablegyroscopeSelf-TestbysettingregisterUserBank2,RegisterAddress02(02h)Bit[5:3]tob111

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-20948eMDSmartMotion軟件包中發(fā)現(xiàn)演示ICM-20948在多個抽象層面使用的例程,包括Icm20948SelfTest.c模塊此代碼片段中顯示的寄存器級訪問。(代碼來源:TDKInvenSense)

在列表3中,(相對)高級的inv_icm20948_write_single_mems_reg()函數(shù)會調(diào)用低級例程inv_icm20948_write_reg(),從而傳遞給常見的inv_icm20948結(jié)構(gòu)實例。該調(diào)用會向下傳達(dá)到低層,最終到達(dá)實際執(zhí)行寄存器寫入操作的例程中。為執(zhí)行此操作,該最終低級函數(shù)使用軟件初始化期間加載到inv_icm20948_serif串行接口結(jié)構(gòu)實例中的寄存器寫入例程指示器,如前面的列表2所示。這種分層方法對于幫助最大限度降低軟件復(fù)雜性和最大限度提高性能是必不可少的。

對于開發(fā)人員,eMDSmartMotion架構(gòu)提供一個在一組一致的關(guān)鍵預(yù)定義結(jié)構(gòu)上構(gòu)建的靈活框架。使用eMD軟件包,開發(fā)人員可以在高水平上工作,從而使用抽象快速執(zhí)行應(yīng)用。同時,開發(fā)人員可以輕松跳入低層以執(zhí)行定制功能,而不會失去與更高級軟件的一致性。eMDSmartMotion軟件包和DK-20948開發(fā)板一起使用,可以提供全面的平臺來快速開發(fā)運動感應(yīng)應(yīng)用。

總結(jié)

TDKInvenSenseICM-20948模塊為運動感應(yīng)提供了完全集成的解決方案。使用相關(guān)的DK-20948開發(fā)套件和eMDSmartMotion軟件包,開發(fā)人員可以快速構(gòu)建能夠滿足最低尺寸和功耗要求的運動感應(yīng)解決方案。

標(biāo)簽:

點贊

分享到:

上一篇:施耐德變頻器常見問題解析

下一篇:舊貌換新--顏工業(yè)機器人的維...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號