Inertial-navigation system uses silicon sensors
Edited by Bill Travis
Tom Niemi, Rockwell Collins, Cedar Rapids, IA -- EDN, September 16, 2004
A strap-down inertial-navigation system uses silicon sensors to measure displacement without entailing the bulk and expense of moving parts or GPS receivers. For example, a three-axis accelerometer and three angular-rate sensors can determine the position and velocity of a vehicle such as a robot or radio-controlled aircraft. This hardware configuration requires that you read and integrate the sensor outputs and then combine and process them to obtain stabilized location values. Figure 1 shows one such complete system. An inexpensive 8-bit microcontroller can handle the sensor reading and integration tasks, and perform simple lowpass filtering of the accelerometer's output to remove conversion noise. The microcontroller can even run a basic position and velocity algorithm; alternatively, you can pass the preprocessed data to a DSP system. The NEC (www.necelam.com) µPD78F9418A microcontroller has seven ADC inputs, so it can handle the six inputs from the sensors.
Because a Crossbow (www.xbow.com) CXL04M3 accelerometer delivers 0.5V/g (9.8m/sec2), it can directly feed three of the microcontroller's ADC inputs. Each NEC/Tokin CG-16D angular-rate sensor generates only 1.1 mV/°/sec, so it requires the aid of an instrumentation amplifier. The Burr-Brown (www.ti.com) INA118 fills the bill. The microcontroller has enough I/O lines to drive three Varitronix (www.varitronix.com) VIM-503 41/2-digit LCDs that display the x, y, and z location relative to the starting point. One of the fundamental tasks in this application is to initialize the sensors and A/D converters to minimize bias error. Listing 1 shows the code to calibrate the accelerometer. The routine calculates the average value of the accelerometer's outputs over 1000 samples and uses this information to calculate bias-error adjustments for each axis. You apply each bias value by adding it to the readings for that axis. Using the x axis as an example, you determine the vehicle's movement from its starting point by integrating: Multiply the x-axis reading by the time squared, halve that quantity, and then add the result and the bias value to the previous x position. You find velocity by multiplying the bias-corrected x-axis reading by the time and then adding it to the previous x velocity. Click here for a zip file containing Listing 1 and associated source codes.
Check out our Best of Design Ideas section!
-
I'd like to see the code that results in distance measurements and know the accuracy you really get. It seems to me that the sensor noise becomes a rather large error when double integrated over any significant amount of time (say, 30 seconds). That is, you'll be multilplying the noise times the square of time. Can anyone comment on this?
Dennis E. Coburn - 2004-4-10 08:12:00 PDT -
A very informative and excellent design idea that uses simple technique to implement a complex concept.
Mobeen Riyaz - 2004-28-9 20:13:00 PDT


















