文章转自ADI官网,版权归属原作者一切
前语
人们在跌倒后会面对两层风险。清楚明晰的是跌倒自身或许对人体发作损伤;别的,假如跌倒后不能得到及时的救助,或许会使成果愈加恶化。例如,许多老年人由于其身体比较衰弱,自理才能和自我维护才能下降,常常会发作意外跌倒,假如得不到及时的救助,这种跌倒或许会导致十分严峻的成果。有材料显现,许多严峻的成果并不是由于跌倒直接形成的,而是由于跌倒后,未得到及时的处理和救助。当呈现跌倒状况时,假如可以及时地告诉到救助人员,将会大大地减轻由于跌倒而形成的损害。
不仅是对白叟,在许多其他状况下,跌倒的报警也是十分有协助的,尤其是从比较高的当地跌倒下来的时分。比方人们在爬山,修建,擦窗户,刷油漆和修补房顶的时分。
这促进人们越来越热衷于对跌倒检测以及跌倒预告仪器的研发。近年来,跟着 iMEMS® 加快度传感器技能的开展,使得规划根据三轴加快度传感器的跌倒检测器成为或许。这种跌倒检测器的基本原理是经过丈量佩带该仪器的个别在运动进程中的三个正交方向的加快度改变来感知其身体姿态的改变,并经过算法分析判别该个别是否发作跌倒状况。当个别发作跌倒时,仪器可以合作GPS模块以及无线发送模块对这一状况进行定位及报警,以便取得相应的救助。而跌倒检测器的中心部分便是判别跌倒状况是否发作的检测原理及算法。
ADXL3451是ADI公司的一款3轴、数字输出的加快度传感器。本文将在研讨跌倒检测原理的基础上,提出一种根据ADXL345的新式跌倒检测解决计划。
iMEMS加快度传感器ADXL345
iMEMS 半导体技能把微型机械结构与电子电路集成在同一颗芯片上。 iMEMS 加快度传感器便是运用这种技能,完成对单轴、双轴乃至三轴加快度进行丈量并发作模仿或数字输出的传感器。根据不同的运用,加快度传感器的丈量规模从几g到几十g不等。数字输出的加快度传感器还会集成多种中止形式。这些特性可以为用户供给愈加便利灵敏的解决计划。
ADXL345是ADI公司最近推出的根据 iMEMS 技能的3轴、数字 输出加快度传感器。ADXL345具有 ±2-g, ±4-g, ±8-g, ±16-g 可变的丈量规模;最高13b i t分辨率;固定的4mg/L S B灵敏度;3mm*5mm*1mm超小封装;40-145uA超低功耗;规范的 I2C® 或SPI数字接口;32级FIFO存储;以及内部多种运动状况检测和灵敏的中止方法等特性。一切这些特性,使得ADXL345有助于大大简化跌倒检测算法,使其成为一款十分合适用于跌倒检测器运用的加快度传感器。
本文给出的跌倒检测解决计划,彻底根据ADXL345内部的运动状况检测功用和中止功用,乃至不需求对加快度的详细数值进行实时读取和杂乱的核算操作,可以使算法的杂乱度降至最低。
中止体系
图1给出了ADXL345的体系框图及管脚界说
ADXL345具有两个可编程的中止管脚:Int1和Int2。以及Data_Ready、Single_Tap、Double_Tap、Activity、Inactivity、Free_Fall、Watermark、Overrun,合计8个中止源。每个中止源可以独登时使能或禁用,还可以灵敏地挑选是否映射到Int1或Int2中止管脚。一切的功用都可以一起运用,仅仅某些功用或许需求共用中止管脚。中止功用经过INT_ENABLE存放器的相应位来挑选使能或禁用,经过INT_MAP存放器的相应位来挑选映射到Int1管脚或Int2管脚。中止功用的详细界说如下:
1. Data_Ready 当有新的数据发作时,Data_Ready中止置位;当没有新的数据时,Data_Ready中止铲除。
2. Single_Tap 当加快度值超越必定门限(THRESH_TAP)并且持续时刻小于必定时刻规模(DUR)的时分,Single_Tap中止置位。
3. . Double_Tap 当第一次Single_Tap事情发作后,在必定时刻(LATENT)之后,并在必定时刻(WINDOW)之内,又发作第2次Single_Tap事情时,Double _Tap中止置位。
图2给出了有用的Single_Tap中止和Double _Tap中止的暗示图。
4. Activity当加快度值超越必定门限(THRESH_ACT)时,Activity中止置位。
5. Inactivity当加快度值低于必定门限(THRESH_INACT)并且持续超越必定时刻(TIME_INACT)时,Inactivity中止置位。TIME_INACT可以设定的最长时刻为255s。
需求指出的是,关于Activity和Inactivity中止,用户可以针对X、Y、Z轴来别离进行使能或禁用。比方,可以只使能X轴的Activity中止,而禁用Y轴和Z轴的Activity中止。
别的,关于Activity和Inactivity中止,用户还可以自由挑选D C coupled作业方法或许AC coupled作业方法。其差异在于,D C coupled作业方法下,每个采样点的加快度值将直接与门限(THRESH_ACT或THRESH_INACT)进行比较,来判别是否发作中止;而AC coupled作业方法下,新的采 样点将以 之前的某个采样点为参阅,用两个采样点的差值与门限(THRESH_ACT或THRESH_INACT)进行比较,来判别是否发作中止。AC coupled作业方法下的Activity检测,是挑选检测开端时的那一个采样点作为参阅,今后每个采样点的加快度值都与参阅点进行比较。假如它们的差值超越门限(THRESH_ACT),则Activity中止置位。AC coupled作业方法下的Inctivity检测,相同要挑选一个参阅点。假如新采样点与参阅点的加快度差值超越门限(THRESH_INACT),参阅点会被该采样点更新。假如新采样点与参阅点的加快度差值小于门限(THRESH_INACT),并且持续超越必定时刻(TIME_INACT),则Inctivity置位。
6. Free_Fall 当加快度值低于必定门限(THRESH_FF)并且持续超越必定时刻(TIME_FF)时,Free_Fall中止置位。与Inactivity中止的差异在于,Free_Fall中止首要用于对自由落体运动的检测。因而,X、Y、Z轴总是一起被使能或禁用;其时刻设定也比Inactivity中止中要小许多,TIME_FF可以设定的最大值为1.28s;并且Free_Fall中止只能是DC coupled作业方法。
7. Watermark当FIFO里所存的采样点超越必定点数(S A MP L E S)时,Watermark中止置位。当FIFO里的采样点被读取,使得其间保存的采样点数小于该数值(SAMPLES)时,Watermark中止主动铲除。
需求指出的是,ADXL345的FIFO最多可以存储32个采样点(X、Y、Z三轴数值),且具有Bypass形式、一般FIFO形式、Stream形式和Trigger形式,总共4种作业形式。FIFO功用也是ADXL345的一个重要且十分有用的功用。可是本文后边给出的解决计划中,并没有运用到FIFO功用,所以,在此不做详细介绍。.
8. Overrun当有新采样点更新了未被读取得前次采样点时,Overrun中止置位。Overrun功用与FIFO的作业形式有关,当FIFO作业在Bypass形式下,假如有新采样点更新了DATA X、DATAY和DATA Z存放器里的数值,则Overrun中止置位。当FIFO作业在其他三种形式下,只要FIFO被存满32点时,Overrun中止才会置位。FIFO里的采样点被读取后,Overrun中止主动铲除。
跌倒进程中的加快度改变特征
对跌倒检测原理的研讨首要是找到人体在跌倒进程中的加快度改变特征。
图3给出的是加快度在不同运动进程中的改变曲线,包含(a)步行上楼、(b)步行下楼、(c)坐下、(d)起立。假定跌倒检测器被固定在被测的人体上。其间赤色的曲线是Y轴(笔直方向)的加快度曲线,其正常停止状况下应该为-1g;黑色和黄色的曲线别离是X轴(前后方向)和Z轴(左右方向)的加快度曲线,其正常停止状况下应该为0g;绿色的曲线是三轴加快度的矢量和,其正常停止状况下应该为+1g。
图3 不同运动进程中的加快度改变曲线
由于老年人的运动相对比较慢,所以在一般的步行进程中,加快度改变不会很大。最显着的加快度改变便是在坐下动作中Y轴加快度(和加快度矢量和)上有一个超越3g的尖峰,这个尖峰是由于身体与椅子触摸而发作的。
而跌倒进程中的加快度改变则彻底不同。图4给出的是意外跌倒进程中的加快度改变曲线。经过图4和图3的比较,可以发现跌倒进程中的加快度改变有4个首要特征,这可以作为跌倒检测的原则。这4个特这在图4中以赤色的方框标示,下面将对其逐个进行详细介绍:
1. 失重: 在跌倒的开端都会发作必定的失重现象。在自由落体的下降进程,这个现象会愈加显着,加快度的矢量和会降低到挨近0g,持续时刻与自由落体的高度有关。关于一般的跌倒,失重现象尽管不会有像自由落体那么显着,但也会发作合加快度小于1g的状况(一般状况下合加快度应大于1g)。因 此,这可以作为跌倒状况的第一个判别根据。可以由ADXL345的Free_Fall中止来检测。
2. 碰击: 失重之后,人体发作跌倒的时分会与地上或其他物体发作碰击,在加快度曲线中会发作一个很大的冲击。这个冲击可以经过ADXL345的Activity中止来检测。因而,Free_Fall中止之后,紧接着发作Activity中止是跌倒状况的第二个判别根据。
3. 停止: 一般,人体在跌倒后,也便是碰击发作之后,不或许立刻起来,会有时刻短的停止状况(假如人由于跌倒而导致昏倒,乃至或许是较长时刻的停止)。表现在加快度曲线上便是会有一段时刻的平稳。这可以经过ADXL345的Inactivity中止来检测。因而,Activity中止之后的Inactivity中止是跌倒状况的第三个判别根据。
4. 与初始状况比较: 跌倒之后,人体会发作翻转,因而人体的方向会与原先停止站立的姿态(初状况)不同。这使得跌倒之后的停止状况下的三轴加快度数值与初始状况下的三轴加快度不同(见图4)。假定跌倒检测器固定在被测人体上的某个部位,这样初始状况下的三轴加快度数值可以以为是已知的(本例中,初始状况为:X轴0g,Y轴-1g,Z轴0g)。读取Inactivity中止之后的三轴加快度数据,并与初始状况进行比较。如图4所示,重力加快度方向由Y轴上的-1g变为了Z轴上的1g,这阐明人体发作了侧向跌倒。因而,跌倒检测的第四个根据便是跌倒后的停止状况下加快度值与初始状况发作改变,且矢量改变超越必定的门限值(比方 0.7 g)
这四个判别根据归纳在一起,构成了整个的跌倒检测算法,可以对跌倒状况给出报警。当然,还要留意各个中止之间的时刻距离要在合理的规模之内。比方,除非是从很高的楼顶掉下来,不然Free_Fall中止(失重)和Activity中止(碰击)之间的时刻距离不会 很长。相同,一般状况下, Activity中止(碰击)和Inactivity中止(停止)之间的时刻距离也不会很长。本文接下来会经过一个详细实例给出一组合理的取值。当然,相关中止的检测门限以及时刻参数也可以根据需求而灵敏设置。
别的,假如跌倒形成了严峻的成果,比方,导致了人的昏倒。那么人体会在更常的一段时刻内都坚持停止。这个状况依然可以经过Inactivity中止来检测。也便是说,假如发现在跌倒之后的很长时刻内都坚持Inactivity状况,可以再次给出一个严峻报警。
典型电路衔接
ADXL345和微操控器之间的电路衔接十分简略。本文中的测验渠道由ADXL345和微操控器A DuC70262组成。图5给出了ADXL345和ADuC7026.2之间的典型电路衔接。ADXL345的CS管脚接高电平,表明ADXL345作业在I2C形式。SDA和SCL是I2C总线的数据线和时钟线,别离衔接到A DuC7026相应的I2C总线管脚。A DuC7026的一个GPIO管脚衔接到ADXL345的ALT管脚,用来挑选ADXL345的I2C地址。ADXL345的INT1管脚衔接到ADuC7026的IRQ输入用来发作中止信号。
其他的单片机或许处理器都可以选用与图5类似的电路与ADXL345进行衔接。ADXL345还可以作业在SPI形式以取得更高的数据传输速率。关于SPI作业形式的详细描绘,请参阅ADXL345数据手册。
表1 ADXL345存放器功用阐明
地址 | 存放器称号 | 类型 | 默认值 | 阐明 | 设置值 | 设置的功用 |
0 | DEVID | 只读 | 0xE5 | 器材ID | 只读 | |
1-1C | Reserved | 保存, 不要操作 | 保存 | |||
1D | THRESH_ TAP | 读/写 | 0x00 | Tap的门限 | 不运用 | |
1E | OFSX | 读/写 | 0x00 | X轴失调 | 0x06 | 补偿X轴失调,经过初始化校对取得 |
1F | OFSY | 读/写 | 0x00 | Y轴失调 | 0xF9 | 补偿Y轴失调,经过初始化校对取得 |
20 | OFSZ | 读/写 | 0x00 | Z轴失调 | 0xFC | 补偿Z轴失调,经过初始化校对取得 |
21 | DUR | 读/写 | 0x00 | Tap的持续时刻 | 不运用 | |
22 | LATENT | 读/写 | 000 | Tap的延迟时刻 | 不运用 | |
23 | WINDOW | 读/写 | 0x00 | Tap的时刻窗 | 不运用 | |
24 | THRESH_ ACT | 读/写 | 0x00 | Activity 的门限 | 0x20/0x08 | 设置Activity 的门限为2 g或0.5 g |
25 | THRESH_ INACT | 读/写 | 0x00 | Inactivity 的门限 | 0x03 | 设置Inactivity 的门限为0.1875 g |
26 | TIME_ INACT | 读/写 | 0x00 | Inactivity 的时刻 | 0x02/0x0A | 设置Inactivity 的时刻为2 s 或 10 s |
27 | ACT_ IACT_CTL | 读/写 | 0x00 | Activity/Inactivity使能操控 | 0x7F/0xFF | 使能 X、 Y、Z三轴的 Activity和Inactivity功用,其间Inactivity为AC coupled形式,Activity为DC coupled 或AC coupled形式。 |
28 | THRESH_FF | 读/写 | 0x00 | Free-Fall 的门限 | 0x0C | 设置Free-Fall的门限为0.75 g |
29 | TIME_FF | 读/写 | 0x00 | Free-Fall 的时刻 | 0x06 | 设置Free-Fall的时刻为30 ms |
2A | TAP_AXES | 读/写 | 0x00 | Tap/Double Tap使能操控 | 不运用 | |
2B | ACT_TAP _STATUS | 只读 | 0x00 | Activity/Tap中止轴指示 | 只读 | |
2C | BW_RATE | 读/写 | 0x0A | 采样率和功耗形式操控 | 0x0A | 设置采样率为 100 Hz |
2D | POWER_ CTL | 读/写 | 0x00 | 作业形式操控 | 0x00 | 设置为正常作业形式 |
2E | INT_ ENABLE | 读/写 | 0x00 | 中止使能操控 | 0x1C | 使能Activity, Inactivity, Free-Fall 中止。 |
2F | INT_ MAP | 读/写 | 0x00 | 中止暗射操控 | 0x00 | M一切中止暗射到Int1 管脚 |
30 | INT_ SOURCE | 只读 | 0x00 | 中止源指示 | 只读 | |
31 | DATA_ FORMAT | 读/写 | 0x00 | 数据格式操控 | 0x0B | 设置为 ±16 g 丈量规模, 13-bit右对齐形式, 中止为高电平触发, 运用I2C 数据接口。 |
32 | DATAX0 | 只读 | 0x00 | X轴数据 | 只读 | |
33 | DATAX1 | 只读 | 0x00 | 只读 | ||
34 | DATAY0 | 只读 | 0x00 | Y轴数据 | 只读 | |
35 | DATAY1 | 只读 | 0x00 | 只读 | ||
36 | DATAZ0 | 只读 | 0x00 | Z轴数据 | 只读 | |
37 | DATAZ1 | 只读 | 0x00 | 只读 | ||
38 | FIFO_ CTL | 读/写 | 0x00 | FIFO 操控 | 不运用 | |
39 | FIFO_ STATUS | 读/写 | 0x00 | FIFO 状况 | 不运用 | |
*RW = Read/write; RO = Read-only |
运用ADXL345简化跌倒检测算法
本节将给出以上解决计划的详细算法完成。表1中扼要阐明晰每个存放器的效果以及在本算法中的设置值。关于各个存放中每一位的详细意义,请参阅ADXL345的数据手册。
需求指出的是,表1给出的设置值中,某些存放器会给出两个数值,这阐明在算法中会切换运用这两个数值,来到达不同的检测意图。算法的流程图如图6所示
算法中,关于各种中止的门限以及时刻参数的设置如下所述
1. 初始化后,体系等候Free_Fall中止(失重),这儿把THRESH_FF设为0.75g,把TIME_FF设为30ms。
2. Free_Fall中止发作之后,体系开端等候Activity中止(撞 击),这儿把THRESH_ACT设为2g,Activity中止为DC coupled作业形式。
3.Free_Fall中止(失 重)与Activity中止(碰击)之间的时刻距离设置为200ms。假如超越200ms,则以为无效。200ms计时需求经过MCU中的定时器来完成
4. Activity中止发作之后,体系开端等候Inactivity中止(碰击后的停止 ),这儿把THRESH_INACT设为0.1875g,把TIME_INACT设为2s,Inactivity中止为AC coupled作业形式。
5. 在Activity中止产(碰击)生之后的3.5s时刻之内,应该 有Inactivity中止(碰击后的停止)发作。假如超时,则以为无效。3.5s计时需求经过MCU中的定时器来完成。
6. 假如Inactivity中止之后的加快度值与初始状况(假定已知)下数值的矢量差超越0.7g,则阐明检测到一次有用的跌倒,体系会给出一个报警。
7. 当检测到跌倒状况之后,为了判别是否在跌倒之后人体有长时刻的停止不动。需求持续检测Activity中止和Inactivity中止。这儿把THRESH_ACT设为0.5g,Activity中止为AC coupled作业形式。把THRESH_INACT设为0.1875g,把TIME_INACT设为10s,Inactivity中止为AC coupled作业形式 。也便是说,假如在10s之内,人体一向没有任何动作,则会发作Inactivity中止,使体系给出一个严峻报警。而在此期间一旦人体有所动作,则会发作Activity中止,然后完毕整个判别进程。
8. 本算法还可以检测出人体从较高的当地下跌。假如Free_Fall中止接连发作且之间的距离小于100m s,可以以为,人体处于接连的下跌状况。假如Free_Fall中止(失重)接连发作300ms,则阐明人体是从超越0.45m的高度下跌,体系会给出一个下跌的报警。
本算法已在ADuC7026微操控器中以C言语完成(见附录)。本文规划了一个试验计划对算法进行验证。试验对向前跌倒,向后跌倒,向左、右两边跌倒等不同跌倒姿态以及跌倒后是否有长时刻停止状况的状况别离进行了10次测验,表2中给出的是相关测验成果。
表2 测验成果
跌倒姿态 | 跌倒后 长时刻 停止 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
向前跌倒 | 否 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
是 | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | |
向后跌倒 | 否 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
是 | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | |
向左边跌倒 | 否 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
是 | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | |
向右侧跌倒 | 否 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
是 | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | ✓* | |
注: 符号 ✓ 表明检测到跌倒; 符号 * 表明检测到跌倒后长时刻停止. |
从这个试验中可以看出根据ADXL345的解决计划可以有用地对跌倒状况进行检测。当然,这儿仅仅一个简略的试验计划,仍需求进行愈加全面、有用和长时间的试验来验证该解决计划的可靠性。
定论
ADXL345是ADI公司的一款功用强大的加快度传感器产品。本文运用ADXL345内部的多种运动状况检测功用和灵敏的中止功用,提出一种新的跌倒检测解决计划。经验证,该解决计划具有算法杂乱度低,检测准确度高的长处。
参阅电路
1 ADXL345数据手册(www.analog.com,查找ADXL345)
2 ADuC7026数据手册(www.analog.com,查找ADuC7026)