-1
\$\begingroup\$

I'm trying to compensate a 3-axis MEMS accelerometer for temperature. I can access a climate chamber where the device can be rotated in ONE axis. There is another place where I can rotate two axis, but only at room temperature.

My goal is to measure the euler angles in the space. There are NO other accelerations disturbing the earth gravity field.

I wonder what the correct order is.

First temperature compensation, then calibration (I use a nonlinear optimization to estimate the cross axis sensitivity, scale factors and bias terms) or the other way round?

My attempt to compensate the temperature is to find a function that maps the raw values at given temperature to the raw values at a reference temperature.

The sensor cannot be turned in 2 axis in the climate chamber. To compensate all three axis in one attempt (the heating takes a lot of time...) I've got to tilt the sensor first about 45°, then rotate them with a motor, otherwise one axis would not deliver information (the axis I turn around). Due to misaligment errors etc it does matter, if I turn the device left or right round for sure. But that makes it impossible to find a bijective function.

So should I calibrate the sensor first at room temperature and then apply a temperature compensation? How?

Thank you very much for your ideas!

Jan

\$\endgroup\$
1
\$\begingroup\$

First and foremost, in order to get the mechanical slop out of the system I'd build a fixture which fit in the oven, was wired to the accelerometer with leads exiting the oven, and allowed me to manually position the accelerometer and make the 18 measurements required to get the values on all three of its axes, in six steps at, say, 20C.

I'd then warm up the oven to the next temp of interest, allow the accelerometer to soak for a while and make the first three readings. then I'd open the oven, quickly move the accelerometer to its next position, allow it to soak for a while, and make the next three readings.

Repeat four more times and you're done - at that temp, anyway.

If you needed more than just orthogonal data, you could design the fixture with the precise angles needed to allow the accelerometer to rest at any attitude you wanted and allow it to be positioned in the oven with minimum cooldown between measurements.

The result of all of this is that you'd have taken data at precisely the same attitude from temp to temp, and with the only variable being temp, everything else would wash out.

So, although this way it doesn't matter much, you might want to do the room temp cal first since it probably takes less time for the oven to stabilize up than down.

On the other hand, knowing there's no hysteresis in your equipment, if you want to see if there's any hysteresis in the accelerometer you might want to take data on the way up in temp and then again on the way down.

\$\endgroup\$
  • \$\begingroup\$ Thank you! So you would suggest to make a calibration matrix for each temperature. That could work of course, the problem will be the manual movement. This takes too much time and is inaccurate. As of today I'm using two very precise motors with encoders to estimate the scale factor matrix and bias terms at room temp. I get an error < 0.5°. Maybe there is a way to use the information at room temp to calibrate at other temperatures without precisely moving the device in the climate chamber. Best regards \$\endgroup\$ – Jan Dec 4 '14 at 12:48
  • \$\begingroup\$ The manual movement I was referring to would be implemented by mounting the accelerometer within a fixture which would amount to a faceted cube/sphere, each pair of parallel opposing facets describing a measurement plane. In use, the fixture would merely be clamped to a level surface within the oven, with the accelerometer's axes of interest each clamped normal to the level surface for every set of measurements made. \$\endgroup\$ – EM Fields Dec 4 '14 at 15:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.