# Gyroscopes Output Voltage drift when not moving, trivial question

I don't have good experiences with gyroscopes and i would like to ask the question.

Do the Output Voltage of Gyroscopes, whether analog or digital, usually drift when it is static?

Ideally there is supposed to be no change. I'm programming an Arduino, to take a reading when it is not moving. I plan to use the on-board ADC that leaves me around 4mV error range, input: 0V-5V returns: 0-1023, to be able to determine if the gyroscope is static. Would the theory be correct or would it just generate errors?

-

It depends a lot on the gyro you are using. The zero rotation error value should be specified in the datasheet. If you ultimately want angle, then the time integral of that gives you the error bounds. Cheap MEMS gyros aren't much good for determining angle usually after just a few seconds.

If you are willing to pay 10s of 1000s of dollars, then you can get gyros good enough for inertial natigation of airplanes in between position fixes by other means. Those work on a totally different principle which inherently gives you angle, so angle drift is much much less. Still, even a slight drift or initialization error accumulates to a large distance over time. This is exactly the error that ultimately led to the Korean Airlines flight from Alaska to be shot down over Kamchatka in the 1980s. The gyro wasn't initialized correctly in Alaska. The error accumulated and by the time the plane got near Kamchatka it ended up flying over it instead of around it, and the Soviets shot it down thinking it was a US spy plane.

A bunch of years ago I worked on a small system that tracked head motion for sports training purposes. It used cheap MEMS gyros and accellerometers. Even with making the person stand still for a short time before the motion, the ultimate position and orientation we got was only good for a couple of seconds or so. Fortunately, that's all we needed in that case.

-

The best way to answer that question is to take a look in the datasheet for your chosen gyro. You didn't say which one you wanted to use, so let's take a look at a reasonably good one, the ITG-3200.

According to the datasheet:

The zero rate output can vary by as much as 40 degrees per second, and can vary by this much over its rated temperature range.

It seems like a lot, but it's only 2% of its full scale range of 2000 degrees per second. Furthermore, the device actually contains a temperature sensor. Using the sensor, you will be able to calibrate the device to account for the error due to temperature.

Put your device in the freezer over night. Take it out, and place it on a table, As the device warms up, take readings of the temperature and each of the axis, and build up a table which relates the temperatures to the axis readings. Store enough of those values in the Arduino code so that you can compensate for temperature in the future.

Also, 2000 degrees per second might well be much much higher than you want for your application. So my advice would be to choose the gyro which is rated for the lowest maximum rate that you wish to measure in your application. Then you will be able to know it's static to within about 2% of the full scale rate. But whichever device you choose, check the datasheet carefully first.

-
I see, but assuming that at a state where the temperature in the system reached at a constant value, by the way I'm using ADXRS800WBRGZ and '620BBGZA as my test samples. If i were to program the arduino in such a way that it compares two consecutive angle readings in a span of 1 second, their datasheet isn't as detailed as ITG-3200 regarding outputs, do you think the output would drift so much that it would not be able to tell if the Gyro is rotating or not? the program would only increment if the output is >= the threshold. PS. I really appreciate your responses BTW. :) –  Benj Apr 16 '12 at 5:36