View Full Version : gyro.h help
carlos_85
11-02-2009, 08:50
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)
#ifdef ADXRS300
#define GYRO_SENSITIVITY_DEG 2000L // in units of tenths of a degree/sec/volt
#define GYRO_SENSITIVITY_RAD 3490L // in units of milliradians/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.
Please help me!
Thank you
Alan Anderson
11-02-2009, 09:31
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?
carlos_85
11-02-2009, 10:15
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?
Alan Anderson
11-02-2009, 10:26
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?
carlos_85
11-02-2009, 10:58
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
Alan Anderson
11-02-2009, 11:37
i see that 2000 is the result to divide 1/0,0005 but i don't understand it.
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.
vBulletin® v3.6.4, Copyright ©2000-2017, Jelsoft Enterprises Ltd.