付三麗 張楚楊 王英輝 黃恒一 高媛
摘 要:隨著人們?nèi)找孀⒅乜茖W(xué)鍛煉,計(jì)步器成為最受大眾歡迎的科技產(chǎn)品之一。為了提高計(jì)步器的實(shí)用性,便攜式的智能人體計(jì)步器隨之出現(xiàn)。該系統(tǒng)以AT89C52單片機(jī)為主控,由復(fù)位、振蕩、液晶顯示和按鍵等模塊構(gòu)成,液晶顯示模塊顯示單次步數(shù)、總步數(shù)和估計(jì)消耗卡路里,具有體積小、質(zhì)量輕、操作簡(jiǎn)單等優(yōu)勢(shì)。
關(guān)鍵詞:智能人體;計(jì)步器;AT89C52單片機(jī);液晶顯示;傾角傳感器;低通濾波器
中圖分類號(hào):TP216文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-1302(2020)02-00-03
0 引 言
最初的計(jì)步器是帶有機(jī)械開關(guān)的計(jì)數(shù)器,打開開關(guān),通常由一個(gè)滾動(dòng)的金屬球或者金屬擺來(lái)完成計(jì)數(shù)?,F(xiàn)代的電子計(jì)步器通常由振動(dòng)傳感器[1]以及電子計(jì)數(shù)器組成。人體適合掛載計(jì)步器的部位包括手臂、腰部以及大腿外側(cè),而由于人體在行進(jìn)過程中,腰部重心的移動(dòng)最為頻繁,所以計(jì)步器置于腰部最合理。在電子計(jì)步器中振動(dòng)傳感器檢測(cè)運(yùn)動(dòng)的開始與停止,單片機(jī)負(fù)責(zé)統(tǒng)計(jì)運(yùn)算,最終由顯示屏顯示運(yùn)動(dòng)情況。
本設(shè)計(jì)主要是以AT89C52單片機(jī)為核心控制器,P1口接LCD1602液晶顯示模塊。LCD1602液晶顯示作為輸出設(shè)備,設(shè)置顯示記錄單次步數(shù)、記錄總步數(shù)和記錄卡路里的消耗等三種工作方式。通過按鍵可以開始記錄步數(shù),根據(jù)算法計(jì)算消耗的卡路里的數(shù)值。
1 系統(tǒng)方案設(shè)計(jì)
本系統(tǒng)由AT89C52單片機(jī)、ADXL345傾角傳感器[2]、LCD1602液晶顯示及低通濾波器等部分組成,總體設(shè)計(jì)框圖如圖1所示。利用AT89C52單片機(jī)進(jìn)行數(shù)/模擬信號(hào)轉(zhuǎn)換,采用傾角傳感器判斷人體的運(yùn)動(dòng)狀態(tài),應(yīng)用低通濾波器處理采集到的數(shù)據(jù)信號(hào),并傳輸至液晶顯示模塊顯示對(duì)應(yīng)的結(jié)果。其中三軸加速度傳感器[3]輸出三個(gè)加速度方向:前向、縱向和側(cè)向,同時(shí)單片機(jī)將這三個(gè)方向的數(shù)字量轉(zhuǎn)換為模擬量,處理后的信息在液晶顯示模塊輸出,并存儲(chǔ)。
2 系統(tǒng)的整體原理
本系統(tǒng)由主控、感應(yīng)、按鍵、電源和液晶顯示等模塊組成。該系統(tǒng)采用ADXL345傳感器判斷用戶是否處于運(yùn)動(dòng)狀態(tài),并將用戶的運(yùn)動(dòng)狀態(tài)傳輸給微處理器。微處理器通過用戶的運(yùn)動(dòng)狀態(tài)計(jì)算用戶在單位時(shí)間內(nèi)行走的步數(shù)及消耗的卡路里。本系統(tǒng)總原理圖如圖2所示。
3 系統(tǒng)的軟件設(shè)計(jì)
3.1 計(jì)步設(shè)計(jì)流程
本系統(tǒng)的計(jì)步設(shè)計(jì)流程如圖3所示。該系統(tǒng)完成計(jì)步功能需要新數(shù)據(jù)移位處理寄存器和舊數(shù)據(jù)移位處理寄存器
兩個(gè)量化模塊。新數(shù)據(jù)移位處理寄存器負(fù)責(zé)正確處理變量加速度和動(dòng)態(tài)精度的關(guān)系,當(dāng)動(dòng)態(tài)精度大于或等于加速度的變化值時(shí),寄存器內(nèi)的數(shù)據(jù)保持不變;當(dāng)動(dòng)態(tài)精度小于加速度的變化值時(shí),此時(shí)的運(yùn)動(dòng)數(shù)據(jù)便會(huì)保存到新數(shù)據(jù)移位處理寄存器;而舊數(shù)據(jù)移位處理寄存器負(fù)責(zé)時(shí)實(shí)將變換的數(shù)據(jù)更新。
考慮到時(shí)間的變化和用戶的運(yùn)動(dòng)狀態(tài)存在的差異,以及為避免因時(shí)間變化造成的計(jì)數(shù)錯(cuò)誤,系統(tǒng)設(shè)置平均走完50步后便重新采樣,計(jì)數(shù)數(shù)據(jù)刷新。當(dāng)忘記按結(jié)束鍵時(shí),則通過比對(duì)之前兩次運(yùn)動(dòng)的數(shù)據(jù)并判斷出在某個(gè)時(shí)段內(nèi)的有效值,利用這個(gè)方法可以在保證高效率的前提下減小因計(jì)數(shù)錯(cuò)誤產(chǎn)生的誤差。為達(dá)到對(duì)行進(jìn)里程的計(jì)算,通過輸入步長(zhǎng)數(shù)據(jù)并在行進(jìn)終止時(shí)判斷來(lái)完成。
3.2 計(jì)步器算法的實(shí)現(xiàn)
在本設(shè)計(jì)中,“加速度”[4]與速度參數(shù)直接相關(guān),是分析人體行進(jìn)狀態(tài)的相關(guān)參數(shù)。人體在行進(jìn)過程中會(huì)產(chǎn)生前向、側(cè)向和縱向三個(gè)方向的加速度分量[5],可用X軸、Y軸和Z軸來(lái)表示這三個(gè)分量。X軸、Y軸和Z軸的加速度分量由ADXL345傳感器檢測(cè)。由于行進(jìn)方向并不清楚,加速度測(cè)量軸并不完全準(zhǔn)確[6],測(cè)量精度不應(yīng)完全依賴。
要完成對(duì)步數(shù)的檢測(cè)首先要對(duì)人體行進(jìn)時(shí)的動(dòng)作進(jìn)行一定了解。人體在行進(jìn)時(shí),身體的每一個(gè)部位幾乎都處于運(yùn)動(dòng)狀態(tài),并會(huì)在某個(gè)動(dòng)作的某個(gè)時(shí)間點(diǎn)產(chǎn)生加速度的最大值。其中,通過檢測(cè)腰部的行進(jìn)狀態(tài)來(lái)檢測(cè)步數(shù),同時(shí)兼顧了計(jì)步器的便攜性和行進(jìn)姿態(tài)的舒適性。
由MEMS慣性傳感器[7]模擬出代表行進(jìn)中人體前向、側(cè)向和縱向加速度分量的X軸、Y軸和Z軸三軸加速度如圖4所示。當(dāng)人體處于行進(jìn)狀態(tài)時(shí),身體縱向加速度分量的周期變化相比其他兩個(gè)分量更加明顯,所以加速度[8]三個(gè)方向分量的算法對(duì)于檢測(cè)人體行進(jìn)里程或運(yùn)動(dòng)周期有著極為重要的意義。
隨著人體運(yùn)動(dòng)的進(jìn)行,加速度的最高值和最低值[9]由系統(tǒng)不停地輸出并保持著輸出50次更新1次的頻率,其中取最高值和最低值的平均,并用此平均值判斷下一個(gè)50次輸出時(shí)人體的行進(jìn)狀態(tài),這就是動(dòng)態(tài)閾值。當(dāng)系統(tǒng)輸出行進(jìn)數(shù)據(jù)時(shí),動(dòng)態(tài)精度則進(jìn)一步濾波。這兩個(gè)因素保證了系統(tǒng)輸出的適應(yīng)性和高效性。
人體邁出的一步能否被證明有效,需要通過動(dòng)態(tài)閾值和線性移位寄存器判斷。判斷步伐的線性移位寄存器由新采樣數(shù)據(jù)寄存器和舊采樣數(shù)據(jù)寄存器兩部分組成,其中包含的數(shù)據(jù)分別成為新采樣數(shù)據(jù)和舊采樣數(shù)據(jù)。新采樣數(shù)據(jù)無(wú)法在采樣時(shí)被移入舊采樣數(shù)據(jù)寄存器,當(dāng)加速度的變化值超出了定義精度值,則將最后一次采樣數(shù)據(jù)的結(jié)果移入新采樣數(shù)據(jù)寄存器。通過這種方法,系統(tǒng)工作時(shí)便不再受到高頻噪聲的干擾,進(jìn)一步保障了測(cè)量的精確性。
判斷步伐是否有效:動(dòng)態(tài)閾值大于當(dāng)前加速度參數(shù),舊采樣數(shù)據(jù)大于新采樣數(shù)據(jù)時(shí),加速度曲線為負(fù)斜率。
加速度的峰值:步數(shù)計(jì)算取決于X軸、Y軸和Z軸加速度峰值最大的軸,同時(shí)計(jì)步系統(tǒng)會(huì)忽略掉最小的加速度峰值。
設(shè)置消除無(wú)效振動(dòng)的臨界點(diǎn)。設(shè)置0.2 s/步為最快行進(jìn)速度,2 s/步為最慢行進(jìn)速度,并設(shè)置一個(gè)由最低0.2 s至最高2 s的臨界范圍,系統(tǒng)將刪去在該臨界范圍之外的任何步伐。
用戶可以憑借ADXL345傾角傳感器選擇有利于達(dá)到行進(jìn)速度臨界范圍的輸出數(shù)據(jù)速率。表1列出了在室溫下(25 ℃),VS=2.5 V,I/O VDD=1.8 V時(shí)的可配置數(shù)據(jù)速率和輸出功耗。
當(dāng)輸出頻率為50 Hz時(shí),本算法成立并將步伐的更新次數(shù)計(jì)入寄存器中。當(dāng)步伐的間隔、帶寬的間隔大于10且不超過100時(shí),表示步伐的間隔在臨界范圍之內(nèi);反之則在臨界范圍之外且算作無(wú)效步伐。
確定行進(jìn)步伐的節(jié)奏需要設(shè)置步伐的記錄規(guī)則。當(dāng)步伐計(jì)數(shù)器開始運(yùn)行時(shí),搜索模式開啟。當(dāng)步伐計(jì)數(shù)器[10]檢測(cè)到有效步伐時(shí),發(fā)現(xiàn)當(dāng)前處于某一種規(guī)則下,則當(dāng)前的顯示數(shù)據(jù)會(huì)被刷新,切換至另一種“確認(rèn)規(guī)則”的狀態(tài)。本設(shè)計(jì)將步伐計(jì)數(shù)器的有效步伐檢測(cè)值定為連續(xù)的5個(gè)。處于“確認(rèn)規(guī)則”狀態(tài)下,步伐計(jì)數(shù)器的數(shù)據(jù)更新進(jìn)度隨著有效步伐的累計(jì)而改變。當(dāng)步伐計(jì)數(shù)器檢測(cè)到無(wú)效步伐時(shí),當(dāng)前的累計(jì)會(huì)被打斷并重新檢測(cè)有效步伐,工作狀態(tài)回到搜索模式。
步伐邁出的速度與用戶的身高決定著用戶每一步的跨度。當(dāng)用戶處于短跑狀態(tài)或者用戶的個(gè)子較高,用戶的步長(zhǎng)跨度也相對(duì)更大??紤]到時(shí)間和步數(shù)對(duì)步長(zhǎng)跨度的影響,本設(shè)計(jì)采用每2 s測(cè)得的步數(shù)來(lái)計(jì)算用戶的步長(zhǎng)跨度。
通過位移與時(shí)間的比值得到速度,每2 s的速度同樣利用以上算法求得,由此得出速度計(jì)算公式:
通過式(1)的算法,步伐計(jì)數(shù)器能夠在大多數(shù)情況下穩(wěn)定的運(yùn)行,但是當(dāng)計(jì)步器被用戶來(lái)回?fù)u動(dòng)而非處于行進(jìn)狀態(tài)時(shí),步伐計(jì)數(shù)器會(huì)將這種搖動(dòng)同樣判斷成步伐并更新數(shù)據(jù)。為了避免步伐計(jì)數(shù)器過于敏感,并且排除正常行進(jìn)狀態(tài)之外的振動(dòng),可以通過設(shè)置臨界點(diǎn),輸入新的計(jì)步規(guī)則來(lái)解決。用戶每2 s步長(zhǎng)跨度的數(shù)據(jù)如表2所示。
4 系統(tǒng)調(diào)試
將電源與系統(tǒng)連接,按下左下角開關(guān)按鍵,LCD1602顯示計(jì)數(shù),傳感器亮起紅燈,系統(tǒng)啟動(dòng)如圖5(a)所示,初始狀態(tài)的LCD顯示屏上第一行顯示“BS:0 Z:0”表示步數(shù)為0步,總步數(shù)為0;LCD顯示屏第二行顯示“000.00K 000.0m”表示消耗的卡路里為0 kJ,路程值為0 m。
5 結(jié) 語(yǔ)
本文主要介紹AT89C51微處理器控制的智能人體計(jì)步器。該計(jì)步器系統(tǒng)由ADXL345傾角傳感器、微處理器、LCD1602液晶顯示屏、時(shí)鐘芯片等模塊組成。以單片機(jī)作為主控制器,通過ADXL345傾角傳感器判斷人體運(yùn)動(dòng)狀態(tài)。ADXL345是一款出色的加速度計(jì),非常適合設(shè)計(jì)計(jì)步器應(yīng)用。本系統(tǒng)以數(shù)字形式顯示單位時(shí)間內(nèi)對(duì)其輸入的脈沖數(shù)目,具有可靠性高、成本低、操作簡(jiǎn)單及攜帶方便等優(yōu)勢(shì)。但是該設(shè)計(jì)功能仍需進(jìn)一步完善,若用戶想要了解自己的運(yùn)動(dòng)軌跡,可在計(jì)步器上加裝定位系統(tǒng)。
參 考 文 獻(xiàn)
[1]汪嘉洋,劉剛,華杰,等.振動(dòng)傳感器的原理選擇[J].傳感器世界,2016(10):19-23.
[2]金思達(dá),徐藝銘.淺談基于單片機(jī)的計(jì)步器設(shè)計(jì)[J].電子制作,2018(8):8-9.
[3]李京慧,遲宗濤,李鐘曉.基于閾值分析法的人體跌倒檢測(cè)系統(tǒng)[J].傳感器與微系統(tǒng),2019(8):80-82.
[4]王民.基于加速度傳感器的計(jì)步器設(shè)計(jì)[J].電腦迷,2016(5):61-62.
[5]張婷.基于單片機(jī)的三軸加速度計(jì)步器設(shè)計(jì)[J].山西電子技術(shù),2016(6):32-33.
[6]朱東.基于加速度傳感器的計(jì)步器設(shè)計(jì)[J].數(shù)字通信世界,2017(9):79.
[7]孫偉,丁偉,閆慧芳.MEMS慣性傳感器誤差簡(jiǎn)易標(biāo)定方法[J].導(dǎo)航定位學(xué)報(bào),2018(4):7-13.
[8]張欣愷,劉文泉,史俊,等.基于加速度計(jì)的振動(dòng)形態(tài)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].工業(yè)儀表與自動(dòng)化裝置,2014(1):32-35.
[9]凌海波,楊靜,周先存.基于手機(jī)加速度傳感器的波峰波谷計(jì)步算法研究[J].四川理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2017(3):21-25.
[10]朱艷.鞋底步伐計(jì)數(shù)器的設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2015(9):178.