前言
人們在跌倒后會面臨雙重危險(xiǎn),。顯而易見的是跌倒本身可能對人體產(chǎn)生傷害,;另外,,如果跌倒后不能得到及時(shí)的救助,可能會使結(jié)果更加惡化,。例如,,許多老年人由于其身體比較虛弱,自理能力和自我保護(hù)能力下降,,常常會發(fā)生意外跌倒,,如果得不到及時(shí)的救助,這種跌倒可能會導(dǎo)致非常嚴(yán)重的后果。有資料顯示,,很多嚴(yán)重的后果并不是由于跌倒直接造成的,,而是由于跌倒后,未得到及時(shí)的處理和救護(hù),。當(dāng)出現(xiàn)跌倒情況時(shí),,如果能夠及時(shí)地通知到救助人員,將會大大地減輕由于跌倒而造成的危害,。
不僅是對老人,,在很多其他情況下,跌倒的報(bào)警也是非常有幫助的,,尤其是從比較高的地方跌倒下來的時(shí)候,。比如人們在登山,建筑,,擦窗戶,,刷油漆和修理屋頂?shù)臅r(shí)候。
這促使人們越來越熱衷于對跌倒檢測以及跌倒預(yù)報(bào)儀器的研制,。近年來,,隨著iMEMS®加速度傳感器技術(shù)的發(fā)展,使得設(shè)計(jì)基于三軸加速度傳感器的跌倒檢測器成為可能,。這種跌倒檢測器的基本原理是通過測量佩戴該儀器的個(gè)體在運(yùn)動過程中的三個(gè)正交方向的加速度變化來感知其身體姿態(tài)的變化,,并通過算法分析判斷該個(gè)體是否發(fā)生跌倒情況。當(dāng)個(gè)體發(fā)生跌倒時(shí),,儀器能夠配合GPS模塊以及無線發(fā)送模塊對這一情況進(jìn)行定位及報(bào)警,,以便獲得相應(yīng)的救助。而跌倒檢測器的核心部分就是判斷跌倒情況是否發(fā)生的檢測原理及算法,。
ADXL3451是ADI公司的一款3軸,、數(shù)字輸出的加速度傳感器。本文將在研究跌倒檢測原理的基礎(chǔ)上,,提出一種基于ADXL345的新型跌倒檢測解決方案,。
iMEMS加速度傳感器ADXL345
iMEMS 半導(dǎo)體技術(shù)把微型機(jī)械結(jié)構(gòu)與電子電路集成在同一顆芯片上。iMEMS加速度傳感器就是利用這種技術(shù),,實(shí)現(xiàn)對單軸,、雙軸甚至三軸加速度進(jìn)行測量并產(chǎn)生模擬或數(shù)字輸出的傳感器。根據(jù)不同的應(yīng)用,,加速度傳感器的測量范圍從幾g到幾十g不等,。數(shù)字輸出的加速度傳感器還會集成多種中斷模式。這些特性可以為用戶提供更加方便靈活的解決方案,。
ADXL345是ADI公司最近推出的基于iMEMS技術(shù)的3軸,、數(shù)字輸出加速度傳感器。ADXL345具有+/-2g,+/-4g,,+/-8g,,+/-16g可變的測量范圍;最高13bit分辨率,;固定的4mg/LSB靈敏度,;3mm*5mm*1mm超小封裝;40-145uA超低功耗,;標(biāo)準(zhǔn)的I2C或SPI數(shù)字接口,;32級FIFO存儲;以及內(nèi)部多種運(yùn)動狀態(tài)檢測和靈活的中斷方式等特性,。所有這些特性,,使得ADXL345有助于大大簡化跌倒檢測算法,使其成為一款非常適合用于跌倒檢測器應(yīng)用的加速度傳感器,。
本文給出的跌倒檢測解決方案,,完全基于ADXL345內(nèi)部的運(yùn)動狀態(tài)檢測功能和中斷功能,甚至不需要對加速度的具體數(shù)值進(jìn)行實(shí)時(shí)讀取和復(fù)雜的計(jì)算操作,,可以使算法的復(fù)雜度降至最低,。
中斷系統(tǒng)
圖1給出了ADXL345的系統(tǒng)框圖及管腳定義。
圖1 ADXL345系統(tǒng)框圖及管腳定義
ADXL345具有兩個(gè)可編程的中斷管腳:Int1和Int2,。以及Data_Ready,、Single_Tap、Double_Tap,、Activity,、Inactivity、Free_Fall,、Watermark,、Overrun,共計(jì)8個(gè)中斷源,。每個(gè)中斷源可以獨(dú)立地使能或禁用,,還可以靈活地選擇是否映射到Int1或Int2中斷管腳。所有的功能都可以同時(shí)使用,,只是某些功能可能需要共用中斷管腳,。中斷功能通過INT_ENABLE寄存器的相應(yīng)位來選擇使能或禁用,通過INT_MAP寄存器的相應(yīng)位來選擇映射到Int1管腳或Int2管腳,。中斷功能的具體定義如下:
1. Data_Ready 當(dāng)有新的數(shù)據(jù)產(chǎn)生時(shí),,Data_Ready中斷置位;當(dāng)沒有新的數(shù)據(jù)時(shí),,Data_Ready中斷清除。
2. Single_Tap 當(dāng)加速度值超過一定門限(THRESH_TAP)并且持續(xù)時(shí)間小于一定時(shí)間范圍(DUR)的時(shí)候,Single_Tap中斷置位,。
3. Double_Tap 當(dāng)?shù)谝淮蜸ingle_Tap事件發(fā)生后,,在一定時(shí)間(LATENT)之后,并在一定時(shí)間(WINDOW)之內(nèi),,又發(fā)生第二次Single_Tap事件時(shí),,Double _Tap中斷置位。
圖2給出了有效的Single_Tap中斷和Double _Tap中斷的示意圖,。
圖2 Single_Tap和Double _Tap中斷示意
4. Activity 當(dāng)加速度值超過一定門限(THRESH_ACT)時(shí),,Activity中斷置位。
5. Inactivity 當(dāng)加速度值低于一定門限(THRESH_INACT)并且持續(xù)超過一定時(shí)間(TIME_INACT)時(shí),,Inactivity中斷置位,。TIME_INACT可以設(shè)定的最長時(shí)間為255s。
需要指出的是,,對于Activity和Inactivity中斷,,用戶可以針對X、Y,、Z軸來分別進(jìn)行使能或禁用,。比如,可以只使能X軸的Activity中斷,,而禁用Y軸和Z軸的Activity中斷,。
另外,對于Activity和Inactivity中斷,,用戶還可以自由選擇DC coupled工作方式或者AC coupled工作方式,。其區(qū)別在于,DC coupled工作方式下,,每個(gè)采樣點(diǎn)的加速度值將直接與門限(THRESH_ACT或THRESH_INACT)進(jìn)行比較,,來判斷是否發(fā)生中斷;而AC coupled工作方式下,,新的采樣點(diǎn)將以之前的某個(gè)采樣點(diǎn)為參考,,用兩個(gè)采樣點(diǎn)的差值與門限(THRESH_ACT或THRESH_INACT)進(jìn)行比較,來判斷是否發(fā)生中斷,。AC coupled工作方式下的Activity檢測,,是選擇檢測開始時(shí)的那一個(gè)采樣點(diǎn)作為參考,以后每個(gè)采樣點(diǎn)的加速度值都與參考點(diǎn)進(jìn)行比較,。如果它們的差值超過門限(THRESH_ACT),,則Activity中斷置位。AC coupled工作方式下的Inctivity檢測,,同樣要選擇一個(gè)參考點(diǎn),。如果新采樣點(diǎn)與參考點(diǎn)的加速度差值超過門限(THRESH_INACT),,參考點(diǎn)會被該采樣點(diǎn)更新。如果新采樣點(diǎn)與參考點(diǎn)的加速度差值小于門限(THRESH_INACT),,并且持續(xù)超過一定時(shí)間(TIME_INACT),,則Inctivity置位。
6. Free_Fall 當(dāng)加速度值低于一定門限(THRESH_FF)并且持續(xù)超過一定時(shí)間(TIME_FF)時(shí),,F(xiàn)ree_Fall中斷置位,。與Inactivity中斷的區(qū)別在于,F(xiàn)ree_Fall中斷主要用于對自由落體運(yùn)動的檢測,。因此,, X、Y,、Z軸總是同時(shí)被使能或禁用,;其時(shí)間設(shè)定也比Inactivity中斷中要小很多,TIME_FF可以設(shè)定的最大值為1.28s,;而且Free_Fall中斷只能是DC coupled工作方式,。
7. Watermark 當(dāng)FIFO里所存的采樣點(diǎn)超過一定點(diǎn)數(shù)(SAMPLES)時(shí),Watermark中斷置位,。當(dāng)FIFO里的采樣點(diǎn)被讀取,,使得其中保存的采樣點(diǎn)數(shù)小于該數(shù)值(SAMPLES)時(shí),Watermark中斷自動清除,。
需要指出的是,,ADXL345的FIFO最多可以存儲32個(gè)采樣點(diǎn)(X、Y,、Z三軸數(shù)值),,且具有Bypass模式、普通FIFO模式,、Stream模式和Trigger模式,,一共4種工作模式。FIFO功能也是ADXL345的一個(gè)重要且十分有用的功能,。但是本文后面給出的解決方案中,,并沒有使用到FIFO功能,所以,,在此不做詳細(xì)介紹,。
8. Overrun 當(dāng)有新采樣點(diǎn)更新了未被讀取得前次采樣點(diǎn)時(shí),Overrun中斷置位,。 Overrun功能與FIFO的工作模式有關(guān),,當(dāng)FIFO工作在Bypass模式下,如果有新采樣點(diǎn)更新了DATAX,、DATAY和DATAZ寄存器里的數(shù)值,,則Overrun中斷置位,。當(dāng)FIFO工作在其他三種模式下,只有FIFO被存滿32點(diǎn)時(shí),,Overrun中斷才會置位,。FIFO里的采樣點(diǎn)被讀取后,,Overrun中斷自動清除,。
跌倒過程中的加速度變化特征
對跌倒檢測原理的研究主要是找到人體在跌倒過程中的加速度變化特征。
圖3給出的是加速度在不同運(yùn)動過程中的變化曲線,,包括(a)步行上樓,、(b)步行下樓、(c)坐下,、(d)起立,。假設(shè)跌倒檢測器被固定在被測的人體上。其中紅色的曲線是Y軸(垂直方向)的加速度曲線,,其正常靜止?fàn)顟B(tài)下應(yīng)該為-1g,;黑色和黃色的曲線分別是X軸(前后方向)和Z軸(左右方向)的加速度曲線,其正常靜止?fàn)顟B(tài)下應(yīng)該為0g,;綠色的曲線是三軸加速度的矢量和,,其正常靜止?fàn)顟B(tài)下應(yīng)該為+1g。
a. 步行上樓 b. 步行下樓
c. 坐下 d. 起立
圖3 不同運(yùn)動過程中的加速度變化曲線
由于老年人的運(yùn)動相對比較慢,,所以在普通的步行過程中,,加速度變化不會很大。最明顯的加速度變化就是在坐下動作中Y軸加速度(和加速度矢量和)上有一個(gè)超過3g的尖峰,,這個(gè)尖峰是由于身體與椅子接觸而產(chǎn)生的,。
而跌倒過程中的加速度變化則完全不同。圖4給出的是意外跌倒過程中的加速度變化曲線,。通過圖4和圖3的比較,,可以發(fā)現(xiàn)跌倒過程中的加速度變化有4個(gè)主要特征,這可以作為跌倒檢測的準(zhǔn)則,。這4個(gè)特這在圖4中以紅色的方框標(biāo)注,,下面將對其逐一進(jìn)行詳細(xì)介紹。
圖4 跌倒過程中的加速度變化曲線
1. 失重:在跌倒的開始都會發(fā)生一定的失重現(xiàn)象,。在自由落體的下降過程,,這個(gè)現(xiàn)象會更加明顯,加速度的矢量和會降低到接近0g,,持續(xù)時(shí)間與自由落體的高度有關(guān),。對于一般的跌倒,失重現(xiàn)象雖然不會有像自由落體那么明顯,,但也會發(fā)生合加速度小于1g的情況(通常情況下合加速度應(yīng)大于1g),。因此,,這可以作為跌倒?fàn)顟B(tài)的第一個(gè)判斷依據(jù)??梢杂葾DXL345的Free_Fall中斷來檢測,。
2. 撞擊:失重之后,人體發(fā)生跌倒的時(shí)候會與地面或其他物體發(fā)生撞擊,,在加速度曲線中會產(chǎn)生一個(gè)很大的沖擊,。這個(gè)沖擊可以通過ADXL345的Activity中斷來檢測。因此,,F(xiàn)ree_Fall中斷之后,,緊接著產(chǎn)生Activity中斷是跌倒?fàn)顟B(tài)的第二個(gè)判斷依據(jù)。
3. 靜止:通常,,人體在跌倒后,,也就是撞擊發(fā)生之后,不可能馬上起來,,會有短暫的靜止?fàn)顟B(tài)(如果人因?yàn)榈苟鴮?dǎo)致昏迷,,甚至可能是較長時(shí)間的靜止)。表現(xiàn)在加速度曲線上就是會有一段時(shí)間的平穩(wěn),。這可以通過ADXL345的Inactivity中斷來檢測,。因此,Activity中斷之后的Inactivity中斷是跌倒?fàn)顟B(tài)的第三個(gè)判斷依據(jù),。
4. 與初始狀態(tài)比較:跌倒之后,,人體會發(fā)生翻轉(zhuǎn),因此人體的方向會與原先靜止站立的姿態(tài)(初始狀態(tài))不同,。這使得跌倒之后的靜止?fàn)顟B(tài)下的三軸加速度數(shù)值與初始狀態(tài)下的三軸加速度不同(見圖4),。假設(shè)跌倒檢測器固定在被測人體上的某個(gè)部位,這樣初始狀態(tài)下的三軸加速度數(shù)值可以認(rèn)為是已知的(本例中,,初始狀態(tài)為:X軸0g,,Y軸-1g,Z軸0g),。讀取Inactivity中斷之后的三軸加速度數(shù)據(jù),,并與初始狀態(tài)進(jìn)行比較。如圖4所示,,重力加速度方向由Y軸上的-1g變?yōu)榱薢軸上的1g,,這說明人體發(fā)生了側(cè)向跌倒。因此,,跌倒檢測的第四個(gè)依據(jù)就是跌倒后的靜止?fàn)顟B(tài)下加速度值與初始狀態(tài)發(fā)生變化,,且矢量變化超過一定的門限值(比如0.7g)。
這四個(gè)判斷依據(jù)綜合在一起,,構(gòu)成了整個(gè)的跌倒檢測算法,,可以對跌倒?fàn)顟B(tài)給出報(bào)警,。當(dāng)然,還要注意各個(gè)中斷之間的時(shí)間間隔要在合理的范圍之內(nèi),。比如,,除非是從很高的樓頂?shù)粝聛恚駝tFree_Fall中斷(失重)和Activity中斷(撞擊)之間的時(shí)間間隔不會很長,。同樣,,通常情況下, Activity中斷(撞擊)和Inactivity中斷(靜止)之間的時(shí)間間隔也不會很長,。本文接下來會通過一個(gè)具體實(shí)例給出一組合理的取值,。當(dāng)然,,相關(guān)中斷的檢測門限以及時(shí)間參數(shù)也可以根據(jù)需要而靈活設(shè)置,。