cancel
Showing results for 
Search instead for 
Did you mean: 

Movement detection with LIS2DH

wilfried walezack
Associate III
Posted on January 02, 2018 at 15:59

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

24 REPLIES 24
wilfried walezack
Associate III
Posted on April 27, 2018 at 14:07

Hi Miroslav,

I have an mis understanding about the resolution of the INT1_THS register acoording the selected scale.

This register is 7 bit value , so:

for FS= 2g  1LSB = 2/127 = 16mg  OK with the datasheet

FS= 4g  1LSB = 4/127 = 32mg  OK with the datasheet

FS= 8g  1LSB = 8/127 = 62mg  OK with the datasheet

FS= 16g  1LSB = 16/127 = 125mg  KO with the datasheet, according the datasheet 1 LSB = 186mg 

and if I put the 0x01 int the INT1_THS with my bread board and unico I have 192mg

What's the correct value?

Other question:

I'm using high resolution mode with 10Hz for ODR and FS 16G. so the resolution is 12bits. 

In the specification, the sensitivity for this setting is 12 mg/digit. but this not match with 12bits ...

What's the Fifo resolution in this case?

Best regards

wilfried

0690X0000060Ao0QAE.png
Posted on May 03, 2018 at 09:48

The correct value of 1LSB threshold fro FS = 16G is 186mg. The sensor has different sensitivity in case of 16g range.

FIFO stores only 10 bit values.

Hello,

I am currently working on a LISD2H accelerometer to capture the vibrations that last 3 minutes minimum and I need your help if there is someone who has already worked on this subject.

thank you in advance

Hello,

can I have the name of the software for the observation that you use please?

wilfried walezack
Associate III

Hi,

The software is UNICO from ST. This is a usefull software for test the ST devise as MEMS sensor.

regards