Design Idea
Inertial-navigation system uses silicon sensors
Edited by Bill Travis
Tom Niemi, Rockwell Collins, Cedar Rapids, IA -- EDN, 9/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!















