Problem with motion detection using ADXL362

Hello everyone,

I am currently using the Nordic-Thingy-91 to test the nRF9160 and other components on the board.
Now I am trying to implement a simple motion detection with the low power accelerometer ADXL362.
The goal is a simple state information, if the board is moving or not.

The strange thing is, it works in all cases, except when the board lies flat (= -1g on Z axis).
In all other maximal positions (1g on X, -1g on X, 1g on Y, -1g on Y, 1g on Z) it detects the lack of motion correctly.
In the case of -1g on Z it does not detect inactivity.

I have implemented the motion detection according to the ADXL362 datasheet. Here is my configuration:

  • Range: +-2g
  • Absolute activity/inactivity detection in Loop-Mode
  • Active threshold set to 1200
  • Inactive threshold set to 1100
  • Inactive time set to 24 (~4sec)
  • ADXL362 operating in Wakeup mode
  • Mapped AWAKE bit to INT1, which I monitor with the controller

I have read back all the registers to make sure the values are written correctly and they are.

I have also tried "Referenced" activity/inactivity detection as it is described in the datasheet (Application examples, page 36),
but I could not make it work. It just didn't detect inactivity.

As I said before, it works nicely in all cases, except when Z = -1g, then it doesn't detect inactivity.

Has anyone encountered this problem before?
Or has anyone implemented a stable and working motion detection and could share their configuration?

ADXL362 Silicon revision id: 3

Thank you!

Parents
  • 0
    •  Analog Employees 
    on Apr 11, 2021 9:55 PM

    Hi WaSt

    It is only showing at -z axis, and this is the gravity direction.

    I just think if this keeps your sensor always awake.

    Do you see any difference if you make INACT threshold 600 or 2000?

  • I have set the INACT threshold to:

    • 600: Never detects inactivity --> OK
    • 2000: Detects inactivity when not moving --> OK
    • 1200: Detects inactivity when not moving --> OK
    • 1100: Does not detect inactivity if not moving with -1g on Z --> Not ok

    With a measurement range of 2g the static acceleration should or can not be above 1024, right?
    That is why I find it strange that it does not detect inactivity in that special case (-1g on Z) with a threshold of 1100.

  • +1
    •  Analog Employees 
    on Apr 12, 2021 1:33 PM in reply to WaSt

    Thanks for tests. I guess there is a kind of offset, thus you stay above 1100mg (at least from time to time, but shorter than INACT timer range). This is maybe why even 1200mg helps detection of inactivity correctly, but not 1100mg. So somewhere in between is your absolute threshold. 

    Can you make readings what is -z output value?
    Does it hit above 1100mg every 4sec or less?

  • Yes it does. It sometimes hits values between 1100mg and 1200mg. That's why I didn't detect inactivity when Z = -1g. It is strange, that this is only happens in that position, but now I know it and I can take that into account.

    Thank you for your help and time.

Reply Children
No Data