2018-01-02 06:59 AM
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 conditionINT1_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
Solved! Go to Solution.
2018-04-27 05:07 AM
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
2018-05-03 02:48 AM
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.
2019-04-11 02:36 AM
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
2019-04-12 02:08 AM
Hello,
can I have the name of the software for the observation that you use please?
2019-04-12 02:41 AM
Hi,
The software is UNICO from ST. This is a usefull software for test the ST devise as MEMS sensor.
regards