Skip to main content
DStan.3
Visitor II
July 14, 2020
Question

We are using a LIS2DH12TR. In our application if we set to 2G we get a result of 400 4G = 200 8G = 100 but 16G goes to 33 and we expected 50 Are we missing something? We get same result over 20 devices Thanks Dan

  • July 14, 2020
  • 1 reply
  • 703 views

..

    This topic has been closed for replies.

    1 reply

    Eleon BORLINI
    ST Employee
    July 14, 2020

    Hi Dan, as reported in the conversion table of the datasheet p.10, please note that the conversion factor for the FS=16g case is not the double of the FS=8g one.

    0693W000001spagQAA.png

    Please consider also the ST official C drivers for the LIS2DH12 on Github, in particular the lis2dh12_reg.c file. Assuming you are running the device in Normal mode, these are the functions to be used to convert raw-data into engineering units:

    float lis2dh12_from_fs2_nm_to_mg(int16_t lsb)
    {
     return ( (float)lsb / 64.0f ) * 4.0f;
    }
     
    float lis2dh12_from_fs4_nm_to_mg(int16_t lsb)
    {
     return ( (float)lsb / 64.0f ) * 8.0f;
    }
     
    float lis2dh12_from_fs8_nm_to_mg(int16_t lsb)
    {
     return ( (float)lsb / 64.0f ) * 16.0f;
    }
     
    float lis2dh12_from_fs16_nm_to_mg(int16_t lsb)
    {
     return ( (float)lsb / 64.0f ) * 48.0f;
    }

    You can see that if you insert your raw data inside these expressions, you will always get 25mg.

    Regards