AnsweredAssumed Answered

Movement detection with LIS2DH

Question asked by wilfried walezack on Jan 2, 2018
Latest reply on May 3, 2018 by Miroslav B

HI everybody,

 

I'm working with the LIS2DH for a motion sensor, and I'm using the embbeded functions of motion detection for drive the state machine of my MCU.

 

The operation is simple, but I have some trouble with the sensor.

I want to detect a movement if the duration is min 5sec, and I want to detect End of movement if the duration is 5sec.  

So I use the IA1 funtion with INT1 output for detection movement.

And IA2 function with INT2 output for End of movement detection.

 

Both INT output are OK with the detection, but I have non stable operation. Sometimes the INT1 toggles witout reason, sometime it's INT2.....

 

So if you run with the sensor in your hand, the INT1 output is high after 5sec. And if you put the sensor on the floor, the INT2 output is high after 5sec.

 

Sample is 1Hz ,Range is 2G.

High filter is set.

INT1_CFG is set to High level detection on X, Y , Z.  OR condition

INT2_CFG is set to Low level detection on X, Y , Z.  OR condition

INT1_duration & INT2_duration are set to 0x05 in order to have 5sec of time detection.

INT1_threshold & INT2_threshold are set to 0x02, in order to have high sensivity.

 

Below the setting of the LIS2DH:

status_t LIS2DH_Init(void)
{
SPI1_Initialize();
CS_LIS1_SetHigh();
CS_LIS2_SetHigh();
LIS2DH_WriteReg(LIS2DH1,LIS3DH_CTRL_REG1,0x1F);
LIS2DH_WriteReg(LIS2DH1,LIS3DH_CTRL_REG2,0x03);
LIS2DH_WriteReg(LIS2DH1,LIS3DH_CTRL_REG3,0x40);
LIS2DH_WriteReg(LIS2DH1,LIS3DH_CTRL_REG4,0x80);
LIS2DH_WriteReg(LIS2DH1,LIS3DH_CTRL_REG5,0x00);
LIS2DH_WriteReg(LIS2DH1,LIS3DH_CTRL_REG6,0x20);
//START detection
LIS2DH_WriteReg(LIS2DH1,LIS3DH_INT1_CFG,0x02);
LIS2DH_WriteReg(LIS2DH1,LIS3DH_INT1_THS,0x02);
LIS2DH_WriteReg(LIS2DH1,LIS3DH_INT1_DURATION,0x05);
//STOP detection
LIS2DH_WriteReg(LIS2DH1,LIS3DH_INT2_CFG,0x15);
LIS2DH_WriteReg(LIS2DH1,LIS3DH_INT2_THS,0x02);
LIS2DH_WriteReg(LIS2DH1,LIS3DH_INT2_DURATION,0x05);
return MEMS_SUCCESS;
}

 

Could you please help to understant and solve this problème?

 

Thanks a lot for your support.

wilfried

Outcomes