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