91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0.47M
    文件類型: .pdf
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-03-27
  • 語言: 其他
  • 標簽: 其他??

資源簡介


基于3軸加速度計ADXL345的跌倒檢測應用
應用筆記 AN-1023 中斷 DC coupled作方式或者 AC coupled作方式。其區(qū)別在 ADXI345具有兩個可編程中斷引腳,INT和INT2,共計 于, DC coupled工作方式下,每個采樣點的加速度值將直 八個中斷源:DATA_ READY、 SINGLE_TAP、 接與門限( THRESH ACT或 THRESH INACT進行比較,來 DOUBLE_TAP、 Activity、 Inactivity、 FREE FALL、 Water 判斷是否發(fā)生中斷;而 AC coupled工作方式下,新的采樣 mark和 Overrun。各個中斷均可獨立使能或禁用,只需設 點將以之前的某個采樣點為參考,用兩個采樣點的差值與 置 INT ENABLE寄存器中的相應位即可,通過Ⅰ NT MAP寄 門限( THRESH ACT或 THRESH INACT)進行比較,來判斷 存器的相應位來選擇映射INT1引腳或IT2引腳。 是否發(fā)生中斷。 AC coupled工作方式下的 Activity檢測,是 DATA READY 選擇檢測開始時的那一個采樣點作為參考,以后每個采樣 當有新的數據產牛時, Data Ready中斷置位;當沒有新的 點的加速度值都與參考點進行比較。如果它們的差值超過 數據時,Data_ Ready中斷清除 勹限( THRESH ACT,則 Activity中斷置位。 AC coupled工 作方式下的 nativity檢測,同樣要選擇一個參考點。如果 SINGLE TAP 新釆樣點與參考點的加速度差值超過門限 當加速度值超過一定門限( THRESH TAP)并且持續(xù)時間小 ( THRESH INACT),參考點會被該采樣點更新。如果新采 于一定時間范圍(DUR)的時候, Single_Tap中斷置位。 樣點與參考點的加速度差值小于門限( THRESH INACT) DOUBLE TAP 并且持續(xù)超過一定時間( TIME INACT),則 Inactivity置位。 當第一次 Single Tap事件發(fā)生后,在一定時間( LATENT之 FREE FALL 后,并在·定時問( WINDOW)之內,又發(fā)生第二次 當加速度值低于一定門限( THRESH FF)并且持續(xù)超過一定 Single_tap事件時, Double_Tap中斷置位。 時間( TIME FE)時, Free Fal中斷置位。 圖3所示為有效的 SINGLE TAP及 DOUBLE TAP兩種中 與 Inactivity中斷的區(qū)別在于, Free fall中斷主要用于對自 由落體運動的檢測。因此,Ⅹ、Y、Z軸總是同時被使能或 禁用;其時間設定也比 Inactivity中斷中要小很多, FIRST TAP SECOND TAP TIME FF可以設定的最大值為1.28;而且 Free fal中斷只 能是 DC coupled工作方式 THRESHOLD (THRESH_TAP) Watermark 當FIFO里所存的采樣點超過定點數( SAMPLES)時, IME LIMIT FO Watermark中斷置位。當HIFO里的采樣點被讀取,使得其 TAPS (DUR): 中保存的采樣點數小于該數值( SAMPLES)時, Watermark LATENCY TIME WINDOW FOR TIME SECOND TAP (WINDoW 中斷自動清除 LATEN T) 需要指出的是,ADⅹL345的FIFO最多可以存儲32個采樣點 SINGLE T DOUBLE TAP INTERRUPT INTERRUPT (X、Y、Z三軸數值〕,且具有 Bypass模式、普通FIFO模 式、 Strea模式和 Trigger模式,一共4種工作模式。IIre 圖3. SINGLE TAP和 DOUBLE TAP中斷 功能也是ADXL345的一個重要且十分有用的功能。但是本 文后面給出的解決方案中,并沒有使用到FIFO功能,所 Activi 以,在此不做詳細介紹。有關FIFO的更多詳情,請參閱 當加速度值超過一定門限( THRESH ACT)時, Activity中斷 ADXL345數據手冊。 置位。 Overrun Inactivity 當有新采樣點更新了未被讀取得前次采樣點時, Overrun 當加速度值低于一定門限( THRESH INACT并且持續(xù)超過 中斷置位。 定時間( TIME INACT)時, Inactivity中斷置位。 TIME INACT可以設定的最長時間為255 Overrun功能與FIO的工作模式有關,當FIFO工作在 Bypass模式下,如果有新采樣點更新了 DATAX、 DATAY 需要指出的是,對于 Activity和 INactivity中斷,用戶可以針 和 DATAZ寄存器里的數值,則 Overrun中斷置位。當FIFO 對X、Y、Z軸來分別進行使能或禁用。比如,可以只使能 匚作在其他三種模式下,只有FIFO被存滿32點時, X軸的 Activit中斷,而禁用Y軸和Z軸的 activity中斷。 Overrun中斷才會置位。FIFO里的采樣點被讀取后, 另外,對于 Activity和 Inactivity中斷,用戶還可以自由選擇 Overrun中斷自動清除。 Rev.0 Page 3 of 28 AN-1023 應用筆記 跌倒過程中的加速度變化特性 VECTOR SUM 關于跌倒檢測原理的主要研究集中于人體跌倒過程中的加 768 X-AXIS YAXI 速度變化特性。圖4至圖7分別表示下樓、上樓、坐下及從 512 Z-AXIS 椅子上站起這四種運動中的加速度變化曲線。(跌倒檢測器 256 戴在被測人的身上。) 9y 1024 VECTOR SUM 768 X-AXIS Y-AXIS -512 512 Z-AXIS 256 1024 當 201 SAMPLES(50 s 圖7站起過程巾的加速度變化曲線 512 1024 1: WEIGHTLESSNESS VECTOR SUM 768 2: IMPACT X-AXIS 768F 3: MOTIONLESS Y-AXIS 4: INITIAL STATUS Z-AXIS 101151201251 301 351 SAMPLES (50/s) 512 圖4.下樓過程中的加速度變化曲線 1024 VECTOR SUM 768 X-AXIS -AXIS 512 Z-AXIS G256 u 101 SAMPLES (50/ s) -256 圖8.跌倒過程中的加速度變化曲線 由于老年人的動作相對較慢,因此,在圖4和圖5所示步行 768 運動中,加速度變化并不是很明顯。圖8表示跌倒過程中 1024 51101151201251301351401 的加速度變化曲線。通過比較圖8與圖4至圖7四幅圖,可 SAMPLES (50/s) 以發(fā)現,跌倒事件有四種關鍵特性。這四種特性可用作跌 圖5.上樓過程中的加速度變化曲線 倒檢測的標準,圖8中以方框標示,下面逐一詳細解釋, 1024 VECTOR SUM 失重 768 X-AXIS 失重現象會發(fā)生在跌倒之初。這種現象在自由跌倒過程中 512 Z-AXIS 尤其顯著,加速度的矢量和降至近0g的水平。持續(xù)時間取 G256 決于自由跌倒的高度。盡管正常跌倒過程中的失重現象不 如自由跌倒過程中顯著,但其加速度矢量和同樣小于1g(正 常情況下一般大于1g)。因此,這可以作為跌倒狀態(tài)的第 256 個判斷依據。可以由ADXL345的rea中斷來檢測。 512 768 1024 151 201 SAMPLES (50/s) 圖6.坐下過程中的加速度變化曲線 Rev. 0 Page 4 of 28 應用筆記 AN-1023 撞擊 系統的典型電路連接 發(fā)生失重現象后,人體與地面相撞擊;在圖8的加速度曲 ADⅪI.345與MCU之間的電路連接非常簡單。在本應用筆記 線中,該現象表現為劇烈沖擊。這種沖擊由ADXL345的 中,我們利用ADXL345和ADuC7026微控制器創(chuàng)建了一個 ctivity中斷檢測。因此,確定跌倒的第二個依據是在 測試平臺。圖9所示為ADXL345與ADuC7026之間的典型連 FREE FALLE中斷之后出現的 Activity中斷。 接。其中,ADXI345的引腳連接高電平,ADXL345工作于 靜止 I2C模式。SDA和SCL分別為I2C總線的數據和時鐘,與 一般地,跌倒并撞擊地面后,人休無法立即站起來。人休 ADuC7026的對應引腳相連。ADuC7026的一個GPIO連接 會在短時間內保持靜止狀態(tài)。在圖8的加速度曲線中,表 至AD)XL345的 SDOJALT ADDRESS引腳,以選擇ADXL345 示為一段平線,由ADXL345的 Inactivity中斷檢測。因此, 的IC地址。ADXL345的INT1引腳連接至ADuC7026的一個 確定跌倒的第三個依據是在 Activity中斷之后出現 Activity IRQ輸入端,以產生中斷信號。其他的單片機或者處理器 中斷。 都可以采用與圖9類似的電路與ADXL345進行連接。。為 獲得更高數據速率,ADXL345也可工作于SPI模式。對于 與初始狀態(tài)比較 關丁SPI連接的示例電路,請參閱ADXL345數據手冊。 跌倒后,人體會翻轉,因此三個軸的加速度與跌倒前的初 始狀態(tài)有所不同。如果將跌倒檢測器戴在人體上以取得加 速度的初始狀態(tài),則可在 Inactivity中斷之后讀取三個軸的 加速度數據,然后將采樣數據與初始狀態(tài)進行比較。因 此,確定跌倒的第四個依據是采樣數據與初始狀態(tài)之差是 DD/0 否超過一定闕值(如0.7g) SDA SDA/SDI/SDIO SCL/SCLK 這四個依據共同構成整個跌倒檢測算法,在此基礎上,系 GPIO SDO/ALT ADDRESS 統可根據跌倒狀態(tài)報警。中斷間的時間間隔必須在一定范 GND 圍內。正常情況下, FREE FALL中斷(失重)與 Activity中斷 ADuC7026 ADXL 345 (沖擊)之間的時間間隔不應過長,除非從極高處跌落。類 圖9.ADXL345與MCU之間的典型電路連接 似地, Activity中斷(沖擊)與 nativity中斷(靜止)之間的時間 間隔也不應過長。“利用ADXL345簡化跌倒檢測算法”部分 利用ADXL345簡化跌倒檢測算法 給出了個實例及組合理的值。相關的中斷檢測閾值和 本節(jié)將給出以上解決方案的具體算法實現 時間參數可根據需要靈活設置。另外,如果跌倒導致昏迷 表1列出了各寄存器的功能以及本算法中用到的值。有關 等嚴重后果,人體保持靜止的時間會更長。這種狀態(tài)仍然 各寄存器位的詳細定義,請參閱ADXL345數據手冊。 可以通過 Inactivity中斷檢測到。因此,如果跌倒后檢測到 Inactivity狀態(tài)持續(xù)一定長的時間,則可發(fā)緊急報鳘。 請注意,表1中所示的部分寄存器有兩個設置值。這表示 在算法中會切換使用這兩個數值,以實現不同的檢測目 的。算法流程圖如圖10所小。 Rev.0 Page 5 of 28 AN-1023 應用筆記 表1ADKL345寄存器功能描述 十六進制十進制 算法中的 地址 地址 寄存器名稱 類型 復位值描述 設置 算法中設置的功能 000 DEVID 只讀 0×E5器件D 只讀 0X01至1至28 Reserved 保留 保留,不要操作保留 OxIC OxI D THRESH TAP 讀/寫 0×00Tap的門限 不使用 OxIE 30 OFSX 讀/寫 000X軸失調 0×06 補償X軸失調,通過初始化 校正獲得 OxlF OFSY 讀/寫 0×00Y軸失調 OxF9 補償Y軸失調,通過初始化 校正獲得 0X20 OFSZ 讀/寫 0×0z-軸失調 OXFO 補償Z軸失調,通過初始化 校正獲得 021 33 DUR 讀/與 0x00Tap的持續(xù)時間 不使用 0X22 34 Latent 讀/寫 0×00Tap的延遲時間 不使用 0x23 Window 讀/寫 0×00Tap的時間窗 不使用 THRESH ACT 讀/寫 0x00 Activity的門限 0×200×08設置 Activity的門限為29或05g 0x25 37 THRESH INACT讀寫 0×00 nativity的門限 0x03 設置 activity的門限為01875g 0x26 38 TIME INACT 讀/寫 0×001 nativity的時間 0x02/0x0A設置 activity的時間為2或105 Ox27 ACT INACT CTL讀/寫 0×00 Activity/, nativity0xF(×F使能X、Y、Z三軸的 Activity和 使能控制 lactivity功能,其中 Inactivity 為 AC coupled模式, Activity為 DC coupled或 AC coupled模式 0×28 THRESH FF 讀/寫 Free-Fal0門限 0×0C 設置Free-Fa門限為0.75 0x29 4 TIME FF 讀/寫 0×00 Free-Fall時間 0x06 設置 Free-F叫l(wèi)時間為30ms OX2A 42 TAP AXES 讀/寫 0x00 Tap/Double Tap 不使用 使能控制 Ox2B ACT TAP STATUS只讀 0x00 Activity/Tap 只讀 中斷軸指示 Oxc BW RATE 讀/寫 0×0A采樣率和功耗模式0×0A 設置采樣率為100Hz 控制 OX2D POWER CTL 讀/寫 0×00工作模式控制 0x00 設置為正常工作模式 Ox2E 46 INT ENABLE 讀/寫 0x00中斷使能控制 OxIC 使能 Activit!y, Inactivity、 Free-F叫中斷 0×2F 47 INT MAP 讀/寫 0×00中斷映射控制 0x00 將所有中斷映射到T1引腳 48 INT SOURCE 只讀 0×00中斷源指示 只讀 0X31 DATA FORMAT讀/寫 0×00數據格式控制 OXOB 設置為+-16g測量范圍,13bit 右對齊模式,中斷為高電平觸 發(fā),使用l2C數據接口 50 DATAXO 只讀 0×00X軸數據0 只讀 51 DATAXI 只讀 0×00X軸數據 只讀 0X34 52 DATAYO 只讀 0×00Y-軸數據0 只讀 X35 53 DATAYT 只讀 0x00Y-軸數據1 只讀 0X36 54 DATAZO 只讀 0×00z軸數據0 只讀 0x37 55 DATAZI 只讀 0x00z-軸數據1 只讀 0X38 FIFO CTL 只讀 0x00FFO控制 不使用 0x39 57 FIFO STATUS 只讀 0×00FFO狀態(tài) Rev. 0 Page 6 of 28 應用筆記 AN-1023 INITIALIZATION FREE FALL INTERRUPT ASSERTED? YES YES CONTINUOUS FREE FALL DETECTED? YES TIMEOUT? NO ACTIVITY INTERRUPT ASSERTED? YES TIMEOUT? YES No No∠ INACTIVITY INTERRUP ASSERTED? STABLE STATUS IS DIFFERENT FROM INITIAL STATUS YES GENERATE FALL ALERT ACTIVITY INTERRUPT YES ASSERTED? NO INACTIVITY INTERRUPT ASSERTED? YES GENERATE CRITICAL GENERATE FREE-FALL ALERT CRITICAL ALERT 圖10.算法流程圖 Rev.o Page 7 of 28 AN-1023 應用筆記 算法中的各中斷門限和相關時間參數如下 中斷為 ACcoupled工作模式。把 THRESH INACT設為 1.初始化后,系統等待 FREE FAI中斷(失重)。 THRESH FF 0.1875g,把TMF_ INACT設為10s, Inactivity中斷為 設為075g, TIME FF設為30ms。 AC coupled工作模式。也就是說,如果在10s之內,人 體一直沒有任何動作,則會產生 Inactivity中斷,使系 2. FREE FALL中斷產生之后,系統開始等待 Activity中斷 統給出一個嚴重報警。而在此期間一旦人體有所動 (沖擊)。 THRESH ACT.設為2g, Activity中斷為Dc 作,則會產生 Activity中斷,從而結束整個判斷過程 coupled工作模式。 8.木算法還可以檢測出人體從較高的地方跌落。如果 3. FREE FALL中斷(失重)與 Activity中斷(沖擊)之間的時 Free fal中斷連續(xù)產生且之間的間隔小于100ms,可以 間間隔設為200ms。如果該時間間隔大于200ms,則認 認為,人體處于連續(xù)的跌落狀態(tài)。如果 Free Fal中斷 為無效。200ms計時通過MCU定吋器實現 (失重)連續(xù)發(fā)生300ms,則說明人體是從超過045m的 4. Activity中斷產生之后,系統開始等待 Inactivity中斷(沖 高度跌落,系統會給出一個跌落的報警。 擊后靜止)。 THRESH INACT設為01875g, TIME INACT 設為2s。 Inactivity中斷為 AC coupled工作模式。 ×10×0.32=045m 5.在 Activity中斷產(撞擊)生之后的3.5s時間之內,應該有 Inactivity中斷(撞擊后的靜止)產生。如果超時,則認」 本算法巳在ADuC7026微控制器中以C語言實現。我們將同 為無效。3.5s計時需要通過MCU中的定時器來實現。 時提供一個基于該解決方案的測試案例,以便驗證算法。 包括向前跌倒、向后跌倒、向左側跌倒、向右側跌倒在內 6.如果 Inactivity中斷之后的加速度值與初始狀態(tài)(假設已 的四種體位,毎種體位均測試20次。前10次試驗為典型跌 知)下數值的矢量差超過0.7g,則說明檢測到一次有效 倒,在跌倒后無長時間靜止,后10次試驗也為典型跌倒 的跌倒,系統會給出一個報警。 只是跌倒后有長時間靜止。表2列出了測試結果。 7.當檢測到跌倒狀態(tài)之后,為了判斷是否在跌倒之后人 木試驗表明,木文提出的基于ADXL345的解決方案可以有 體有長時間的靜止不動。需要繼續(xù)檢測 Activity中斷和 效地檢測到跌倒狀態(tài)。請注意,這只是一個簡單的實驗 Inactivity中斷。這里把 THRESH ACT設為05g, Activity 要驗證本解決方案的可靠性,還需要進行更加全面、有效 和長期的實驗 表2.測試結果 測試條件 測試結果 實驗編號跌倒體位 跌倒后有無長時間靜止 檢測到的跌倒(次數)檢測到的長時間靜止(次數) 1至10 向前跌倒 無 10 0 11至20向前跌倒 有 10 21至30向前跌倒 無 10 0 31至40向前跌倒 有 10 41至50向左側跌倒 無 10 0 51至60向左側跌倒 有 10 10 61至70向左側跌倒 無 10 71至80向左側跌倒 有 10 0 0 Page 8 of 28 應用筆記 AN-1023 代碼實例 ADuC7026 river'包括AuC026GPO控制函數、C主機讀 本節(jié)將給出以上解決方案基于ADXI.345和ADuC7026平臺 寫函數以及ADuC7026初始化。“x345h”含ADXI345寄存器及 的C語言代碼。項目中含有四個h文件和一個.文件,采用 位定義。“x345ioh”文件含用于通過rC及SD讀寫ADXL345的 Keil uv3進行編譯。文件“ FallDetection.c”含趺倒檢測算法。 函數。 “ Falldetection.h”詳細列出跌倒檢測算法中用到的函數及變 量定義、ADXL345讀/寫函數的應用以及ADXL345初始 化。 FallDetection. c include "FallDetectionh"// Include header files void IRQ Handler() irg / IRQ interrupt unsigned char ii if((IRQSTA GP TIMER BIT)==GP TIMER BIT) / TIMERl interrupt, interval 20ns TIClRI = 0; / Clear T-MER1 interrupt if(Detectionstatus=0xF2)// strike after weightlessness is detected, waiting for stable TimerWaitForstable++ if(TimerWaitForStable>=STABLE WINDOW) //Time out, restart IRQCLR GP TIMER BIT; / Disable ADuC7026's Timer1 interrupt Detecionstatus=0xF0; putchar (Detections=atus)i ADXL345Registers [XI345 TERESH ACT]=STRIKE THRESHOLDi ADXL345Registers [xL345 TERESH INACT ]=NOMOVEMENT THRESHOLD; ADXL345Registers [XI345 TIME INACT]=STABLE TIME ADXL345Registers [XI345 ACT INACT CTl]=XL345 INACT Z ENABLe XL345 INACT Y ENABle I XI345 INACT X ENABLE I XL345 INACT AC I XI345 ACT Z ENABLE I XL345 ACT Y ENABLE I XL3 45 ACT X ENABLE XI345 ACT DC; x1345Wr-te(4 XL3 45 THRESH ACT, &ADXL 3 4 5Registers [Xl345 THrESH Act])i else if(Detectionstatus--OxF1) //Weightlessness is detected, waiting for strike T'imerWaitForstrike++ if(TimerWaitForStrike>=STRIKE WINDOW) // Time out, restart IRQCLR GP TIMER BIT; / Disable ADuc7026's Timer1 interrupt Detectionstatus=OxFO putchar(Detections-atus)i ADXL 345Registers[XI345 TERESH ACT]-STRIKE THRESHOLDi ADXL345Reqisters [ xl345 TERESH INACt]=NOMOVEMENT THRESHOLD; ADXL 345Registers [XL345 TIME INACT]=STABLE TIME i XI345 INACT X ENABLE I XI345 INACT AC I XI345 ACT Z ENABLE I XI345 ACT Y ENA ENABLE I XL345 INACT Y ENABLE ADXL345Registers XI345 ACT INACT CTl]=XL345 INAcT BLE|x345 ACT X ENABL三 KL345 ACT DCi x1345Wr-te(4, XL3 45 THRESH ACT, &ADXI345Regiscers [XL345 THRESH ACT]) Rev.0 Page 9 of 28 AN-1023 應用筆記 if((IrQSTA&SPM4 IO BIT)==SPM4 IO B-T)// External interrupt form ADXL345 INTC IRQCIR =SPM4 IO BIT;// Disable ADuC7026's external interrupt x1345Read(-, XI345 INT SOURCE, &ADXL345Registers [Xl345 INT SoURCE]); if((ADXL3 4 SRegisters [XL3 45 INT SOURCE&XI345 ACTIV-TY)==XL3 45 ACTIVITY) / Activity interrupt asse≌ted if(DetectionStatus==OxFl) / Waiting for strike, and now strike is detected Detectionstaus=0xF2;// Go to status "F2 putchar(Detect-onstatus)i ADXL345Regis=ers [XI345 THRESH ACT]=STAB-E THRESHOLD; ADXL345Regiscers [Xl345 THRESH INACT]=NOMOVEMENT THRESHOLDi ADXL345Regis-ers [XI345 TIME INACT]=STAB-E TIMEi ADXL345Regis-ers [XI345 ACT -NACT CTL]=X-345 INACT Z ENABLE XI345 -NACT Y ENABLE I X-3415 INACT X ENABLE XL3415 INACT AC XL3 45 ACT Z ENABLE XL345 ACT Y ENABLE XI345 ACT X ENABL XI,345 ACT AC; x-345Write(4, XI345 THRESH ACT, &ADXL345Registers [XL3 45 THRESH ACT]) TRQFNI=GP TTMER BTT; / Enable ADuc7026's Timer1 interrupt T-merWaitForstable=0 else if(DetectionStatus==0xF4)// Waiting fcr long time motionless, but a movement is detected Detectionsta-us-0xF0; // Go to status "Fo", restart putchar(Detect-onstatus ADXL345Regis=ers[XI345 THRESH ACT]=STRIKE THRESHOLD ADXL345Regis-ers XL345 THRESH INACT I=NOMOVEMENT THRESHOLD ADXI345Regis-ers [XI345 TIME INACT]-STAB-E TIME; ADXL345Regis-ers [XI345 ACT -NACT CTL]=X_345 INACT Z ENABLE I XL345 -NACT Y ENABLE I X-345 INACT X ENABLE I XL345 INACT AC I X-345 ACT Z ENABLE I XL345 ACT Y ENABLE I XI345 ACT X ENABLE I ⅩL345 ACT O x_345write(4, XL345 THRESH ACT, &ADXL345Registers XL345 THRESH Acrl)i else if((ADXL 3 45Registers [XI345 INT SOURCE]&XL3 45 INACTIVITY)==XI345 INACTIVITY)// Inactivity interrupt asserted if(Detections Status==0XF2) // Waiting for stable table is detected IRQCLR GP T-MER BITi x-345Read(6, XI345 DATAXO, &ADXl345Registers [Xl3 45 DATAXO])i DeltaVector Sum=0 Acceleration [i]=ADXL345Registers [XI345 DATAXl+i*2]&OxlFi []<<8)|ADXL345 ters [Xl 345 DATAX0+i*2; if(Acceleration [1.<0x1000) Rev. 0 Page 10 of 28

資源截圖

代碼片段和文件信息

評論

共有 條評論