采用3軸加速度計(jì)ADXL345的全功能計(jì)步器方案設(shè)計(jì)
本文引用地址:http://www.ex-cimer.com/article/160507.htm
距離參數(shù)
根據(jù)上述算法計(jì)算步伐參數(shù)之后,我們可以使用公式1獲得距離參數(shù)。
距離 = 步數(shù) × 每步距離 | (1) |
每步距離取決于用戶的速度和身高。如果用戶身材較高或以較快速度跑步,步長(zhǎng)就會(huì)較長(zhǎng)。參考設(shè)計(jì)每2秒更新一次距離、速度和卡路里參數(shù)。因此,我們使用每2秒計(jì)數(shù)到的步數(shù)判斷當(dāng)前跨步長(zhǎng)度。表2顯示了用于判斷當(dāng)前跨步長(zhǎng)度的實(shí)驗(yàn)數(shù)據(jù)。
表2. 跨步長(zhǎng)度與速度(每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 | 身高 |
>=8 | 1.2 ×身高 |
2秒的時(shí)間間隔可以利用采樣數(shù)精確算出。以50 Hz數(shù)據(jù)速率為例,處理器可以每100次采樣發(fā)送一次相應(yīng)的指令。處理器利用一個(gè)名為m_nLastPedometer的變量記錄每個(gè)2秒間隔開始時(shí)的步數(shù),并利用一個(gè)名為m_nPedometerValue的變量記錄每個(gè)2秒間隔結(jié)束時(shí)的步數(shù)。這樣,每2秒步數(shù)等于m_nPedometerValue與m_nLastPedometer之差。
雖然數(shù)據(jù)速率為50 Hz,但ADXL345的片內(nèi)FIFO使得處理器無(wú)需每20 ms讀取一次數(shù)據(jù),極大地減輕了主處理器的負(fù)擔(dān)。該緩沖器支持四種工作模式:旁路、FIFO、流和觸發(fā)。在FIFO模式下,x、y、z軸的測(cè)量數(shù)據(jù)存儲(chǔ)在FIFO中。當(dāng)FIFO中的采樣數(shù)與FIFO_CTL寄存器采樣數(shù)位規(guī)定的數(shù)量相等時(shí),水印中斷置1。如前所述,人們的跑步速度最快可達(dá)每秒5步,因此每0.2秒刷新一次結(jié)果即可保證實(shí)時(shí)顯示,從而處理器只需每0.2秒通過水印中斷喚醒一次并從ADXL345讀取數(shù)據(jù)。FIFO的其它功能也都非常有用。利用觸發(fā)模式,F(xiàn)IFO可以告訴我們中斷之前發(fā)生了什么。由于所述解決方案沒有使用FIFO的其它功能,因此筆者將不展開討論。 本文來(lái)自電子發(fā)燒友網(wǎng)(http://www.elecfans.com)
速度參數(shù)
速度 = 距離/時(shí)間,而每2秒步數(shù)和跨步長(zhǎng)度均可根據(jù)上述算法計(jì)算,因此可以使用公式2獲得速度參數(shù)。
速度 = 每2秒步數(shù) × 跨步/2 s | (2) |
卡路里參數(shù)
我們無(wú)法精確計(jì)算卡路里的消耗速率。決定其消耗速率的一些因素包括體重、健身強(qiáng)度、運(yùn)動(dòng)水平和新陳代謝。不過,我們可以使用常規(guī)近似法進(jìn)行估計(jì)。表3顯示了卡路里消耗與跑步速度的典型關(guān)系。
表3. 卡路里消耗與跑步速度的關(guān)系
跑步速度 (km/h) | 卡路里消耗(C/kg/h) |
8 | 10 |
12 | 15 |
16 | 20 |
20 | 25 |
由表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秒更新一次。為了考慮運(yùn)動(dòng)者的體重,我們可以將公式4轉(zhuǎn)換為公式5。體重(kg)為用戶輸入量,一個(gè)小時(shí)等于1800個(gè)2秒間隔。
卡路里(C/2 s) = 4.5 × 速度 × 體重/1800 | (5) |
如果用戶在步行或跑步之后休息,則步數(shù)和距離將不變化,速度應(yīng)為0,此時(shí)的卡路里消耗可以利用公式6計(jì)算(休息時(shí)的卡路里消耗約為1 C/kg/h)。
卡路里(C/2 s) = 1 × 體重/1800 | (6) |
最后,我們可以將所有2秒間隔的卡路里相加,獲得總卡路里消耗量。
硬件連接
ADXL345易于連接到任何使用I2C®或SPI數(shù)字通信協(xié)議的處理器。圖8給出了演示設(shè)備的原理示意圖,它采用3V電池供電。ADXL345的/CS引腳連接到板上的VS,以選擇I2C模式。利用一個(gè)低成本精密模擬微控制器ADuC7024從ADXL345讀取數(shù)據(jù),執(zhí)行算法,并通過UART將結(jié)果發(fā)送至PC。SDA和SCL分別為I2C總線的數(shù)據(jù)和時(shí)鐘引腳,從ADXL345連接到ADuC7024的對(duì)應(yīng)引腳。ADXL345的兩個(gè)中斷引腳連接到ADuC7024的IRQ輸入,以產(chǎn)生各種中斷信號(hào)并喚醒處理器。
圖8. 硬件系統(tǒng)的原理示意圖
用戶界面
用戶界面顯示測(cè)試數(shù)據(jù),并對(duì)操作員的指令做出響應(yīng)。用戶界面(UI)運(yùn)行之后,串行端口應(yīng)打開,通信鏈路應(yīng)啟動(dòng),隨后演示程序?qū)⒊掷m(xù)運(yùn)行。圖9顯示了用戶佩戴計(jì)步器步行或跑步時(shí)的測(cè)試情況。用戶可以輸入其體重和身高數(shù)據(jù),距離、速度和卡路里參數(shù)將根據(jù)這些數(shù)據(jù)進(jìn)行計(jì)算。
圖9. 用戶佩戴計(jì)步器步行或跑步時(shí)的測(cè)試情況
結(jié)論
ADXL345是一款出色的加速度計(jì),非常適合計(jì)步器應(yīng)用。它具有小巧纖薄的特點(diǎn),采用3 mm × 5 mm × 0.95 mm塑封封裝,利用它開發(fā)的計(jì)步器已經(jīng)出現(xiàn)在醫(yī)療儀器和高檔消費(fèi)電子設(shè)備中。它在測(cè)量模式下的功耗僅40 µA,待機(jī)模式下為0.1 µA,堪稱電池供電產(chǎn)品的理想之選。嵌入式FIFO極大地減輕了主處理器的負(fù)荷,使功耗顯著降低。此外,可以利用可選的輸出數(shù)據(jù)速率進(jìn)行定時(shí),從而取代處理器中的定時(shí)器。13位分辨率可以檢測(cè)非常小的峰峰值變化,為開發(fā)高精度計(jì)步器創(chuàng)造了條件。最后,它具有三軸輸出功能,結(jié)合上述算法,用戶可以將計(jì)步器戴在身上幾乎任何部位。
幾點(diǎn)建議:如果應(yīng)用對(duì)成本極其敏感,或者模擬輸出加速度計(jì)更適合,建議使用ADXL335,它是一款完整的小尺寸、薄型、低功耗、三軸加速度計(jì),提供經(jīng)過信號(hào)調(diào)理的電壓輸出。如果PCB尺寸至關(guān)重要,建議使用ADXL346,這款低功耗器件的內(nèi)置功能甚至比ADXL345還多,采用小巧纖薄的3 mm × 3 mm × 0.95 mm塑封封裝,電源電壓范圍為1.7 V至2.75 V。
加速度計(jì)相關(guān)文章:加速度計(jì)原理
評(píng)論