本應(yīng)用筆記介紹了367軸數(shù)字加速度計(jì)ADXL3的計(jì)步器算法實(shí)現(xiàn)。該算法基于對(duì)預(yù)定義時(shí)間窗口內(nèi)步進(jìn)產(chǎn)生的加速度的峰值檢測(cè)分析。腕戴式用例的經(jīng)驗(yàn)結(jié)果表明,在不同情況下,平均準(zhǔn)確率約為 97%。
使用慣性傳感器計(jì)步
計(jì)步是任何健身可穿戴設(shè)備中最常見(jiàn)的功能之一,通常利用數(shù)字慣性傳感器(如加速度計(jì)和陀螺儀)來(lái)實(shí)現(xiàn)。
計(jì)算步數(shù)的兩種主要方法在分析手臂的擺動(dòng)運(yùn)動(dòng)部分和測(cè)量步數(shù)沖擊加速度部分中進(jìn)行了討論。
分析手臂的擺動(dòng)運(yùn)動(dòng)
一只手臂自然會(huì)隨著對(duì)方腿的動(dòng)作擺動(dòng),關(guān)系是每?jī)刹綌[動(dòng)一只手臂。一般來(lái)說(shuō),陀螺儀更適合分析手臂的擺動(dòng)運(yùn)動(dòng)。
測(cè)量臺(tái)階沖擊加速度
步行或跑步時(shí),臺(tái)階會(huì)產(chǎn)生向前和垂直的加速度,其幅度和頻率因人而異。垂直加速度的幅度往往高于前向加速度,它發(fā)生在步行循環(huán)的階段,前腳的腳跟與地面接觸,如圖1所示。該特性通常用于使用加速度計(jì)進(jìn)行步進(jìn)計(jì)數(shù),這也是本應(yīng)用筆記的重點(diǎn)。
圖1.步行階段和加速模式(趙,2010)
加速度計(jì)消耗最小的功率和較小的占地面積非常重要,因?yàn)橐话銇?lái)說(shuō),健身追蹤器是電池供電的緊湊型設(shè)備。此外,這些設(shè)備通常戴在手腕上,這給步進(jìn)沖擊加速度檢測(cè)帶來(lái)了兩個(gè)挑戰(zhàn),如下所示:
與身體的其他位置(如臀部或腳踝)相比,加速度信號(hào)可能會(huì)有些減弱。
還有其他動(dòng)作,例如手臂擺動(dòng),在跑步時(shí)跳過(guò)障礙物時(shí),或向朋友揮手問(wèn)好,通常在步進(jìn)信號(hào)帶寬內(nèi)具有頻率分量。這樣的動(dòng)作很難從一步中區(qū)分出來(lái)。
第一個(gè)挑戰(zhàn)可以通過(guò)選擇低噪聲加速度計(jì)來(lái)克服,這樣即使衰減也可以拾取加速度信號(hào)。加速度計(jì)還需要體積小,功耗低,以適合可穿戴設(shè)備。ADXL367滿足所有這些要求。
ADXL367是一款超低功耗、3軸數(shù)字加速度計(jì),測(cè)量模式下的典型功耗僅為0.89 μA,喚醒模式下的典型功耗低至180 nA。它具有 ±2 g 至 ±8 g 的可配置測(cè)量范圍和高達(dá) 14 Hz 輸出數(shù)據(jù)速率 (ODR) 的 400 位分辨率。它還包括深度多模輸出先進(jìn)先出 (FIFO)、內(nèi)置溫度傳感器以及單擊或雙擊檢測(cè)。該器件采用 1.1 V 至 3.6 V 電源供電,采用 2.2 mm × 2.3 mm × 0.87 mm 封裝。所有這些特性使ADXL367非常適合功耗和尺寸受限的應(yīng)用。
解決第二個(gè)挑戰(zhàn)與計(jì)步算法如何處理加速度信號(hào)有關(guān)。三種最常見(jiàn)的計(jì)步算法方法是(Xiaomin Kang,2018),如下所示:
時(shí)域分析
頻域分析
在本應(yīng)用筆記中,之所以使用時(shí)域分析方法,是因?yàn)樗绕渌麅煞N方法需要更少的計(jì)算能力,同時(shí)在使用窗口峰值檢測(cè)方法時(shí),計(jì)數(shù)步驟的準(zhǔn)確度也超過(guò)97%(Agata Brajdic,2013)。
計(jì)步算法
開(kāi)發(fā)的算法檢測(cè)給定時(shí)間窗口內(nèi)的加速度峰值,并通過(guò)分析相對(duì)于動(dòng)態(tài)閾值的峰值以及這些峰值的重復(fù)或重復(fù)來(lái)確定這些是否被視為步驟。該算法采用三個(gè)輸入:x、y 和 z 軸加速度數(shù)據(jù),采樣率為 50 Hz(作為 14 位整數(shù)),并返回到目前為止計(jì)數(shù)的總步數(shù)。接下來(lái)將介紹算法實(shí)現(xiàn)。有關(guān)計(jì)步器算法流程圖,請(qǐng)參見(jiàn)圖 4。
首先,計(jì)算三個(gè)軸上加速度絕對(duì)值的總和。步行或跑步時(shí),無(wú)論傳感器的方向如何,至少有一個(gè)軸具有相對(duì)較大的周期性加速度變化(請(qǐng)參閱《模擬對(duì)話》文章“使用 3 軸數(shù)字加速度計(jì)實(shí)現(xiàn)的全功能計(jì)步器設(shè)計(jì)”(第 44 卷,2010 年 <> 月))。因此,絕對(duì)值的總和仍必須反映步行循環(huán)曲線。
接下來(lái)是低通濾波級(jí)。絕對(duì)值的總和與四樣本循環(huán)緩沖區(qū)中的前三個(gè)值取平均值。然后使用平均信號(hào)來(lái)檢測(cè)一步產(chǎn)生的最大和最小加速度峰值。該算法最初在時(shí)間窗口內(nèi)查找最大峰值,當(dāng)檢測(cè)到最大峰值時(shí),它開(kāi)始查找最小峰值。
要使樣品被視為峰值,它還必須位于窗口的中心,并且是該窗口內(nèi)的最高樣品(尋找最大值時(shí))或最低樣品(查找最小值時(shí))。窗口大小必須允許算法準(zhǔn)確捕獲峰值。如果窗口太窄,由于噪音或其他運(yùn)動(dòng)引起的波動(dòng)可能會(huì)被錯(cuò)誤地解釋為臺(tái)階。如果窗口太寬,則會(huì)在窗口中捕獲兩個(gè)或多個(gè)步驟,從而導(dǎo)致缺少步驟,因?yàn)樗惴ㄔ谠摯翱谥袃H檢測(cè)到一個(gè)最大值或最小值。
一般來(lái)說(shuō),一個(gè)人可以跑到每秒五步,每 2 秒走一步。這意味著窗口必須至少寬 0.2 秒才能捕獲最快的步長(zhǎng),并且窄于 0.4 秒,以便窗口中包含的最快步長(zhǎng)不超過(guò)一個(gè)。檢測(cè)到最大峰值后,該算法將搜索最小值長(zhǎng)達(dá) 1 秒。如果沒(méi)有找到最小值,算法認(rèn)為沒(méi)有步驟,它丟棄最大值,并開(kāi)始尋找新的步驟。
接下來(lái),確定是否可以將一對(duì)最大和最小峰值視為可能的步驟。為此,引入了動(dòng)態(tài)閾值和靈敏度的概念。
動(dòng)態(tài)閾值是一個(gè)四樣本循環(huán)緩沖器,其工作方式與低通濾波級(jí)相同,但在這種情況下,輸入數(shù)據(jù)是最大值和最小值的平均值。每當(dāng)最大值和最小值之間的差異大于靈敏度時(shí),動(dòng)態(tài)閾值都會(huì)更新。
靈敏度定義了動(dòng)態(tài)閾值幅度附近的區(qū)域,有助于消除最有可能由不希望的運(yùn)動(dòng)引起的波動(dòng)。要將一對(duì)最大和最小峰值視為可能的步驟,需要滿足以下條件:
最大峰值>(動(dòng)態(tài)閾值 + 靈敏度/2)
最小峰值<(動(dòng)態(tài)閾值 – 靈敏度/2)
最后,如果至少出現(xiàn)八個(gè)連續(xù)的可能步驟,該算法會(huì)認(rèn)為一個(gè)人正在走路或跑步,這是算法的額外措施,以避免由于孤立事件(例如揮手打招呼或喝酒)而導(dǎo)致誤報(bào)。在下一次迭代中,軟件將驗(yàn)證之前所有八個(gè)可能的步驟是否有效,并進(jìn)入調(diào)節(jié)模式。在此模式下,每個(gè)連續(xù)步驟都計(jì)為有效。
圖 2 顯示了一個(gè)人行走時(shí)的加速度曲線示例,而圖 3 以圖形方式顯示了計(jì)步算法如何解釋和分析加速度數(shù)據(jù)。在圖 3 中,顯示首先采取一個(gè)步驟,然后將人放在原地。在檢測(cè)到的第一個(gè)最小值之后,可能的步驟計(jì)數(shù)增加到 1,但由于第二個(gè)最大值不滿足被視為可能步驟的算法條件,因此可能的步驟計(jì)數(shù)將重置為零。此人 大約 4.6 秒后再次開(kāi)始行走。在大約 5.<> 秒時(shí),可能的步數(shù)達(dá)到 <>,軟件進(jìn)入調(diào)節(jié)模式。
圖2.將傳感器放在手腕上行走的人的加速度曲線
圖3.算法加速信號(hào)處理
圖4.計(jì)步器算法流程圖
驗(yàn)證結(jié)果
原型電路的原理圖如圖5所示。
圖5.原型原理圖和硬件
EVAL-ADXL367Z 板與 Arduino Nano 33 低功耗藍(lán)牙 (BLE) 一起用于設(shè)置測(cè)試平臺(tái)。ADXL367配置為單電源供電。電源由 3.3 V Arduino 穩(wěn)壓器提供。Arduino使用兩個(gè)串聯(lián)的3 V紐扣電池供電。有關(guān)詳細(xì)信息,請(qǐng)參閱圖 7 和將原型與 Arduino IDE 配合使用部分。?
計(jì)步器算法針對(duì) 50 Hz 采樣率進(jìn)行了優(yōu)化。因此,ADXL367 ODR需要相應(yīng)地配置。加速度范圍設(shè)置為 ±2 g,F(xiàn)IFO 設(shè)置為流模式,INT1 中斷引腳配置為在發(fā)生 FIFO 水印事件時(shí)觸發(fā)。當(dāng)FIFO中存儲(chǔ)的樣本數(shù)量等于或超過(guò)FIFO_SAMPLES寄存器中指定的數(shù)量時(shí),將設(shè)置FIFO水印。FIFO_SAMPLES寄存器設(shè)置為 24,相當(dāng)于八組 x、y 和 z 軸數(shù)據(jù)。
用戶必須根據(jù)特定用例調(diào)整算法參數(shù)以獲得最佳性能。跑步時(shí)佩戴腕部可能需要與行走時(shí)髖部佩戴不同的參數(shù)值。這些參數(shù)如下:
窗口大?。憾x觀察窗口的緩沖區(qū)大小。
靈敏度:確定觸發(fā)動(dòng)態(tài)閾值更新的最小加速度。
篩選順序:定義平均循環(huán)緩沖區(qū)的大小。
閾值順序:定義動(dòng)態(tài)閾值循環(huán)緩沖區(qū)的大小。
表1總結(jié)了發(fā)現(xiàn)的參數(shù)值,對(duì)于腕戴式應(yīng)用來(lái)說(shuō)是一個(gè)很好的折衷方案。
參數(shù) | 價(jià)值 |
篩選順序 | 4 |
閾值順序 | 4 |
窗口大小 | 篩選順序 × 4 + 1 |
敏感性 | 0.1 克 |
在圖 6 的示例中,一個(gè)人朝一個(gè)方向走 10 步,停止走路,轉(zhuǎn)身,然后向后走 10 步。ADXL367測(cè)量的加速度以藍(lán)色、紅色和綠色顯示,算法計(jì)算的總步數(shù)以黑色顯示。
圖6.一個(gè)人向一個(gè)方向行走10步,然后轉(zhuǎn)身再走10步的加速度曲線;算法步數(shù)以黑線顯示
使用表1參數(shù)的驗(yàn)證結(jié)果如表2所示。原型PCB用鉤環(huán)帶纏繞在測(cè)試人員的手腕上。這個(gè)人穿著普通的跑鞋。
測(cè)試 | 測(cè)試說(shuō)明 | 計(jì)步器步驟 計(jì)數(shù) | 實(shí)際數(shù)量 步驟 |
1 | 走 | 99 | 100 |
2 | 走路,忙碌的雙手 | 101 | 100 |
3 | 步行,每10步停下來(lái),改變 方向 | 53 | 50 |
4 | 跑 | 103 | 100 |
5 | 上下樓梯 | 98 | 96 |
對(duì)于測(cè)試 1(步行),該人以每秒 1.6 步的平均速度行走。對(duì)于測(cè)試 2(走路,忙碌的手),測(cè)試人員一邊走路,一邊用雙手拿著手機(jī)。測(cè)試5(上下樓梯)在硬木地板樓梯上進(jìn)行,有12個(gè)臺(tái)階。在這個(gè)測(cè)試中,這個(gè)人上下樓梯四次。除測(cè)試5(上下樓梯)外,所有測(cè)試均在混凝土地板上進(jìn)行。從所有這些測(cè)試中獲得的平均步數(shù)計(jì)數(shù)準(zhǔn)確率為 97.4%。測(cè)試3(步行,每10步停止,改變方向)顯示94.3%的準(zhǔn)確率,這是性能最低的測(cè)試。
為了估計(jì)算法的平均處理時(shí)間,在表 2 中執(zhí)行的每個(gè)測(cè)試期間監(jiān)控其執(zhí)行時(shí)間。獲得的平均時(shí)間為24 μs。
圖7.Arduino 代碼流程圖
將原型與ARDUINO IDE一起使用
用于驗(yàn)證測(cè)試的計(jì)步器算法源代碼可從ADXL367產(chǎn)品頁(yè)面的工具和仿真部分下載。
要將原型PCB與Arduino IDE一起使用,請(qǐng)執(zhí)行以下步驟:
從 Arduino 網(wǎng)站安裝 Arduino 集成開(kāi)發(fā)環(huán)境 (IDE) 應(yīng)用軟件。
打開(kāi) Arduino IDE,然后轉(zhuǎn)到“工具》管理庫(kù)”。
圖8.Arduino IDE 管理庫(kù)
在“庫(kù)管理器”窗口中,從“類型”列表中選擇“Arduino”,從“主題”列表中選擇“通信”,然后鍵入“ArduinoBLE”。單擊安裝。
圖9.安裝 ArduinoBLE 庫(kù)
將通用串行總線 (USB) 電纜連接到 Arduino 和 PC。
打開(kāi) ADXL367 計(jì)步器算法項(xiàng)目,方法是轉(zhuǎn)到“打開(kāi)文件”》然后選擇 ADXL367_pedometer.ino 文件。
轉(zhuǎn)到工具》板:Arduino Nano 33 BLE 》 Arduino Mbed OS Nano Boards,然后選擇 Arduino Nano 33 BLE。
圖 10.Arduino IDE 板選擇
轉(zhuǎn)到“工具》端口”,然后選擇相應(yīng)的端口。
圖 11.Arduino IDE COM 端口選擇
點(diǎn)擊 上傳 按鈕將程序上傳到 Arduino。
圖 12.上傳軟件
完成的上傳顯示為 Done,如圖 13 所示。
圖 13.完成上傳消息
轉(zhuǎn)到“工具”,然后選擇“串行監(jiān)視器”。
圖 14.打開(kāi) Arduino IDE 串行監(jiān)視器
在打開(kāi)的窗口中,從波特率列表中選擇 115200 波特。圖 15 顯示了當(dāng)前步驟計(jì)數(shù)。
圖 15.計(jì)步監(jiān)控
審核編輯:郭婷
-
加速度計(jì)
+關(guān)注
關(guān)注
6文章
716瀏覽量
46640 -
計(jì)步器
+關(guān)注
關(guān)注
4文章
76瀏覽量
20246 -
Arduino
+關(guān)注
關(guān)注
189文章
6493瀏覽量
190203
發(fā)布評(píng)論請(qǐng)先 登錄
ADI公司為醫(yī)療健康和工業(yè)應(yīng)用提供超低功耗MEMS加速度計(jì)

adxl367在進(jìn)行參考活動(dòng)檢測(cè)時(shí),能不能讓參考值不變?
ADXL321:小巧輕薄±18 g加速度計(jì)數(shù)據(jù)表

ADXL1001/ADXL1002:低噪聲高頻MEMS加速度計(jì)數(shù)據(jù)表

ADXL195/ADXL295:高性能雙譜信號(hào)處理加速度計(jì)數(shù)據(jù)表

DC2554A-KIT DC2554A-KIT評(píng)估板
ADI推出三軸MEMS加速度計(jì)ADXL367
介紹三款最新發(fā)布的三軸MEMS加速度計(jì)產(chǎn)品
ADXL367: Micropower, 3-Axis, ±2 <em>g</em>/±4 <em>g</em>/±8 <em>g</em> Digital Output MEMS Accelerometer

評(píng)論