cancel
Showing results for 
Search instead for 
Did you mean: 

LIS3DH Resolution in LP Mode !!!

MGolm.1
Associate II

Hello Everyone. I'm using LIS3DH in Low power Mode and with ODR=5.3KHZ. In datasheet it's declared that the resolution of 8 bit data in LIS3DH when using +-16G Range, is 192mg/lsb. 8 bit data should be signed char with range -128...+127. So when i multiply 127*Res(0.192) i have to get 16 as 16G but i get 24.38G!!!

What is the problem? just a Typo or there is anything that i can not understand?

3 REPLIES 3
Eleon BORLINI
ST Employee

Hi @Community member​ , the +-16g FS case is slightly atypical with respect to the other FS values (for all the HP, NM, and LP modes). This means that the Full Scale is not effectively the dataout FFh value in two's complement, but it is related to the MEMS (the internal mechanical structure) limit. So if you are detecting a +16g event along X axis in LP mode, you will read 54h instead of 7Fh on the OUT_X_H (29h), but you will not able to detect accelerations higher than 16g, because the MEMS structure will saturate. Regards

MGolm.1
Associate II

Hi @Eleon BORLINI​ . But i'm wondering why such a vital information about your products are not included in datasheets and even in Application Note. Anyway, I have to say that i actually tested LIS3DH saturation level of acceleration and in practice it's near to +-24G not +-16G when i used 128mg/LSB instead of 192mg.And it seems just you scaled the +-24G to be a standard +16G scale. I compared the results with my own accelerometer in my Lab.

Hi @Community member​ , checking also the (official) github drivers for LIS3DH, the LSB->mg conversion is coherent with the datasheet conversion...

float lis3dh_from_fs16_lp_to_mg(int16_t lsb)
{
  return ( (float)lsb / 256.0f ) * 192.0f;
}

Btw, I understand your point, so I'll check internally with

Regards