
a. 步行上楼 b. 步行下楼
c. 坐下 d. 起立
图3 不同运动过程中的加速度变化曲线
由于老年人的运动相对比较慢,所以在普通的步行过程中,加速度变化不会很大。最明显的加速度变化就是在坐下动作中Y轴加速度(和加速度矢量和)上有一个超过3g的尖峰,这个尖峰是由于身体与椅子接触而产生的。
而跌倒过程中的加速度变化则完全不同。图4给出的是意外跌倒过程中的加速度变化曲线。通过图4和图3的比较,可以发现跌倒过程中的加速度变化有4个主要特征,这可以作为跌倒检测的准则。这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.7g)。
这四个判断依据综合在一起,构成了整个的跌倒检测算法,可以对跌倒状态给出报警。当然,还要注意各个中断之间的时间间隔要在合理的范围之内。比如,除非是从很高的楼顶掉下来,否则Free_Fall中断(失重)和Activity中断(撞击)之间的时间间隔不会很长。同样,通常情况下, Activity中断(撞击)和Inactivity中断(静止)之间的时间间隔也不会很长。本文接下来会通过一个具体实例给出一组合理的取值。当然,相关中断的检测门限以及时间参数也可以根据需要而灵活设置。
另外,如果跌倒造成了严重的后果,比如,导致了人的昏迷。那么人体会在更常的一段时间内都保持静止。这个状态仍然可以通过Inactivity中断来检测。也就是说,如果发现在跌倒之后的很长时间内都保持Inactivity状态,可以再次给出一个严重报警。
典型电路连接
ADXL345和微控制器之间的电路连接非常简单。本文中的测试平台由ADXL345和微控制器ADuC70262组成。图5给出了ADXL345和ADuC70262之间的典型电路连接。ADXL345的\CS管脚接高电平,表示ADXL345工作在I2C模式。SDA和SCL是I2C总线的数据线和时钟线,分别连接到ADuC7026相应的I2C总线管脚。ADuC7026的一个GPIO管脚连接到ADXL345的ALT管脚,用来选择ADXL345的I2C地址。ADXL345的INT1管脚连接到ADuC7026的IRQ输入用来产生中断信号。
其他的单片机或者处理器都可以采用与图5类似的电路与ADXL345进行连接。ADXL345还可以工作在SPI模式以获得更高的数据传输速率。关于SPI工作模式的具体描述,请参考ADXL345数据手册。
图5 ADXL345与微控制器之间的典型电路连接
表1 ADXL345寄存器功能说明
利用ADXL345简化跌倒检测算法
本节将给出以上解决方案的具体算法实现。表1中简要说明了每个寄存器的作用以及在本算法中的设置值。对于各个寄存中每一位的具体含义,请参考ADXL345的数据手册。
需要指出的是,表1给出的设置值中,某些寄存器会给出两个数值,这说明在算法中会切换使用这两个数值,来达到不同的检测目的。算法的流程图如图6所示。
图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工作模式。
,三轴加速度传感器在跌倒检测中的应用