【導讀】我們在上一篇里面詳細介紹了加速度計的關(guān)鍵性能指標以及應用選型,本篇中我們會(huì )介紹如何通過(guò)加速度計內部集成的功能實(shí)現更理想的超低功耗電池供電設備的姿態(tài)與運動(dòng)檢測,以便能更好的平衡性能與耗電這個(gè)電池供電設備的重要需求。
加速度計姿態(tài)與運動(dòng)檢測
加速度傳感器可以用來(lái)檢測物體的加速度,這個(gè)加速度包括了物體本身運動(dòng)的加速度以及由于重力產(chǎn)生的加速度,前者主要用于檢測物體的運動(dòng),而后者主要用于檢測物體的姿態(tài)。
我們在上一篇里面詳細介紹了加速度計的關(guān)鍵性能指標以及應用選型,本篇中我們會(huì )介紹如何通過(guò)加速度計內部集成的功能實(shí)現更理想的超低功耗電池供電設備的姿態(tài)與運動(dòng)檢測,以便能更好的平衡性能與耗電這個(gè)電池供電設備的重要需求。
軟的還是硬的,電池供電物聯(lián)網(wǎng)設備設計初始的抉擇
典型的電池供電的物聯(lián)網(wǎng)設備一般包含了感知單元(各種傳感器),邊緣計算單元(微控制器),無(wú)線(xiàn)連接單元(藍牙BLE,NBIOT,LPWLAN等)以及相應的人機界面和電源管理部分,電池視使用場(chǎng)景需要工作十年或者數天,傳感器本身的超低功耗以及數據處理的超低功耗有助于延長(cháng)電池壽命,減少帶寬用量并因此降低成本,是智能物聯(lián)網(wǎng)設備方案設計中的重要考量。

圖1. 典型物聯(lián)網(wǎng)系統框圖
電池供電的物聯(lián)網(wǎng)產(chǎn)品,部分采用不可充電的紐扣電池,而部分需要更強運算功能的需要采用可充電鋰電池,在有限的電池資源下如何延長(cháng)電池壽命,對于傳感器部分,常用的方式通常有兩種:
● 采用超低功耗的微處理器,通過(guò)利用傳感器本身自帶的FIFO功能,減少微處理器周期喚醒的次數和喚醒時(shí)間。
● 利用傳感器本身的搭載的低功耗邊緣計算功能,最大限度的降低微處理器的功耗。

圖2. 常用電池電壓和容量
以上兩種方式取決于系統的需求,得益于微處理器能耗比的提高特別是近年來(lái)亞閾值電壓(低于0.5V)微處理器的推廣以及傳感器Always on需求下的大容量FIFO的普及,純軟件的方式,可以在保證低功耗的情況下靈活處理數據應對需求的變化和算法的改進(jìn)。而針對特定需求在傳感器內部采用硬件實(shí)現的功能,比如靜止檢測、運動(dòng)檢測、屏幕翻轉、失重、位置識別、單雙擊,計步,抬手亮屏,睡眠監測等等,用戶(hù)只需簡(jiǎn)單配置算法對應的寄存器即可開(kāi)始檢測,一旦檢測到目標事件,傳感器通過(guò)中斷管腳喚醒微處理器進(jìn)行相應的處理,這種方式可以用戶(hù)無(wú)需自行開(kāi)發(fā)驗證算法,可以更簡(jiǎn)便的使用傳感器實(shí)現相應的功能,并能獲得更低的功耗。
下圖解釋了微處理器配合加速度計的32級FIFO進(jìn)行雙擊檢測和微處理器配合硬件雙擊檢測的加速度計的工作時(shí)序,由于加速度計硬件實(shí)現雙擊檢測,微處理器只需要在獲得加速度計中斷后很短的時(shí)間確認,而無(wú)需周期喚醒去讀取FIFO數據并進(jìn)行雙擊的計算判別。

圖3. 雙擊FIFO模式和中斷模式處理器工作時(shí)序
上海矽??萍嫉募铀俣葌鞲衅骺梢蕴峁╈o止檢測、運動(dòng)檢測、屏幕翻轉、位置識別、單雙擊,計步,抬手亮屏等等功能,我們將針對姿態(tài)和運動(dòng)檢測需要的運動(dòng)檢測,靜止檢測以及用于無(wú)按鍵人界界面響應的雙擊進(jìn)行介紹,并補充如何利用這些硬件特性配合微處理器軟件在低功耗下更好的檢測姿態(tài)的改變以及位移的改變。

圖4. 雙擊/計步器/抬手亮屏功耗對比
運動(dòng)和靜止檢測
加速度計的運動(dòng)和靜止檢測可以判定搭載加速度計的物件是靜止的,還是從靜止轉換到移動(dòng)狀態(tài),以及是如何移動(dòng)的,物體感受到的震動(dòng)的方式,物體的姿態(tài)是什么樣的,以及物體被旋轉了多少角度或者被移動(dòng)了多遠的距離。所有的方向、搖晃、單擊、雙擊、下落、傾斜、運動(dòng)、定位、沖擊的識別都可以依據加速度計的相關(guān)數據來(lái)判定。
加速度計的運動(dòng)狀態(tài)檢測常見(jiàn)的用途有:
● 檢測由靜到動(dòng),比如車(chē)輛防盜系統中可以用加速度計判定異常的震動(dòng);電表水表汽表檢測非法打開(kāi)測量設備;手機里面依據震動(dòng)加上角度判斷識別手機是否被用戶(hù)拿起了;車(chē)載視頻監控檢測到車(chē)輛啟動(dòng)自動(dòng)錄像操作,遙控器被拿起后進(jìn)入快速連接狀態(tài)等等;
● 檢測由動(dòng)到靜,主要是用于依靠這個(gè)狀態(tài)信息進(jìn)行相應的控制,比如玩具如果在設定時(shí)間內是靜止的,自動(dòng)關(guān)機節省電源等等;
● 檢測動(dòng)的方式,比如TWS耳機或者電子煙上使用敲擊的方式來(lái)實(shí)現無(wú)按鍵控制,比如計步檢測,撞擊檢測,雙擊實(shí)現類(lèi)似電源開(kāi)關(guān)或者打開(kāi)費電的射頻單元等等。
運動(dòng)檢測(motion detection)主要包含了Anymotion detection(有效運動(dòng)檢測),Signification Motion Detection(大幅度有效運動(dòng)檢測),no motion(靜止檢測)以及Tap(單擊/雙擊/三擊),Pedometer(計步器) 。
除了Pedometer(計步器)之外,其他的幾種運動(dòng)檢測都依賴(lài)于加速度計在相鄰兩個(gè)時(shí)間點(diǎn)的變化值,實(shí)現的計算量很小,功耗很低,另外由于加速度計在相鄰兩個(gè)時(shí)間點(diǎn)的間隔時(shí)間很短(4ms~100ms),由于重力產(chǎn)生的加速度不會(huì )快速變化,因此信號斜率檢測的方式對于設備的初始姿態(tài)不敏感,而且對于芯片本身的零偏不敏感,而且可以指定任意的XYZ軸作為檢測軸,是一種很方便高效的檢測方式。
下圖為Anymotion detection(有效運動(dòng)檢測),no motion(靜止檢測)的示意圖。

圖5. Anymotion detection 時(shí)序圖
斜率定義為兩個(gè)相鄰時(shí)間點(diǎn)的加速度計值:Slope(t2)=(acc(t2)−acc(t1)),輸入允許是XYZ的任意一軸或者多軸的組合,需要設置斜率的閾值(Threshold)以及超過(guò)該閾值需要持續的時(shí)間(Duration),如果芯片檢測到符合這個(gè)設置的波形,將會(huì )提供一個(gè)中斷給微處理器,微處理器可以通過(guò)讀取相關(guān)的中斷寄存器確認是Anymotion detection中斷,并可以讀取狀態(tài)寄存器獲取下面信息:
1) 最先滿(mǎn)足觸發(fā)條件的是哪個(gè)軸 ;
2) 觸發(fā)的信號是正方向的還是負方向的。
閾值(Threshold)與持續時(shí)間(Duration)的設置依賴(lài)于芯片的ODR,對于A(yíng)nymotion detection的檢測,可以以較低的ODR實(shí)現,而較低的ODR可以獲得良好的功率控制。Duration可以選擇的點(diǎn)數目最多4個(gè)點(diǎn),閾值最小為16LSB(3.9mg@FS+/-2G),閾值最大為4G@FS=+/-8G,因此該檢測器可以檢測很小的運動(dòng),也可以設置為檢測很強烈的撞擊,可以根據應用的需求進(jìn)行相應的設置。
no motion detection(靜止檢測)的設置與Anymotion detection的設置類(lèi)似,需要使能檢測軸,設置閾值以及檢測時(shí)間,任何一個(gè)軸滿(mǎn)足條件后,都會(huì )有no motion的中斷。

圖6. QMA7981在不同模式下和ODR下的功耗
Signification Motion Detection(大幅度有效運動(dòng)檢測)是Anymotion detection的加強版,主要應用于持續的震動(dòng)檢測場(chǎng)景,以排除偶爾的震動(dòng)導致的系統喚醒。取決于應用類(lèi)型,這個(gè)大幅度有效運動(dòng)檢測可以直接使用加速度計內置的Signification Motion Detection亦或計步器數據。

圖7. Signification Motion Detection時(shí)序圖
圖7為Signification Motion Detection(大幅度有效運動(dòng)檢測)的時(shí)序圖,檢測到Anymotion 后,間隔T-skip時(shí)間后,如果在一個(gè)設定的檢測時(shí)間內又有Anymotion信號,則認為是Significant Motion。
利用加速度計響應敲擊動(dòng)作來(lái)做人機界面控制或者系統功耗管理也是一種常用的方式,考慮到系統的容錯性和易使用性,雙擊和三擊是較常用的操作。

圖8. TAP時(shí)序圖
TAP有幾個(gè)重要的參數:
● ShockTime:在該時(shí)間內,加速度計的斜率必須超過(guò)閾值Shock Threshold。
● QuietTime:在該時(shí)間內,加速度計的斜率必須小于閾值Quiet Threshold。
對于雙擊,還需要保證后面的一擊出現的時(shí)間必須在Duration time之內。由于加速度計對于敲擊的響應,與設備的外型和敲擊動(dòng)作有關(guān),因此不同的設備,有些參數需要做細微的調整(比如TWS耳機的敲擊的加速計輸出值要遠大于手機敲擊時(shí)加速度計的輸出值)。常用的設置如下:

姿態(tài)與位移檢測
利用加速度計可以得到準確的靜態(tài)姿態(tài)信息,利用去除重力加速度后的線(xiàn)性加速度分量,可以粗略的計算位移信息。在僅依靠加速度計的情況下,動(dòng)態(tài)的姿態(tài)和位移的檢測的精度都是比較有限的,難點(diǎn)在于動(dòng)態(tài)特別是快速情況下如何有效的獲取準確的重力加速度,利用多傳感器數據融合可以較好的解決這個(gè)問(wèn)題,要求高的應用,可以考慮上海矽??萍嫉膽T性單元IMU QMI8610。
加速度計用于測量物體的姿態(tài),主要是包括俯仰角(Pitch ,按照安卓的定義是繞X軸旋轉的角度)和橫滾角(Roll,按照安卓的定義是繞Y軸旋轉的角度),用于水平檢測或者傾斜檢測,有要求精度很高的應用如傾角儀,設備的水平檢測等,也有簡(jiǎn)單的應用比如電子價(jià)簽需要根據擺放的方向自動(dòng)旋轉屏幕,攝像頭的圖像圓轉,比如車(chē)輛的傾倒檢測,上坡檢測,設備的姿態(tài)變化的識別也可以用于無(wú)按鍵模式下的輸入,用于取代低功耗磁傳感器的開(kā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;
運動(dòng)狀態(tài)下的姿態(tài)角的計算,需要將線(xiàn)性加速度去除后再進(jìn)行計算,常用的方法是對加速度計數據進(jìn)行低通濾波(例如gravity[x] = alpha * gravity[x] + (1 - alpha) * acc_data[x];),從而獲取與重力加速度相關(guān)的Gravity的值,然后再計算Pitch/Roll角度。在復雜運動(dòng)狀態(tài)下,僅僅依靠加速度計估算線(xiàn)性加速度從而獲得真實(shí)的重力值,目前尚無(wú)性能特別好的辦法,要求高的可以采用IMU慣性單元做數據融合,依靠陀螺儀數據確認夾角。(詳細軟件算法包:請找QST FAE申請)
利用加速度計傳感器,測量物體沿著(zhù)某個(gè)平面的移動(dòng)距離,可以采用低通濾波器去除重力加速度后獲得線(xiàn)性加速度,然后通過(guò)對線(xiàn)性加速度進(jìn)行二次積分獲取設備的移動(dòng)位置,從而判斷設備是否被移動(dòng),在車(chē)輛的防盜應用中有應用需求,在該種應用中,考慮到加速度計的采樣速率,震動(dòng)噪聲以及加速度計二次積分的誤差,需要增加一個(gè)啟動(dòng)閾值判斷和終值零速判斷,從而提高精度減小誤差。
結束語(yǔ)
電池供電設備通過(guò)加速度計進(jìn)行姿態(tài)與運動(dòng)檢測,充分利用加速度傳感器內部集成的硬件算法,能更好的平衡性能與耗電這個(gè)電池供電設備的重要需求,在直接使用內部的硬件集成的算法無(wú)法實(shí)現的需求,可以通過(guò)采用硬件觸發(fā)檢測配合軟件獲取加速度傳感器的原始數據進(jìn)行附加計算,通過(guò)減少微控制器喚醒的時(shí)間和頻率的方式,可以降低功耗,延長(cháng)電池使用壽命。
推薦閱讀: