cancel
Showing results for 
Search instead for 
Did you mean: 

lsm6ds3 temperature compensation

tpham.1
Associate II

Dear ST,

As I tested with, the LSM6DS drifted follow temperature. As you can image bellow, red line is temperature and green is degree (was calculated from X, Y, Z )

0693W000000WIcWQAW.png

I'd like to confirm LSM6DS had internal temperature compensation? If NO, how to do it? Or any chip was integrated build-in this feature?

thanks and regards,

Tuyen

8 REPLIES 8
Eleon BORLINI
ST Employee

Hi Tuyen, the internal temperature sensor is calibrated at production tester level, while the ZRL and ZGL temperature variation gain is declared in the datasheet p.21. I suggest you to compensate via SW (real-time or in post-processing) the output data with the declared average temperature variation, positive for increasing temperature from 25°C, and negative for decreasing temperature.

0693W000000WPRpQAO.png

Regards

tpham.1
Associate II

Thanks Eleon BORLINI for response,

I had a concern that all chip LSM6DS impact by temperature are same as +/-0.5mg/1 degree?

We also found that, It is small effect when we put horizontal and big effect when put vertical. Any different impact through 3 axis X, Y, Z?

regards,

Tuyen

Hi Tuyen, +/-0.5mg/1 degree is the typical value, although max and min values are not declared, mostly because they depend on the application environment, the soldering process (e.g. offset introduction due to an unwanted bending), the process spread. In the case you are finding outliers, a post-processing / average compensation is suggested... The impact on the 3 axis is similar for each other, although Z can be slightly asymmetrical with respect to X and Y axis, for mechanichal design reasons. Regards

Thanks Eleon,

I'd like to temperature compensation +/-0.5mg/deg for LSM6DS. As i understand from your source

float_t lsm6dsm_from_fs2g_to_mg(int16_t lsb) {

return ((float_t)lsb * 0.061f);

}

We need add to X, Y, Z raw data value (0.5/1000)*16.394*(temperature- 25) right?

let example X = 100, Y = 200, Z = 300 at 50 deg then

X = X + (0.5/1000)*16.394*(50- 25) = 100 + 204 = 304

Y = Y + (0.5/1000)*16.394*(50- 25) = 200 + 204 = 404

Z = Z + (0.5/1000)*16.394*(50- 25) = 300 + 204 = 504

Am i correct?

thanks and regards,

Tuyen

Hi Tuyen, it is a linear compensation and I suggest you to compensate the value once you have changed the raw data from LSB to mg

  • X_comp = X + (T-25)*LA_OffDr --> in your equation you should multiply also X_comp and X by the axl sensitivity 16.394 LSB/mg

Regards

Hi Eleon,

Please correct me if i am wrong. I see in datasheet LA_OffDr = +/-0.1mg/C. That mean I need

X_comp = X + (T-25)*LA_OffDr = X + (T-25)*0.1*16.394

Is it right?

thanks

Hi Tuyen, for the LSM6DS3 the LA_OffDr = 0.5mg/C... but yes, you are right:

  • X_comp_LSB = X_LSB + (T-25)*LA_OffDr*16.394 LSB/mg
  • X_comp_mg = X_mg + (T-25)*LA_OffDr

Regards

Thanks Eleon,

I double checked my part is LSM6DSMTR so i need try compensate +/-0.1mg

regards,

Tuyen