MEMS gyro: offset drift

Oct 23, 2007 39 Replies

Hello,



I have an O-Navi GyroPak 3: a small module based on the Analog Devices MEMS gyroscope (ADXR150).



When the angular rate is 0°/s the sensor output is about 2.5V. This value changes by temperature and it's different from one sensor and another.



My design use the gyroscope as feedback of a motor control system. The goal is to compensate external disturbances. For example if the target rotates due to external noise (e.g. wind or something else) the control system compensates this rotation using the motor.



I know my explanation isn't very clear... I hope you understand what I want to say :)



The system works fine, indeed!



The problem is the zero drift of the gyro: when it changes a bit the microcontroller thinks the target is moving and turns on the motor. But the target doesn't actually move. The zero offset does.



How to avoid this?



I'm thinking about a nasty idea: an high-pass filter with a cutoff frequency lower than 1/100 Hz... so I can catch up everything but the long-term drift.



What do you think? I guess these rate-gyro are used into RC heli: how does they works there?



Bye Marco / iw2nzm


Sounds like you are trying to use a rate gyro as an absolute gyro. Probably a good idea to read thru here:

formatting link

formatting link

There's no such thing as an "absolute" gyro -- all gyros have drift, it's just that better gyros have less drift.

"Rate" gyros are, however, the worst, with silicon MEMS gyros being some of the worst of those.

Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" gives you just what it says. See details at http://www.wescottdesign.com/actfes/actfes.html

[...]

[...]

Yes, the MEMS accuracy is limited by the zero drift. You can pick the=20 best parts from a pile and run those parts through the temperature=20 offset calibration. This can improve the accuracy by several times,=20 however nobody knows for how long this calibration will stay valid.=20 Also, the MEMS calibration is invalidated by a mechanical or thermal=20 stress.

So, the rotation with the constant speed will not be noticed at all.

e?

Perhaps they reset zero every time the heli is on the ground.

Vladimir Vassilevsky DSP and Mixed Signal Design Consultant

formatting link

You can't, entirely. The best you can do at the sensor level is to characterize the drift over temperature, and use that to continually correct your gyro rate -- then live with the rate you have left over.

That would work. If you could work a magnetic compass into your design that would work, too.

An RC heli can stand some rate drift -- it really just needs to be stabilized to the point where the pilot can handle it well.

AFAIK the gyros used in RC helicopters are much smaller and cheaper than the ADI part -- that's a $30 gyro, I'm sure the heli gyros use a cheaper sensor.

Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" gives you just what it says. See details at http://www.wescottdesign.com/actfes/actfes.html

Hi Tim,

so you think I should change the gyro? Might I try to give it a chance?

Marco / iw2nzm

Ok, I understand.

I'll give it a try.

I already have a magnetic compass into my design (a flux-gate). I use it to maintain the heading over the time. But the compass is slow and in some circumstances it couldn't work.

My system has two PID regulators: the inner one is the fastest and has the gyro on feedback. The outer one is slower and uses the compass. The output is a mix of both signals: in fact if the gyro's zero changes the whole system output will be affected.

In which manner do you would use the compass?

Bye Marco / iw2nzm

Ok.

Fortunately, the target rarely rotates at constant speed. It's a tradeoff, I know.

And how do they know the heli is on the ground? Better, how do they know the "ground" doesn't rotate? Imagine you are on a rotating platform: if they do such a reset the heli won't fly straight!

Marco / iw2nzm

er.

How about using matched gyros differentially?

[snip]

These guys are doing some RC helicopter autopilot work. Might be something useful:

formatting link

Joe Chisolm Marble Falls, TX

Here are some things I remember about that gyro:

You can characterize it pretty well over temperature with about 3 calibration points, using its own internal temp sensor. I used room temp, fridge, freezer when I was testing.

HOWEVER, from a cold powerup it experiences enough self-heating that the gradient across the chip (between the business end of the gyro and the temp sensor, I presume) is enough that your steady-state cal will not work well until the chip stabilizes thermally and the temp output is correct.

The 2.5V Vref pin is very high impedance. If you connect it to a typical ADC directly (for a software center reference) you'll inject so much noise the results will be worse.

Even given all that, you'll need some absolute input to keep the system zeroed. If that input is good enough that you can "mix" it in at a high rate, temperature compensation will be irrelevant.

Think about the latency of such a filter...

The gyro keeps the heli pointed on the scale of seconds, the human pilot keeps it pointed on the scale of 10s of seconds to infinity...

Ben Jackson AD7GD http://www.ben.com/

And gyros for rate applications have mechanical features that optimize them to that task. All gyros have drift, but rate gyros are likely to have more drift.

can you use two and turn one or the other over every so often so its drift is in the oposite direction and use that to cancel it out ?

a bit like the way a chopper stabilised op amp cancels its own input offset.

Colin =^.^=

Sounds like your control system is all to pot. You need a Kalman filter and state feedback as any 12 year old nowadays will tell you!

Hardy

The fact is I don't have 12 years old, indeed. That's the problem :)

Marco / iw2nzm

Thanks, I'm reading through.

Marco / iw2nzm

[snip]

That's correct.

So I'm gonna characterize some gyros over temperature and see what happens.

Another problem is I can't do another calibration before one or more years...

What's about the long-term drift (excluding temperature of course) ?

I may stick a resistor on the chip to maintain it at (about) constant temperature. Perhaps I don't need the temp calibration at all.

Marco / iw2nzm

I guess it will work if both have the same drift over temperature and the same long-term drift. It's interesting.

Thanks Marco / iw2nzm

see also

formatting link

"Marco Trapanese" a écrit dans le message de news: FWATi.150259$% snipped-for-privacy@twister2.libero.it...

you can do that, it can be used to good effect in crystal oscillators, its best to use temp feedback control, I think you mentioned it had a temperature output, you can use a mosfet instead of the resistor to heat the device driven by a op amp with current control to keep the temp at a set level.

you need to make sure the control temp is always going to be above what it would otherwise be without heating.

Colin =^.^=

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required