Gyroscope ADXRS300 of Analog Devices

Hello all,

I’m working with the IMU 6DoF v2 of Sparkfun. It implies three Gyroscopes ADXRS300 of Analog Devices and three accelerometers. I have problems to calibrate the Gyros, because Sparkfun doesn’t post information how to calibrate them. The output of Gyro (all in ADC Values) is Rate Out, reference voltage 2.5V and temperature. The informations in the Data sheet of Analog Devices (http://www.analog.com/UploadedFiles/Data_Sheets/ADXRS300.pdf) for the ADXRS300 are all @25°C. I don’t have access to a calibration labour. The only way for me to get the offset and the scale factor is to use a record player and the room temperature at 25°C (isn’t constant but better than nothing).
My first way was to get the temperature, but the Gyro is heating itself. My first problem is now, what is the temperature of 25°C in the data sheet? Is it the room temperature or the temperature of the Gyro? If it is the second, how can I get the ADC value for the temperature of the Gyro?
My second step was to get the offset of rate out in a static position @25°C. The offset is about 512.6 ADC.
My third step was to get the scale factor with the record player @25°C. With the record player I have two different angular rates with 33 1/3 revolutions per minute = 200 °/s and 45 rpm = 270°/s. I use the equations
200 = scaleFactor*(rateOut-512.6) and
270 = scaleFactor*(rateOut-512.6).
My problem is the both scale factors are different with 0.9004 °/s per ADC and 0.9388 °/s per ADC. Is the problem the inaccurate record player or it is possible that the scale factor isn’t linear to the angular rate?
I use the reference voltage 2.5V output to correct the Rate out with the factor=512/reference.
But how can I use the temperature output? I found in the sparkfun forum (http://www.sparkfun.com/cgi-bin/phpbb/viewtopic.php?t=4273&postdays=0&postorder=asc&start=0) for the ADXRS150 the equations:
Offset(@T) = offset(@T0) + 0.0086*(T-T0)+0.03597*(T-T0)^2
Scale factor(@T) = scale factor(@T0) + 1.26056*(T-T0) + 0.6728*(T-T0)
with T ADC temperature and T0 ADC Temperature @25°C.
But I don’t know is this quadratic relationship with this temperature coefficients also valid for the ADXRS300?

If somebody also works with the ADXRS300 and have information for the calibration of them, please contact me. I’m really happy about every information or help.

Thanks
Rebekka

I worked with a lesser model of Analog Devices gyroscope. They aren’t bad, but BGAs are evil to hand-solder.

The 25 degrees C is a point of reference for the temperature output. The datasheet says that at 298K (which is 25C), the voltage output on the temperature sensor is 2.50 volts. Useful if you’re looking for ultra-precise measurement.

As for calibration, the gyro module itself has no calibration capabilities other than to offset the 2.5v reference voltage (I wouldn’t recommend that). If you’re getting discrepancies between the axes, then I’d say make sure the voltage on the reference line has no interference - put a large capacitor in parallel with ground, or put the device on an independent circuit. If all else fails, try to calculate an optimal scale factor for your circuit - iMEMs devices, as with all sensors, have slight differences inherent in manufacturing.

Good luck

Sparks

EDIT: Keep in mind that the scale factor for one gyroscope may not work for the others on that board. Also, looking at the datasheet shows you that the temperature has an effect on the output - about 8.4 mV/K - which could account for your discrepancy.

We used this gyro on our robot last year and it worked well for us. I have to say, though, that we didn’t use an overly elaborate implementation. We just purchased the Evaluation board model and used it as is. As far as calibration went, we found the baseline for the robot at rest (1 second) then used that as a offset. As you noted though, as the gyro changes temperature, the baseline can change. We tried to make sure the temperture was stablized before going into competition. We also added a bit of code to reset the baseline when the robot is at rest (as determined by the operator). There are more sophisticated ways of accomplishing this, though. None of us are engineers, so we went with simple and expeditious. Analog devices has other information that might help you to. Check this out:

http://www.analog.com/en/prodRes/0,2889,ADXRS300_871,00.html

and for the Eval board:

http://www.analog.com/UploadedFiles/Evaluation_Boards/Tools/272463157ADXRS300EB_0.pdf