cancel
Showing results for 
Search instead for 
Did you mean: 

About I3G4250D Gyroscopes

Ylin.11
Associate II

0693W00000D0LdVQAV.jpg0693W00000D0LhcQAF.jpg 

I have some basic questiones about the gyroscopes ic I3G4250D

  1. how to caculate the SO(sensitivity) and DVoff with current temperature T
  2. how to caculate the rotate speed with current temperature T
  3. how to caculate the temperature value by register OUT_TEMP raw data

Thanks very much For Answers

6 REPLIES 6
TBomb.1
Senior II

>> how to calculate the SO(sensitivity) and DVoff with current temperature T

Ideally, the DVoff should be 0 dps at T ambient, so

The values you find in the datasheet define only the range across which the Sensitivity and offset can vary versus temperature, also in a nonlinear way.

However in general, you have an approximately linear variation versus temperature, and typically the parameter are increasing with the temperature. You can use the below formula:

Sensitivity_T = Sensitivity_Tamb + Sensitivity_Tamb * SoDr * T_meas

DVoff_T = DVoff + DVoff * OffDr * T_Meas

>> how to calculate the rotate speed with current temperature T

same as above.

>> how to calculate the temperature value by register OUT_TEMP raw data

from datasheet should be --> Temp_°C = (Temp LSB * -1 LSB/°C) + 25°C

Tom

Ylin.11
Associate II

Thank you very much! however, if so , Sensitivity_80 = Sensivity_25 + Sensivity_25 * 2% * (80-25) = 8.75 + 8.75*2%*55 = 8.75 + 9.625 = 18.375?

No, it is only valid for small temperature, the sensitivity in all range will stay in +-2%, meaning [8.75*0.98 LSB/mg , 8.75*1.02 LSB/mg] = [8.575 , 8.925] LSB/mg.

and the slope of the variation is typically positive correlated with the temperature.

Tom

but when the minimum 7.4 or maximun 10.1

well it could be, unfortunately on the datasheet there are only typ values, not min or max

Loppi
Associate III

I have run into an issue with the convertion from lsb to celsius using the STMems standard driver.

The OUT_TEMP register of the I3G4250D is read by this instruction

int32_t i3g4250d_temperature_raw_get(stmdev_ctx_t *ctx, uint8_t *buff)
{
 int32_t ret;
 
 ret = i3g4250d_read_reg(ctx, I3G4250D_OUT_TEMP, buff, 1);
 
 return ret;
}

and converted to celsius by using this function

float_t i3g4250d_from_lsb_to_celsius(int16_t lsb)
{
 
 return ((float_t)lsb + 25.0f);
}

the sensor with an environmental temperature of around 22 degree celsius shows a 20 decimal as lsb and the function converts it to 45 degree celsius. Where's my issue with this? I am a bit confused since the datasheet shows a inverted lsb curve for a positive temperature change. From my perpective this function won't ever show the correct values.