關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于3軸加速度計ADXL345的全功能計步器設(shè)計

基于3軸加速度計ADXL345的全功能計步器設(shè)計

作者: 時間:2011-04-14 來源:網(wǎng)絡(luò) 收藏

簡介
計步器是一種頗受歡迎的日常鍛煉進度監(jiān)控器,可以激勵人們挑戰(zhàn)自己,增強體質(zhì),幫助瘦身。早期設(shè)計利用加重的機械開關(guān)檢測步伐,并帶有一個簡單的計數(shù)器?;蝿舆@些裝置時,可以聽到有一個金屬球來回滑動,或者一個擺錘左右擺動敲擊擋塊。

如今,先進的計步器利用MEMS(微機電系統(tǒng))慣性傳感器和復(fù)雜的軟件來精確檢測真實的步伐。MEMS慣性傳感器可以更準(zhǔn)確地檢測步伐,誤檢率更低。MEMS慣性傳感器具有低成本、小尺寸和低功耗的特點,因此越來越多的便攜式消費電子設(shè)備開始集成計步器功能,如音樂播放器和手機等。ADI公司的3軸加速度計ADXL335, ADXL345和 ADXL346小巧纖薄,功耗極低,非常適合這種應(yīng)用。

本文以對步伐特征的研究為基礎(chǔ),描述一個采用3軸

圖1. 各軸的定義

讓我們考慮步行的特性。圖2描繪了一個步伐,我們將其定義為單位步行周期,圖中顯示了步行周期各階段與豎向和前向加速度變化之間的關(guān)系。

圖2. 步行階段與加速度模式

圖3顯示了與一名跑步者的豎向、前向和側(cè)向加速度相對應(yīng)的x、y和z軸測量結(jié)果的典型圖樣。無論如何穿戴計步器,總有至少一個軸具有相對較大的周期性加速度變化,因此峰值檢測和針對所有三個軸上的加速度的動態(tài)閾值決策算法對于檢測單位步行或跑步周期至關(guān)重要。

圖3. 從一名跑步者測得的x、y和z軸加速度的典型圖樣

算法
步伐參數(shù)
數(shù)字濾波器:首先,為使圖3所示的信號波形變得平滑,需要一個數(shù)字濾波器??梢允褂盟膫€寄存器和一個求和單元,如圖4所示。當(dāng)然,可以使用更多寄存器以使加速度數(shù)據(jù)更加平滑,但響應(yīng)時間會變慢。

圖4. 數(shù)字濾波器

圖5顯示了來自一名步行者所戴計步器的最活躍軸的濾波數(shù)據(jù)。對于跑步者,峰峰值會更高。

圖5. 最活躍軸的濾波數(shù)據(jù)

動態(tài)閾值和動態(tài)精度:系統(tǒng)持續(xù)更新3軸加速度的最大值和最小值,每采樣50次更新一次。平均值(Max + Min)/2稱為“動態(tài)閾值”。接下來的50次采樣利用此閾值判斷個體是否邁出步伐。由于此閾值每50次采樣更新一次,因此它是動態(tài)的。這種選擇具有自適應(yīng)性,并且足夠快。除動態(tài)閾值外,還利用動態(tài)精度來執(zhí)行進一步濾波,如圖6所示。

圖6. 動態(tài)閾值和動態(tài)精度

利用一個線性移位寄存器和動態(tài)閾值判斷個體是否有效地邁出一步。該線性移位寄存器含有2個寄存器:sample_new寄存器和sample_old寄存器。這些寄存器中的數(shù)據(jù)分別稱為sample_new和sample_old。當(dāng)新采樣數(shù)據(jù)到來時,sample_new無條件移入sample_old寄存器。然而,sample_result是否移入sample_new寄存器取決于下述條件:如果加速度變化大于預(yù)定義精度,則最新的采樣結(jié)果sample_result移入sample_new寄存器,否則sample_new寄存器保持不變。因此,移位寄存器組可以消除高頻噪聲,從而保證結(jié)果更加精確。

步伐邁出的條件定義為:當(dāng)加速度曲線跨過動態(tài)閾值下方時,加速度曲線的斜率為負(fù)值(sample_new sample_old)。 .

峰值檢測:步伐計數(shù)器根據(jù)x、y、z三軸中加速度變化最大的一個軸計算步數(shù)。如果加速度變化太小,步伐計數(shù)器將忽略。

步伐計數(shù)器利用此算法可以很好地工作,但有時顯得太敏感。當(dāng)計步器因為步行或跑步之外的原因而非常迅速或非常緩慢地振動時,步伐計數(shù)器也會認(rèn)為它是步伐。為了找到真正的有節(jié)奏的步伐,必須排除這種無效振動。利用“時間窗口”和“計數(shù)規(guī)則”可以解決這個問題。

“時間窗口”用于排除無效振動。假設(shè)人們最快的跑步速度為每秒5步,最慢的步行速度為每2秒1步。這樣,兩個有效步伐的時間間隔在時間窗口[0.2 s - 2.0 s]之內(nèi),時間間隔超出該時間窗口的所有步伐都應(yīng)被排除。

ADXL345的用戶可選輸出數(shù)據(jù)速率特性有助于實現(xiàn)時間窗口。表1列出了TA = 25°C, VS = 2.5 V, and VDD I/O = 1.8 V時的可配置數(shù)據(jù)速率(以及功耗)。

表1. 數(shù)據(jù)速率和功耗

輸出數(shù)據(jù) 速率 (Hz)帶寬 (Hz)速率 代碼IDD (μA)
320016001111146
16008001110100
8004001101145
4002001100145
2001001011145
100501010145
50251001100
2512.5100065
12.56.25011155
6.253.125011040

此算法使用50 Hz數(shù)據(jù)速率(20 ms)。采用interval的寄存器記錄兩步之間的數(shù)據(jù)更新次數(shù)。如果間隔值在10與100之間,則說明兩步之間的時間在有效窗口之內(nèi);否則,時間間隔在時間窗口之外,步伐無效。

“計數(shù)規(guī)則” 用于確定步伐是否是一個節(jié)奏模式的一部分。步伐計數(shù)器有兩個工作狀態(tài):搜索規(guī)則和確認(rèn)規(guī)則。步伐計數(shù)器以搜索規(guī)則模式開始工作。假設(shè)經(jīng)過四個連續(xù)有效步伐之后,發(fā)現(xiàn)存在某種規(guī)則(in regulation),那么步伐計數(shù)器就會刷新和顯示結(jié)果,并進入“確認(rèn)規(guī)則”工作模式。在這種模式下工作時,每經(jīng)過一個有效步伐,步伐計數(shù)器就會更新一次。但是,如果發(fā)現(xiàn)哪怕一個無效步伐,步伐計數(shù)器就會返回搜索規(guī)則模式,重新搜索四個連續(xù)有效步伐。

圖7顯示了步伐參數(shù)的算法流程圖。

圖7. 步伐參數(shù)算法流程圖

距離參數(shù)
根據(jù)上述算法計算步伐參數(shù)之后,我們可以使用公式1獲得距離參數(shù)。

距離 = 步數(shù) × 每步距離(1)

每步距離取決于用戶的速度和身高。如果用戶身材較高或以較快速度跑步,步長就會較長。參考設(shè)計每2秒更新一次距離、速度和卡路里參數(shù)。因此,我們使用每2秒計數(shù)到的步數(shù)判斷當(dāng)前跨步長度。表2顯示了用于判斷當(dāng)前跨步長度的實驗數(shù)據(jù)。

表2. 跨步長度與速度(每2秒步數(shù))和身高的關(guān)系

每2秒步數(shù)跨步(m/s)
0~2身高/5
2~3身高/4
3~4身高/3
4~5身高/2
5~6身高/1.2
6~8身高
>=81.2 ×身高

2秒的時間間隔可以利用采樣數(shù)精確算出。以50 Hz數(shù)據(jù)速率為例,處理器可以每100次采樣發(fā)送一次相應(yīng)的指令。處理器利用一個名為m_nLastPedometer的變量記錄每個2秒間隔開始時的步數(shù),并利用一個名為m_nPedometerValue的變量記錄每個2秒間隔結(jié)束時的步數(shù)。這樣,每2秒步數(shù)等于m_nPedometerValue與m_nLastPedometer之差。

雖然數(shù)據(jù)速率為50 Hz,但ADXL345的片內(nèi)FIFO使得處理器無需每20 ms讀取一次數(shù)據(jù),極大地減輕了主處理器的負(fù)擔(dān)。該緩沖器支持四種工作模式:旁路、FIFO、流和觸發(fā)。在FIFO模式下,x、y、z軸的測量數(shù)據(jù)存儲在FIFO中。當(dāng)FIFO中的采樣數(shù)與FIFO_CTL寄存器采樣數(shù)位規(guī)定的數(shù)量相等時,水印中斷置1。如前所述,人們的跑步速度最快可達(dá)每秒5步,因此每0.2秒刷新一次結(jié)果即可保證實時顯示,從而處理器只需每0.2秒通過水印中斷喚醒一次并從ADXL345讀取數(shù)據(jù)。FIFO的其它功能也都非常有用。利用觸發(fā)模式,F(xiàn)IFO可以告訴我們中斷之前發(fā)生了什么。由于所述解決方案沒有使用FIFO的其它功能,因此筆者將不展開討論。 本文來自電子發(fā)燒友網(wǎng)(http://www.elecfans.com)

速度參數(shù)
速度 = 距離/時間,而每2秒步數(shù)和跨步長度均可根據(jù)上述算法計算,因此可以使用公式2獲得速度參數(shù)。

速度 = 每2秒步數(shù) × 跨步/2 s(2)

卡路里參數(shù)
我們無法精確計算卡路里的消耗速率。決定其消耗速率的一些因素包括體重、健身強度、運動水平和新陳代謝。不過,我們可以使用常規(guī)近似法進行估計。表3顯示了卡路里消耗與跑步速度的典型關(guān)系。

表3. 卡路里消耗與跑步速度的關(guān)系

跑步速度 (km/h)卡路里消耗(C/kg/h)
810
1215
1620
2025

由表3可以得到公式(3)。

卡路里(C/kg/h) = 1.25 × 跑步速度(km/h)(3)

以上所用的速度參數(shù)單位為m/s,將km/h轉(zhuǎn)換為m/s可得公式4。

卡路里(C/kg/h) = 1.25 × 速度(m/s) × 3600/1000(4)

卡路里參數(shù)隨同距離和速度參數(shù)每2秒更新一次。為了考慮運動者的體重,我們可以將公式4轉(zhuǎn)換為公式5。體重(kg)為用戶輸入量,一個小時等于1800個2秒間隔。

卡路里(C/2 s) = 4.5 × 速度 × 體重/1800(5)

如果用戶在步行或跑步之后休息,則步數(shù)和距離將不變化,速度應(yīng)為0,此時的卡路里消耗可以利用公式6計算(休息時的卡路里消耗約為1 C/kg/h)。

卡路里(C/2 s) = 1 × 體重/1800(6)

最后,我們可以將所有2秒間隔的卡路里相加,獲得總卡路里消耗量。

硬件連接
ADXL345易于連接到任何使用I2C?或SPI數(shù)字通信協(xié)議的處理器。圖8給出了演示設(shè)備的原理示意圖,它采用3V電池供電。ADXL345的/CS引腳連接到板上的VS,以選擇I2C模式。利用一個低成本精密模擬微控制器ADuC7024從ADXL345讀取數(shù)據(jù),執(zhí)行算法,并通過UART將結(jié)果發(fā)送至PC。SDA和SCL分別為I2C總線的數(shù)據(jù)和時鐘引腳,從ADXL345連接到ADuC7024的對應(yīng)引腳。ADXL345的兩個中斷引腳連接到ADuC7024的IRQ輸入,以產(chǎn)生各種中斷信號并喚醒處理器。

圖8. 硬件系統(tǒng)的原理示意圖

用戶界面
用戶界面顯示測試數(shù)據(jù),并對操作員的指令做出響應(yīng)。用戶界面(UI)運行之后,串行端口應(yīng)打開,通信鏈路應(yīng)啟動,隨后演示程序?qū)⒊掷m(xù)運行。圖9顯示了用戶佩戴計步器步行或跑步時的測試情況。用戶可以輸入其體重和身高數(shù)據(jù),距離、速度和卡路里參數(shù)將根據(jù)這些數(shù)據(jù)進行計算。

圖9. 用戶佩戴計步器步行或跑步時的測試情況

結(jié)論
ADXL345是一款出色的加速度計,非常適合計步器應(yīng)用。它具有小巧纖薄的特點,采用3 mm × 5 mm × 0.95 mm塑封封裝,利用它開發(fā)的計步器已經(jīng)出現(xiàn)在醫(yī)療儀器和高檔消費電子設(shè)備中。它在測量模式下的功耗僅40 μA,待機模式下為0.1 μA,堪稱電池供電產(chǎn)品的理想之選。嵌入式FIFO極大地減輕了主處理器的負(fù)荷,使功耗顯著降低。此外,可以利用可選的輸出數(shù)據(jù)速率進行定時,從而取代處理器中的定時器。13位分辨率可以檢測非常小的峰峰值變化,為開發(fā)高精度計步器創(chuàng)造了條件。最后,它具有三軸輸出功能,結(jié)合上述算法,用戶可以將計步器戴在身上幾乎任何部位。

幾點建議:如果應(yīng)用對成本極其敏感,或者模擬輸出加速度計更適合,建議使用ADXL335,它是一款完整的小尺寸、薄型、低功耗、三軸加速度計,提供經(jīng)過信號調(diào)理的電壓輸出。如果PCB尺寸至關(guān)重要,建議使用ADXL346,這款低功耗器件的內(nèi)置功能甚至比ADXL345還多,采用小巧纖薄的3 mm × 3 mm × 0.95 mm塑封封裝,電源電壓范圍為1.7 V至2.75 V。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉