已回答假定已回答

ADXL362自由落体检测异常,结果与阈值设定不符

ALEX_SCQ 在 2017-11-17 詢問的問題
最後回覆由neilzhao於2017-11-21提供

我在用ADXL362 做自由落体检测来触发ADXL372的测量流程;

用ADI的网站上的代码资源写了驱动,ID读写、测量模式开关、温度读写、XYZ轴值的读写、静止运动链接检测模式均没有问题且结果基本准确;

但自由落体检测功能一直难以实现。设置阈值远小于1g时仍然能触发。

按照datasheet上建议的步骤为:

     1. 写入0x96(150个代码)到寄存器0x23:将自由落体阈值设置为600 mg。

     2. 写入0x03到寄存器0x25:将自由落体时间设置为30 ms。

     3. 写入0x0C到寄存器0x27:使能绝对静止检测。

     4. 写入0x20到寄存器0x2A,以将静止中断映射到INT1。

     5. 写入0x83到寄存器0x2C:配置加速度计为±8 g范围和100 HzODR(输出数据速率)。

     6. 写入0x02到寄存器0x2D以开始测量。

 

写入后,传感器平放时,从status寄存器(0x0B)上读值就一直为0x61;无法实现低于阈值则判断为自由落体功能;

我之后尝试把 量程改为 2g,阈值设为 10(即0.01g),触发时间改为10,100ODR(即100ms);依然读出来0x61的值;

然后使用静止运动检测里面的代码调整了阈值,仍然误触发;

附上按照datasheet设置触发后读出的各寄存器值:(DEC)

ADXL362_REG_THRESH_INACT_H: 0

ADXL362_REG_THRESH_INACT_L: 150

ADXL362_REG_THRESH_ACT_H: 0

ADXL362_REG_THRESH_ACT_L: 0

ADXL362_REG_TIME_INACT_L: 3

ADXL362_REG_ACT_INACT_CTL: 12

ADXL362_REG_FILTER_CTL: 131

ADXL362_REG_POWER_CTL: 2

ADXL362_REG_STATUS: 97

 

 

请教一下各位这种情况该怎么继续排查?有没有其他可以实现自由落体检测的代码我可以拿来验证一下的?

結果