We’re flying one of those neat degree of freedom IMUs (inertial measurement unit) from Sparkfun. It integrates a 3-axis accelerometer and a 2-axis gyro into a cute tiny package.
As is common for sensors, the manufacturer of these sensors only supplies a range of values for certain crucial sensor characteristics – after all, every single sensor differs slightly, and on top of everything, the accelerometer output is ratiometric to the supplyvoltage you drive the sensor with. The datasheet gives a range of values for a supply voltage of 3V, but we’re driving our IMU at 3.3 V.
This means that we need to characterize our sensors. There are all kinds of nifty things that come under the heading of “sensor characterization”, such as temperature testing, which serves to tell you how temperature influences the sensor output. But we need to get the basics first. If you’re curious, have a look at the accelerometer’s datasheet. In the section “Specification”, you’ll find a number of sensor characteristics listed. For now, the most important ones to us are the sensitivity and the 0g bias level. What we want to know is: What voltage does the sensor output if it’s experiencing exactly 1g, i.e. if it’s just sitting there in a neutral state, and by how much does the voltage change if it experiences a fixed and known amount of g force.
The way this is commonly done is this: Put each of the sensor’s axes perfectly parallel to the earth. It then experiences only earth’s gravity. Then tilt it by exactly 90 degrees, first in one direction, then in the other, making it perpendicular to the earth. Log the sensor’s output.
The X and Y axes span one plane, the Z axis opens a plane perpendicular to that one. This means that we can treat the X and Y axes in one experiment together. This gives us four orientations for the sensor that we need to log the outputs for: two in which the X and Y axes are parallel to the earth, in which case the Z axes is perpendicular to it, and two in which the Z axis is parallel to the earth, in which case X and Y are perpendicular.
So that’s what I did. I used our flight computer platform, the AT91SAM7S256 to log data to a serial USB device. The sensors outputs went into the SAM7’s ADC. The sensor was powered via what happened to be a datalogger over USB. This is a bit of a crude setup, but it was handy and ready to go when I needed it.
I then abused the optics table that someone else built for making holographs, an acrylic board to mount the sensor, an assortment of wood blocks to fix the acrylic board in one position and a level for adjustment. The optics table is a large box filled with sand that is resting on tires. When the tires are inflated, whatever is on the table is pretty safe from vibrations. Although, the reason why I chose the optics table for my data captures is more that a heap of sand is easier to work with when you’re trying to get a small board level.
Here are photos of the four different positions that I captured data for:
This is one of the two setups where the X and Y axes are parallel to the ground and the Z axes is perpendicular to it.
This is the other one of the two setups where the X and Y axes are parallel to the ground and the Z axes is perpendicular to it. It’s simply rotated by 180 degrees to the first one.
This is the first setup in which the Z axis is parallel to the ground and the X and Y axes are perpendicular.
This is the second setup in which the Z axis is parallel to the ground and the X and Y axes are perpendicular, rotated by 180 degrees against the first one.
I shall now have a look at the data I captured and extract the characteristics of our accelerometer we’re interested in. The captures should also tell me something about the gyros, but that’s the next step.
First, I shall need to get the sand out of my keyboard now.