# gyro.h help

I’m studying the gyro.h and i have a question. I’m working with ADXRS300.

In gyro.h -->

// Analog Devices’ ADXRS300 (sensitivity = 5.0mV/deg/sec)
#define GYRO_SENSITIVITY_DEG 2000L // in units of tenths of a degree/sec/volt
#endif

the value of GYRO_SENSITIVY_DEG 2000L, how do you calculate this value? i’m reading the datasheet from ADXRS300 and i haven’t found it anywhere.

Thank you

sensitivity = 5.0mV/deg/sec

There are ten tenths of a degree in each degree.
There are one thousand millivolts in each volt.

Does that help?

Sorry, i don’t understand it.

5 mV/ deg/sec

5 mV = 0,005 V
by other hand in gyro.c -->

int Get_Gyro_Rate(void)
{
// Return the calculated gyro rate to the caller.
return((int)((((long)gyro_rate * GYRO_SENSITIVITY * 5L) / ADC_RANGE)) * GYRO_CAL_FACTOR);
}

I think that 5L was the sensitivity, and then, ¿What is it?

The ADXRS300 sensitivity is 5 millivolts per degree/second.

The constant in the code is in tenth-degree/second per volt.

5 millivolts per degree/second is 0.005 volts per degree/second.

0.005 volts per degree/second is 0.0005 volts per tenth-degree/second.

0.0005 volts per tenth-degree/second is 2000 tenth-degree/second per volt.

Is that clear?

sorry again,
what do you do to change V per tenth-deg to V per seg?
i see that 2000 is the result to divide 1/0,0005 but i don’t understand it.

By other side,

int Get_Gyro_Rate(void)
{
// Return the calculated gyro rate to the caller.
return((int)((((long)gyro_rate * GYRO_SENSITIVITY * 5L) / ADC_RANGE)) * GYRO_CAL_FACTOR);
}

5L, what is this?
thank you

I don’t know what you don’t understand. You correctly see that to convert v/dd/s into dd/s/v, you take the multiplicative inverse. (Here, dd stands for decidegrees, a fancy name for tenths of a degree.)

5L, what is this?

It’s a C constant, with a value of 5 and a type of long integer. The L is used to keep the compiler from using a regular integer or even a char, which could result in an overflow of an intermediate result.