基于MMA8452Q传感器的计步器抗干扰设计
综合考虑计步器对加速度传感器精度的要求和传感器的价格,选择了飞思卡尔一款比较新的
MMA8452Q加速度传感器。这是一款具有12位分辨率的智能低功耗、三轴、电容式微机械加速度传感器,其主要特性如下:
采集的加速度数据可以通过传感器内部的高通滤波器实时输出,滤波器的截止频率可以软件设置。也可以不经过滤波器直接数据输出。输出信号已被转换为12位(或8位)数字量信号,经I2C接口输出,输出数据速率在1.25Hz到800Hz之间可调。
传感器内嵌的DSP处理功能使芯片具有中断能力,当设定的“自由下落和运动检测”“瞬态变化检测”“方向检测”“轻敲检测”“数据准备好”“自动休眠”等6种事件中任意一种发生时,配置的中断引脚(INT1或INT2)就可以产生硬件唤醒的中断申请信号,通知控制器处理预定的事件。这样既减轻了控制器不断查询处理数据的负担,也可以节省整体功耗,使其大部分时间处于静止状态保持低功耗模式,同时完成监测任务。
在满足计步器功能的前提下,本设计选择价格低廉的AT89S2051单片机作为控制器,主要使用其外部事件中断、定时器中断、并行口等硬件资源。显示屏选择了8位LCD显示器,用于计步信息的实时显示,与主机采用串行方式传递数据。按键主要用于自标定设置。
人在行走时的垂直加速度信号虽然具有一定的周期性,但由于传感器灵敏度较高,原地晃动等都会产生于扰噪声,直接计步容易出错。需对信号进行处理,尽可能消除噪声影响。通常情况下,人的步频最快不会超过5步/秒,最慢为0.5步/秒。因此,可以认为原始信号中频率为0.5~5Hz的信号为有用信号,其他信号均为噪声。我们设计的计步器从下述方面消除干扰信号。
MMA8452Q是数字式传感器,对检测信号的模拟滤波在芯片内部进行,然后转换为数字量后输出。对于“敲击”“轻弹”“摇动”“计步”等信号的检测过程中,加速度传感器只需要分析动态加速度信号,即加速度的变化情况,无需考虑静态情况,因此可以对数据做高通滤波。在传感器MMA8452Q内部有一个内嵌的高通滤波器,可以通过软件设定低频截止频率。根据选择的数据输出速率和数据过采样模式,低频截止频率可以在0.063~16Hz之间选择。数据通过该滤波器输出,从而消除信号中直流偏置及低频信号的影响。我们设计的计步器截止频率设置在0.5Hz。
该传感器在静止时显示一个g(重力加速度),当人体运动时,运动加速度与重力加速度叠加。传感器可以输出12位二进制加速度值,该数值是有符号数,正数的最大值为7FFH。本计步器量程选择的是2g,传感器静止时感受重力加速度为g,所以显示数值为3FFH。通过实验获取了大量的数据,分析每迈一步加速度的变化情况。选取加速度值大于g的数据为研究对象,将它们显示的数据转化为十进制数。3FF对应的十进制数是1023,对应的加速度为g。从而得出1个LSB所对应的加速度值为0.00098g。我们试验程序采集的数据如表1所示,数据表明每走一步,可以收到2~3组数据,其中至少有一组超过1.1g,表中带下划线的数据为超过1.1g的加速度值。
利用传感器自身的滤波和阈值中断的方法,能够减少频率较低、幅度较小的干扰,但是仍然会有误计数的可能,特别是多计数。需要采取软件抗干扰滤波方法,进一步滤除无用信号。根据图2所示垂直加速度的信号波形,两次峰值是有时间间隔的,根据资料显示,人行走的频率一般在110步/分钟,跑步时的频率不会超过5Hz。如果选择1~5Hz,对应的时间间隔是1000~200毫秒。利用定时中断记录两次外部中断时间间隔,如果在有效范围内,则为有效计步一次,否则无效。
计步器的主程序流程所示。开始工作后首先进行初始化、显示初始界面,然后等待按键信号。如果按下“直接计步键”,则使能外部事件中断,等待外部中断的到来。当MMA8452Q加速度传感器检测到外界加速度大于所设阈值,将会产生中断信号,单片机进入中断程序后,读取传感器的加速度数据,并读取自上一次外部中断后的时间间隔,如果时间间隔在有效区间内,则本次数据有效,计步数据加1,并将计时单元清零,为下一次中断做准备。