摘要:設(shè)計(jì)了一種基于STM32和LIS3DSH的高精度計(jì)步器。為了提高計(jì)步器的準(zhǔn)確性,充分利用加速度傳感器輸出的三軸加速度信號(hào),經(jīng)數(shù)據(jù)預(yù)處理,采用動(dòng)態(tài)閾值和峰值檢測(cè)的改進(jìn)算法。根據(jù)人體運(yùn)動(dòng)特征檢測(cè)人體運(yùn)動(dòng)時(shí)加速度的變化,實(shí)現(xiàn)準(zhǔn)確計(jì)步,并具備數(shù)據(jù)傳輸功能。實(shí)驗(yàn)結(jié)果表明,該計(jì)步器具有體積小、功耗低、精度高的特點(diǎn)。 早期傳統(tǒng)的計(jì)步器設(shè)計(jì)是利用加重的機(jī)械開關(guān)檢測(cè)步伐,并帶有一個(gè)簡(jiǎn)單的計(jì)數(shù)器。當(dāng)計(jì)步器晃動(dòng)時(shí),裝置內(nèi)部的金屬球會(huì)來回滑動(dòng),或者擺錘左右擺動(dòng)敲擊擋塊,從而達(dá)到計(jì)步效果。但是這種計(jì)步器體積較大,重量偏重,計(jì)步精度也不高,同時(shí)也不方便攜帶。本文設(shè)計(jì)的高精度計(jì)步器采用ST公司的數(shù)字輸出MEMS(微機(jī)電系統(tǒng))[1]三軸慣性加速度傳感器LIS3DSH作為傳感元件,以STM32L151C6作為主控制器,通過優(yōu)化的軟件算法來精確檢測(cè)步行頻率。選擇的MEMS傳感器和微控制器具有成本低、尺寸小和功耗低的特點(diǎn),所設(shè)計(jì)的新型電子計(jì)步器體積小、重量輕、計(jì)步精度高,便于攜帶。 在人行走過程中,可以將距離、速度、加速度等屬性作為描述人體行走狀態(tài)的參數(shù),本文主要對(duì)人體運(yùn)動(dòng)過程中的加速度信息進(jìn)行采樣分析。行走時(shí),身體的各個(gè)部位都在運(yùn)動(dòng),它們的運(yùn)動(dòng)都會(huì)產(chǎn)生相應(yīng)的加速度,其中垂直方向的加速度變化是最大的,如圖1所示。 在人體運(yùn)動(dòng)過程中,腳離開地面是行走的第一步。由于地面會(huì)給蹬地的人一個(gè)反作用力,垂直加速度開始逐漸增大,身體重心也逐漸上移。當(dāng)腳要達(dá)到最高點(diǎn)位置時(shí),腳的垂直速度值是最小的,垂直加速度值達(dá)到最大,然后接著腳會(huì)向下移動(dòng),垂直加速度值開始逐漸減小,最終腳落地,垂直加速度值減少到最小值,然后便進(jìn)入到下一個(gè)步伐周期。在每一個(gè)步伐周期中,人體的垂直加速度值都會(huì)出現(xiàn)一個(gè)峰值,這樣的一個(gè)峰值對(duì)應(yīng)邁出的一步。采用加速度傳感器對(duì)人體運(yùn)動(dòng)的加速度信息進(jìn)行采集,對(duì)加速度信號(hào)作預(yù)處理,再由微控制器通過計(jì)步算法準(zhǔn)確地計(jì)算出人體實(shí)際行走的步數(shù)。 根據(jù)上述工作原理,高精度計(jì)步器硬件設(shè)計(jì)框圖如圖2所示。 主控制器采用ST公司的基于ARM CortexM3內(nèi)核的32位微控制器STM32L151C6,三軸加速度傳感器采用LIS3DSH,藍(lán)牙通信采用 ST BlueNRG嵌入BlueNRG4.0 LowEnergy協(xié)議棧藍(lán)牙網(wǎng)絡(luò)處理芯片,溫濕度測(cè)量采用 HTS221電容數(shù)字傳感器,同時(shí)采用OLED顯示屏對(duì)行走步數(shù)、剩余電量等信息進(jìn)行顯示,按鍵和振動(dòng)馬達(dá)作為人機(jī)交互設(shè)備。 通過加速度傳感器采集X、Y、Z三個(gè)不同方向的加速度信息,經(jīng)過計(jì)步算法處理得到準(zhǔn)確步數(shù),并在顯示屏上顯示;同時(shí)也可以通過藍(lán)牙模塊實(shí)時(shí)傳輸數(shù)據(jù)至外部設(shè)備,通過按鍵也可以對(duì)計(jì)步器的工作參數(shù)進(jìn)行設(shè)置。 2.1、主控制器 STM32L151C6是ARM CortexM3內(nèi)核的RISC高性能、低功耗32位MCU,工作頻率為32 MHz,具有32 KB Flash,采用48引腳封裝。片內(nèi)具有16 KB RAM和4 KB EEPROM,6個(gè)16位定時(shí)器、3個(gè)USART、2個(gè)SPI、2個(gè)I2C接口,與STM32F系列引腳兼容,功耗低至185 μA/DMIPS,工作電壓范圍為1.8~3.6 V,集成了USB連接電源,以及連接到兩個(gè)APB總線的增強(qiáng)I/O和外設(shè)。其主控制器電路如圖3所示,主要包括主控MCU及其時(shí)鐘電路、復(fù)位電路、去耦濾波電路等。 2.2、加速度傳感器 LIS3DSH是ST公司推出的低功耗、高性能并且內(nèi)置有限狀態(tài)機(jī)的三軸高分辨率加速度傳感器,可支持1.7~3.6 V的寬輸入電壓,有±2g/4g/±8g/±16g不同量程范圍,1個(gè)集成的FIFO(先入先出)緩沖存儲(chǔ)區(qū)塊,16位的數(shù)字輸出,工作溫度范圍為-40~+85 ℃,能夠提供穩(wěn)定而精確的測(cè)量數(shù)據(jù)。 LIS3DSH和主控制器的接口采用I2C 總線,有X、Y、Z 三個(gè)自由度的加速度數(shù)字輸出,可以全方位感知人體行走運(yùn)動(dòng)信息。當(dāng)人行走時(shí),傳感器采集實(shí)時(shí)加速度數(shù)據(jù),利用內(nèi)部的A/D轉(zhuǎn)換器進(jìn)行A/D轉(zhuǎn)換,然后進(jìn)行邏輯控制并通過I2C總線與MCU通信。 系統(tǒng)軟件主要實(shí)現(xiàn)高精度計(jì)步器的數(shù)據(jù)采集、算法處理、信息輸出以及人機(jī)交互,核心技術(shù)是步數(shù)檢測(cè)算法實(shí)現(xiàn)。傳統(tǒng)的步數(shù)檢測(cè)算法主要有兩種:一是動(dòng)態(tài)閾值判斷方法,從正弦波形的下降區(qū)間進(jìn)行判斷;二是峰值檢測(cè)方法,從正弦波的拐點(diǎn)處判斷步數(shù)。這兩種檢測(cè)方法都有局限性和不確定性。本計(jì)步器結(jié)合以上兩種方法,提出一種新的改進(jìn)算法,從而可高效準(zhǔn)確地檢測(cè)出人體行走的步數(shù)。 3.1數(shù)據(jù)預(yù)處理 數(shù)據(jù)預(yù)處理是指對(duì)采集的三軸加速度傳感器數(shù)據(jù)進(jìn)行實(shí)時(shí)的預(yù)處理,分兩步進(jìn)行:第一步是進(jìn)行中值濾波的噪聲處理,第二步是進(jìn)行低通濾波的信號(hào)分離。 (1) 中值濾波 由于在運(yùn)動(dòng)過程中,加速度傳感器的輸出信號(hào)會(huì)包含大量的脈沖噪聲信號(hào),在實(shí)際計(jì)步過程中必須剔除。中值濾波是一種有效的消除脈沖噪聲的方法,它是一種基于排序統(tǒng)計(jì)理論的能有效抑制噪聲的非線性信號(hào)處理技術(shù),它把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域中各點(diǎn)值的中值代替,讓周圍的像素值接近真實(shí)值,從而消除孤立的噪聲點(diǎn)。 在本系統(tǒng)中采用序列的中值是指采樣序列中一半樣本的值比該值小,而另一半的值比該值大的中值點(diǎn)。所以在信號(hào)處理的時(shí)候需要將采樣的序列進(jìn)行排序,然后選取其中的中間值。由于加速度傳感器的輸出信號(hào)中可能包含有脈沖噪聲信號(hào),系統(tǒng)中將濾波器窗口大小設(shè)為3。經(jīng)過實(shí)驗(yàn),如果窗體過大或過小,則會(huì)使判別人體活動(dòng)狀態(tài)的相關(guān)算法的效果變差。 (2) 低通濾波 通常來講,人體每秒鐘行走0.5~2.0步,最多不超過5.0步。因此合理的計(jì)步器輸出為0.5~5.0 Hz,需要通過一個(gè)低通濾波器,以從原始加速度信號(hào)中分離出人體活動(dòng)所產(chǎn)生的高頻低通噪聲,此時(shí)的低通濾波器截止頻率為5.0 Hz。 3.2、步數(shù)檢測(cè)算法 3.2.1、三軸數(shù)據(jù)合一的方法選取 加速度傳感器采集到的是三軸的加速度數(shù)據(jù),這3個(gè)軸分別對(duì)應(yīng)人體運(yùn)動(dòng)的3個(gè)方向。無論如何穿戴計(jì)步器,總有至少一個(gè)軸的數(shù)據(jù)具有較大的周期性加速度變化,所以某些算法采用單個(gè)軸的加速度值來表征人體運(yùn)動(dòng),算法實(shí)時(shí)比較三軸加速度數(shù)據(jù)大小,把加速度變化最大的那個(gè)軸記為有效軸,然后利用有效軸的數(shù)據(jù)進(jìn)行分析和步伐判斷。但是這種實(shí)時(shí)判斷有效軸的方法容易丟失計(jì)數(shù)點(diǎn),加速度有效軸可能會(huì)不停地變換,這會(huì)導(dǎo)致數(shù)據(jù)過于敏感,穩(wěn)定性差。為了很好地解決這個(gè)問題,本文采用三軸合一加速度的方法處理數(shù)據(jù)。 考慮到三軸合一的問題,為了得到準(zhǔn)確的數(shù)據(jù),采用求3個(gè)數(shù)據(jù)平方和的二次方根,即2范數(shù)的方法 式(1)采用的2范數(shù)處理數(shù)據(jù),其增益不會(huì)隨著傳感器方位的變化而變化,克服了傳感器位置對(duì)收集有效數(shù)據(jù)的影響。 3.2.2、步數(shù)檢測(cè)的核心算法 步數(shù)檢測(cè)過程主要包括動(dòng)態(tài)閾值和峰值檢測(cè)。首先采用動(dòng)態(tài)閾值和動(dòng)態(tài)精度的方法,過濾掉高頻噪聲,從而得到有效步數(shù)。具體方法如下:系統(tǒng)中設(shè)定兩個(gè)移位寄存器,其中一個(gè)寄存器用于保存新得到的加速度采樣值,根據(jù)動(dòng)態(tài)峰值可以確定動(dòng)態(tài)閾值的大小,當(dāng)新得到一個(gè)加速度采樣值時(shí),將其與新數(shù)據(jù)寄存器中的數(shù)值進(jìn)行比較,若二者的差值的絕對(duì)值大于動(dòng)態(tài)精度時(shí),則新數(shù)據(jù)寄存器的值移位到舊數(shù)據(jù)寄存器,而新得到的加速度值就可以移位到新數(shù)據(jù)寄存器;當(dāng)加速度變化值小于或等于動(dòng)態(tài)精度時(shí),此變化值被拋棄,新數(shù)據(jù)寄存器保持不變。舊數(shù)據(jù)寄存器則不斷地更新采樣數(shù)據(jù)。圖4為動(dòng)態(tài)閾值的算法示意圖。持續(xù)更新三軸加速度的最大值和最小值,每采樣50次更新一次。其中平均值(Max + Min)/2稱為“動(dòng)態(tài)閾值”。 圖4 動(dòng)態(tài)閾值算法示意圖 在得到有效步數(shù)后,對(duì)有效步數(shù)的合加速度值進(jìn)行檢測(cè),峰值點(diǎn)應(yīng)滿足下式,其中tp為峰值點(diǎn)附近加速度的幅值: 當(dāng)滿足峰值條件后,再對(duì)合加速度信號(hào)進(jìn)行幅度閾值條件和時(shí)間閾值條件的判斷,以避免行走時(shí)身體抖動(dòng)對(duì)計(jì)步的影響,最后對(duì)實(shí)際的步數(shù)進(jìn)行記錄存儲(chǔ),顯示到液晶屏上。其中幅度閾值為所有峰值點(diǎn)的均值,這樣的均值比較合理。而人體每步行走的時(shí)間范圍為0.2~2 s。其峰值檢測(cè)的流程圖如圖5所示。 圖5 峰值檢測(cè)流程圖 對(duì)運(yùn)動(dòng)來說,步數(shù)是一個(gè)可以量化的指標(biāo),當(dāng)用步數(shù)表征人體運(yùn)動(dòng)的時(shí)候,步數(shù)檢測(cè)的精確度就是計(jì)步系統(tǒng)的一個(gè)衡量標(biāo)準(zhǔn),因?yàn)橛?jì)步器的精確度越高,檢測(cè)到的運(yùn)動(dòng)步數(shù)越準(zhǔn)確,就越能準(zhǔn)確反映人體運(yùn)動(dòng)情況、運(yùn)動(dòng)量大小和運(yùn)動(dòng)活躍度。計(jì)步精度定義如下: 為了檢驗(yàn)計(jì)步器的實(shí)際精確度,本系統(tǒng)進(jìn)行了5次隨機(jī)測(cè)試,測(cè)試結(jié)果見表1。 本文討論了基于STM32L151C6和LIS3DSH的高精度電子計(jì)步器的設(shè)計(jì)與實(shí)現(xiàn),并對(duì)具體的硬件電路和算法軟件進(jìn)行了詳細(xì)的介紹。此電子計(jì)步器系統(tǒng)采用STM32L151C6芯片,大大降低了系統(tǒng)功耗,提高了系統(tǒng)穩(wěn)定性,而加速度傳感器LIS3DSH的小尺寸封裝,減小了系統(tǒng)尺寸,為移植到手機(jī)和移動(dòng)設(shè)備上提供了可能。實(shí)驗(yàn)結(jié)果表明,本系統(tǒng)具有精度高、功耗低、體積小等特點(diǎn)。 |
|