AnsweredAssumed Answered

How to implement sensitive motion detection which is independent of orientation?

Question asked by Peter Kämpf on Apr 20, 2015
Latest reply on Apr 20, 2015 by Peter Kämpf



I am using the MMA8653FC accel to detect motion of a handheld device. The idea is to implement a timer on the microcontroller and have motion interrupts reset it. If the timer runs over, the device switches itself off to conserve battery power.


If I understand the documentation correctly, one sets a threshold (FF_MT_THS register, which has a resolution of 0.063 g) and the device compares the readings in the X-, Y- and Z-axis independently to trigger the motion interrupt. To make sure that gravity alone doesn't keep the device awake, the threshold needs to be comfortably above 1.0 g (18 or 19 counts at least).


If my device is held at an oblique angle, each direction will register 0.7 g or less. To exceed my threshold value (19 counts) would mean to add 0.5 g of motion acceleration, which is already quite a bit. Now I wonder how sensitivity could be improved. The obvious way of comparing the vector sum of all three axes, however, seems not to be implemented.


Please confirm that my understanding is correct. If it isn't, this could save me from computing the vector sum and doing the comparison on my microcontroller. As it seems to be implemented, the current motion detection is too coarse and would not pick up slight motion. The last thing I want is my device to switch off while being used, so I need this sensitivity.