【導(dǎo)讀】我們?cè)谏弦黄锩嬖敿?xì)介紹了加速度計(jì)的關(guān)鍵性能指標(biāo)以及應(yīng)用選型,本篇中我們會(huì)介紹如何通過(guò)加速度計(jì)內(nèi)部集成的功能實(shí)現(xiàn)更理想的超低功耗電池供電設(shè)備的姿態(tài)與運(yùn)動(dòng)檢測(cè),以便能更好的平衡性能與耗電這個(gè)電池供電設(shè)備的重要需求。
加速度計(jì)姿態(tài)與運(yùn)動(dòng)檢測(cè)
加速度
傳感器可以用來(lái)檢測(cè)物體的加速度,這個(gè)加速度包括了物體本身運(yùn)動(dòng)的加速度以及由于重力產(chǎn)生的加速度,前者主要用于檢測(cè)物體的運(yùn)動(dòng),而后者主要用于檢測(cè)物體的姿態(tài)。
我們?cè)谏弦黄锩嬖敿?xì)介紹了加速度計(jì)的關(guān)鍵性能指標(biāo)以及應(yīng)用選型,本篇中我們會(huì)介紹如何通過(guò)加速度計(jì)內(nèi)部集成的功能實(shí)現(xiàn)更理想的超低功耗電池供電設(shè)備的姿態(tài)與運(yùn)動(dòng)檢測(cè),以便能更好的平衡性能與耗電這個(gè)電池供電設(shè)備的重要需求。
軟的還是硬的,電池供電物聯(lián)網(wǎng)設(shè)備設(shè)計(jì)初始的抉擇
典型的電池供電的物聯(lián)網(wǎng)設(shè)備一般包含了感知單元(各種傳感器),邊緣計(jì)算單元(微控制器),無(wú)線連接單元(藍(lán)牙BLE,NBIOT,LPWLAN等)以及相應(yīng)的人機(jī)界面和電源管理部分,電池視使用場(chǎng)景需要工作十年或者數(shù)天,傳感器本身的超低功耗以及數(shù)據(jù)處理的超低功耗有助于延長(zhǎng)電池壽命,減少帶寬用量并因此降低成本,是智能物聯(lián)網(wǎng)設(shè)備方案設(shè)計(jì)中的重要考量。
圖1. 典型物聯(lián)網(wǎng)系統(tǒng)框圖
電池供電的物聯(lián)網(wǎng)產(chǎn)品,部分采用不可充電的紐扣電池,而部分需要更強(qiáng)運(yùn)算功能的需要采用可充電鋰電池,在有限的電池資源下如何延長(zhǎng)電池壽命,對(duì)于傳感器部分,常用的方式通常有兩種:
● 采用超低功耗的微處理器,通過(guò)利用傳感器本身自帶的FIFO功能,減少微處理器周期喚醒的次數(shù)和喚醒時(shí)間。
● 利用傳感器本身的搭載的低功耗邊緣計(jì)算功能,最大限度的降低微處理器的功耗。
圖2. 常用電池電壓和容量
以上兩種方式取決于系統(tǒng)的需求,得益于微處理器能耗比的提高特別是近年來(lái)亞閾值電壓(低于0.5V)微處理器的推廣以及傳感器Always on需求下的大容量FIFO的普及,純軟件的方式,可以在保證低功耗的情況下靈活處理數(shù)據(jù)應(yīng)對(duì)需求的變化和算法的改進(jìn)。而針對(duì)特定需求在傳感器內(nèi)部采用硬件實(shí)現(xiàn)的功能,比如靜止檢測(cè)、運(yùn)動(dòng)檢測(cè)、屏幕翻轉(zhuǎn)、失重、位置識(shí)別、單雙擊,計(jì)步,抬手亮屏,睡眠監(jiān)測(cè)等等,用戶只需簡(jiǎn)單配置算法對(duì)應(yīng)的寄存器即可開(kāi)始檢測(cè),一旦檢測(cè)到目標(biāo)事件,傳感器通過(guò)中斷管腳喚醒微處理器進(jìn)行相應(yīng)的處理,這種方式可以用戶無(wú)需自行開(kāi)發(fā)驗(yàn)證算法,可以更簡(jiǎn)便的使用傳感器實(shí)現(xiàn)相應(yīng)的功能,并能獲得更低的功耗。
下圖解釋了微處理器配合加速度計(jì)的32級(jí)FIFO進(jìn)行雙擊檢測(cè)和微處理器配合硬件雙擊檢測(cè)的加速度計(jì)的工作時(shí)序,由于加速度計(jì)硬件實(shí)現(xiàn)雙擊檢測(cè),微處理器只需要在獲得加速度計(jì)中斷后很短的時(shí)間確認(rèn),而無(wú)需周期喚醒去讀取FIFO數(shù)據(jù)并進(jìn)行雙擊的計(jì)算判別。
圖3. 雙擊FIFO模式和中斷模式處理器工作時(shí)序
上海矽睿科技的加速度傳感器可以提供靜止檢測(cè)、運(yùn)動(dòng)檢測(cè)、屏幕翻轉(zhuǎn)、位置識(shí)別、單雙擊,計(jì)步,抬手亮屏等等功能,我們將針對(duì)姿態(tài)和運(yùn)動(dòng)檢測(cè)需要的運(yùn)動(dòng)檢測(cè),靜止檢測(cè)以及用于無(wú)按鍵人界界面響應(yīng)的雙擊進(jìn)行介紹,并補(bǔ)充如何利用這些硬件特性配合微處理器軟件在低功耗下更好的檢測(cè)姿態(tài)的改變以及位移的改變。
圖4. 雙擊/計(jì)步器/抬手亮屏功耗對(duì)比
運(yùn)動(dòng)和靜止檢測(cè)
加速度計(jì)的運(yùn)動(dòng)和靜止檢測(cè)可以判定搭載加速度計(jì)的物件是靜止的,還是從靜止轉(zhuǎn)換到移動(dòng)狀態(tài),以及是如何移動(dòng)的,物體感受到的震動(dòng)的方式,物體的姿態(tài)是什么樣的,以及物體被旋轉(zhuǎn)了多少角度或者被移動(dòng)了多遠(yuǎn)的距離。所有的方向、搖晃、單擊、雙擊、下落、傾斜、運(yùn)動(dòng)、定位、沖擊的識(shí)別都可以依據(jù)加速度計(jì)的相關(guān)數(shù)據(jù)來(lái)判定。
加速度計(jì)的運(yùn)動(dòng)狀態(tài)檢測(cè)常見(jiàn)的用途有:
● 檢測(cè)由靜到動(dòng),比如車輛防盜系統(tǒng)中可以用加速度計(jì)判定異常的震動(dòng);電表水表汽表檢測(cè)非法打開(kāi)測(cè)量設(shè)備;手機(jī)里面依據(jù)震動(dòng)加上角度判斷識(shí)別手機(jī)是否被用戶拿起了;車載視頻監(jiān)控檢測(cè)到車輛啟動(dòng)自動(dòng)錄像操作,遙控器被拿起后進(jìn)入快速連接狀態(tài)等等;
● 檢測(cè)由動(dòng)到靜,主要是用于依靠這個(gè)狀態(tài)信息進(jìn)行相應(yīng)的控制,比如玩具如果在設(shè)定時(shí)間內(nèi)是靜止的,自動(dòng)關(guān)機(jī)節(jié)省電源等等;
● 檢測(cè)動(dòng)的方式,比如TWS耳機(jī)或者電子煙上使用敲擊的方式來(lái)實(shí)現(xiàn)無(wú)按鍵控制,比如計(jì)步檢測(cè),撞擊檢測(cè),雙擊實(shí)現(xiàn)類似電源開(kāi)關(guān)或者打開(kāi)費(fèi)電的射頻單元等等。
運(yùn)動(dòng)檢測(cè)(motion detection)主要包含了Anymotion detection(有效運(yùn)動(dòng)檢測(cè)),Signification Motion Detection(大幅度有效運(yùn)動(dòng)檢測(cè)),no motion(靜止檢測(cè))以及Tap(單擊/雙擊/三擊),Pedometer(計(jì)步器) 。
除了Pedometer(計(jì)步器)之外,其他的幾種運(yùn)動(dòng)檢測(cè)都依賴于加速度計(jì)在相鄰兩個(gè)時(shí)間點(diǎn)的變化值,實(shí)現(xiàn)的計(jì)算量很小,功耗很低,另外由于加速度計(jì)在相鄰兩個(gè)時(shí)間點(diǎn)的間隔時(shí)間很短(4ms~100ms),由于重力產(chǎn)生的加速度不會(huì)快速變化,因此信號(hào)斜率檢測(cè)的方式對(duì)于設(shè)備的初始姿態(tài)不敏感,而且對(duì)于芯片本身的零偏不敏感,而且可以指定任意的XYZ軸作為檢測(cè)軸,是一種很方便高效的檢測(cè)方式。
下圖為Anymotion detection(有效運(yùn)動(dòng)檢測(cè)),no motion(靜止檢測(cè))的示意圖。
圖5. Anymotion detection 時(shí)序圖
斜率定義為兩個(gè)相鄰時(shí)間點(diǎn)的加速度計(jì)值:Slope(t2)=(acc(t2)−acc(t1)),輸入允許是XYZ的任意一軸或者多軸的組合,需要設(shè)置斜率的閾值(Threshold)以及超過(guò)該閾值需要持續(xù)的時(shí)間(Duration),如果芯片檢測(cè)到符合這個(gè)設(shè)置的波形,將會(huì)提供一個(gè)中斷給微處理器,微處理器可以通過(guò)讀取相關(guān)的中斷寄存器確認(rèn)是Anymotion detection中斷,并可以讀取狀態(tài)寄存器獲取下面信息:
1) 最先滿足觸發(fā)條件的是哪個(gè)軸 ;
2) 觸發(fā)的信號(hào)是正方向的還是負(fù)方向的。
閾值(Threshold)與持續(xù)時(shí)間(Duration)的設(shè)置依賴于芯片的ODR,對(duì)于Anymotion detection的檢測(cè),可以以較低的ODR實(shí)現(xiàn),而較低的ODR可以獲得良好的功率控制。Duration可以選擇的點(diǎn)數(shù)目最多4個(gè)點(diǎn),閾值最小為16LSB(3.9mg@FS+/-2G),閾值最大為4G@FS=+/-8G,因此該檢測(cè)器可以檢測(cè)很小的運(yùn)動(dòng),也可以設(shè)置為檢測(cè)很強(qiáng)烈的撞擊,可以根據(jù)應(yīng)用的需求進(jìn)行相應(yīng)的設(shè)置。
no motion detection(靜止檢測(cè))的設(shè)置與Anymotion detection的設(shè)置類似,需要使能檢測(cè)軸,設(shè)置閾值以及檢測(cè)時(shí)間,任何一個(gè)軸滿足條件后,都會(huì)有no motion的中斷。
圖6. QMA7981在不同模式下和ODR下的功耗
Signification Motion Detection(大幅度有效運(yùn)動(dòng)檢測(cè))是Anymotion detection的加強(qiáng)版,主要應(yīng)用于持續(xù)的震動(dòng)檢測(cè)場(chǎng)景,以排除偶爾的震動(dòng)導(dǎo)致的系統(tǒng)喚醒。取決于應(yīng)用類型,這個(gè)大幅度有效運(yùn)動(dòng)檢測(cè)可以直接使用加速度計(jì)內(nèi)置的Signification Motion Detection亦或計(jì)步器數(shù)據(jù)。
圖7. Signification Motion Detection時(shí)序圖
圖7為Signification Motion Detection(大幅度有效運(yùn)動(dòng)檢測(cè))的時(shí)序圖,檢測(cè)到Anymotion 后,間隔T-skip時(shí)間后,如果在一個(gè)設(shè)定的檢測(cè)時(shí)間內(nèi)又有Anymotion信號(hào),則認(rèn)為是Significant Motion。
利用加速度計(jì)響應(yīng)敲擊動(dòng)作來(lái)做人機(jī)界面控制或者系統(tǒng)功耗管理也是一種常用的方式,考慮到系統(tǒng)的容錯(cuò)性和易使用性,雙擊和三擊是較常用的操作。
圖8. TAP時(shí)序圖
TAP有幾個(gè)重要的參數(shù):
● ShockTime:在該時(shí)間內(nèi),加速度計(jì)的斜率必須超過(guò)閾值Shock Threshold。
● QuietTime:在該時(shí)間內(nèi),加速度計(jì)的斜率必須小于閾值Quiet Threshold。
對(duì)于雙擊,還需要保證后面的一擊出現(xiàn)的時(shí)間必須在Duration time之內(nèi)。由于加速度計(jì)對(duì)于敲擊的響應(yīng),與設(shè)備的外型和敲擊動(dòng)作有關(guān),因此不同的設(shè)備,有些參數(shù)需要做細(xì)微的調(diào)整(比如TWS耳機(jī)的敲擊的加速計(jì)輸出值要遠(yuǎn)大于手機(jī)敲擊時(shí)加速度計(jì)的輸出值)。常用的設(shè)置如下:
姿態(tài)與位移檢測(cè)
利用加速度計(jì)可以得到準(zhǔn)確的靜態(tài)姿態(tài)信息,利用去除重力加速度后的線性加速度分量,可以粗略的計(jì)算位移信息。在僅依靠加速度計(jì)的情況下,動(dòng)態(tài)的姿態(tài)和位移的檢測(cè)的精度都是比較有限的,難點(diǎn)在于動(dòng)態(tài)特別是快速情況下如何有效的獲取準(zhǔn)確的重力加速度,利用多傳感器數(shù)據(jù)融合可以較好的解決這個(gè)問(wèn)題,要求高的應(yīng)用,可以考慮上海矽睿科技的慣性單元IMU QMI8610。
加速度計(jì)用于測(cè)量物體的姿態(tài),主要是包括俯仰角(Pitch ,按照安卓的定義是繞X軸旋轉(zhuǎn)的角度)和橫滾角(Roll,按照安卓的定義是繞Y軸旋轉(zhuǎn)的角度),用于水平檢測(cè)或者傾斜檢測(cè),有要求精度很高的應(yīng)用如傾角儀,設(shè)備的水平檢測(cè)等,也有簡(jiǎn)單的應(yīng)用比如電子價(jià)簽需要根據(jù)擺放的方向自動(dòng)旋轉(zhuǎn)屏幕,攝像頭的圖像圓轉(zhuǎn),比如車輛的傾倒檢測(cè),上坡檢測(cè),設(shè)備的姿態(tài)變化的識(shí)別也可以用于無(wú)按鍵模式下的輸入,用于取代低功耗磁傳感器的開(kāi)關(guān)作用。
圖9. 安卓Pitch/Roll定義
需要準(zhǔn)確的Pitch/Roll的角度可以按照下面的方法計(jì)算av=sqrtf(acc_data[x]*acc_data[x]+acc_data[y]*acc_data[y]+acc_data[z]*acc_data[z]);
計(jì)算 pitch 俯仰角度、roll 翻滾角度:
#define R2D 57.2957795131f
pitch = asinf(-acc_data[1]/av)*R2D;
roll = asinf(acc_data[0]/av)*R2D;
運(yùn)動(dòng)狀態(tài)下的姿態(tài)角的計(jì)算,需要將線性加速度去除后再進(jìn)行計(jì)算,常用的方法是對(duì)加速度計(jì)數(shù)據(jù)進(jìn)行低通濾波(例如gravity[x] = alpha * gravity[x] + (1 - alpha) * acc_data[x];),從而獲取與重力加速度相關(guān)的Gravity的值,然后再計(jì)算Pitch/Roll角度。在復(fù)雜運(yùn)動(dòng)狀態(tài)下,僅僅依靠加速度計(jì)估算線性加速度從而獲得真實(shí)的重力值,目前尚無(wú)性能特別好的辦法,要求高的可以采用IMU慣性單元做數(shù)據(jù)融合,依靠陀螺儀數(shù)據(jù)確認(rèn)夾角。(詳細(xì)軟件算法包:請(qǐng)找QST FAE申請(qǐng))
利用加速度計(jì)傳感器,測(cè)量物體沿著某個(gè)平面的移動(dòng)距離,可以采用低通濾波器去除重力加速度后獲得線性加速度,然后通過(guò)對(duì)線性加速度進(jìn)行二次積分獲取設(shè)備的移動(dòng)位置,從而判斷設(shè)備是否被移動(dòng),在車輛的防盜應(yīng)用中有應(yīng)用需求,在該種應(yīng)用中,考慮到加速度計(jì)的采樣速率,震動(dòng)噪聲以及加速度計(jì)二次積分的誤差,需要增加一個(gè)啟動(dòng)閾值判斷和終值零速判斷,從而提高精度減小誤差。
結(jié)束語(yǔ)
電池供電設(shè)備通過(guò)加速度計(jì)進(jìn)行姿態(tài)與運(yùn)動(dòng)檢測(cè),充分利用加速度傳感器內(nèi)部集成的硬件算法,能更好的平衡性能與耗電這個(gè)電池供電設(shè)備的重要需求,在直接使用內(nèi)部的硬件集成的算法無(wú)法實(shí)現(xiàn)的需求,可以通過(guò)采用硬件觸發(fā)檢測(cè)配合軟件獲取加速度傳感器的原始數(shù)據(jù)進(jìn)行附加計(jì)算,通過(guò)減少微控制器喚醒的時(shí)間和頻率的方式,可以降低功耗,延長(zhǎng)電池使用壽命。
推薦閱讀: