world leader in high performance signal processing
This version (18 Feb 2014 16:08) was approved by NevadaMark.The Previously approved version (26 Jan 2014 20:47) is available.Diff



The ADIS16445 and ADIS16448 are low-profile, high-peformance IMUs that use a serial peripheral interface (SPI) for data communications. This interface enables direct connection with a large variety of embedded processor products. This electrical connection typically only requires 5 I/O lines for sychronous data collection, as show in the following figure:


For those who are on a tight timeline, connecting the ADIS16445 or ADIS16448 to an embedded controller will provide the most flexibility in developing application firmware and will more closely reflect the final system design. The ADIS16448/PCBZ is the breakout board for the ADIS16448 and may provide assistance in the process of hooking it up to an existing embedded processor system. The ADIS16445 has not be released yet, but it will also provide a similar function, using the part number: ADIS16445/PCBZ. For more information on the ADIS16448/PCBZ breakout boards, check out the following link: ADIS16448/PCB Breakout Board Web Page.


For those who would prefer to perform PC-based evaluation of the ADIS16445 or ADIS16448, before developing their own embedded system, the EVAL-ADIS is the appropriate system to use. The remainder of this Wiki site will focus on PC-based evaluation with the EVAL-ADIS system.



ADIS16448/PCBZ or ADIS16445/PCBZ


Windows XP, Vista, 7

.NET Framework 3.5

NOTE: Newer versions of the .NET framework do not currnently support the IMU Evaluation software pacakge.


The ADIS16448/PCBZ includes one interface PCB, one flexible cable/connector and one ADIS16448AMLZ unit. The ADIS16445/PCBZ includes one interface PCB, one flexible cable/connector and one ADIS16445AMLZ unit. All setup instructions in this section apply to both ADIS16445 and ADIS16448 products. Note that the ADIS16445AMLZ does not have the 10-32/Tapped hole in its side wall. This will be the only observable difference in comparision with the ADIS16448AMLZ, which is the product that most of the pictures in this section represents. Use the flexible cable/connector to install the ADIS16448 onto the EVAL-ADIS, using the following five steps. Set interface PCB aside, as it is not used for connecting the ADIS16448AMLZ to the EVAL-ADIS.

NOTE: Do not plug the EVAL-ADIS into the USB cable at this stage of the setup. Wait until the software installation is complete.

NOTE: The machine screws that come with the EVAL-ADIS can have a moderate impact on local magnetic fields. For those who need the best performance out of the magnetometer solution, consider replacing them with machine screws that are made out of aluminum or other non-ferrous materials.

NOTE: The following steps represent the most convenient means of attachment, but do not support the “best practices” that are listed in this application note:

ADIS1644x Mounting Guidelines.

Step #1

Install the flexible cable onto the ADIS16448AMLZ. The following pictures provide a visual refernece for correct connection.


WARNING: Make sure that the connector is in proper alignment before pressing it in. Misalignment can cause pin damage and exposure to harmful conditions. The following pictures provide visual examples of INCORRECT PIN ALIGNMENT. The most common alignment issues will cause the top view to look different than the third picture, shown directly above this paragraph.


Step #2

Connect the other end of the flexible cable to the EVAL-ADIS, using J4, pins 1-20. J4 has 24 pins, so make sure that the flexible cable connects only to pins 1-20 on J4.

Step #3

Slide the ADIS16448AMLZ body towards J4, while tucking the excess flexing under the connector interface, as show in the following pictures.

Step #4

Secure the ADIS16448AMLZ body, using (4) M2x0.4x10mm machine screws (included with EVAL-ADIS) and the “E” mounting holes (EVAL-ADIS labels for mounting holes).

Step #5

Set JP1 (EVAL-ADIS) to ”+3.3V.”


IMU Evaluation Software installation only requires two simple steps:

1. Download, unzip and install the EVAL-ADIS USB Driver (click here to see the download link)

2. Download, unzip and copy the IMU_Evaluation*.exe file to the desired location on the test PC (click here to see the download link)

USB Driver Installation

After downloading the EVAL-ADIS USB Driver file, extract the SDPDrivers.exe file from the zip file, into a convenient location and then double click on it to start the process.

When the setup wizard opens, click on Next to start the installation process

Click on Next to accept the default driver location.

The process will involve at least two progress bars that look like the following:

If you encounter this type of message during the process, click on Install to continue with the installation.

Once the installation has completed, click on Finish to complete the process.


After the USB driver installation is complete, connect the EVAL-ADIS USB connector to the PC, using the USB Mini cable, from the EVAL-ADIS kit. LED2 (below left) will illuminate as soon as this connection is made. This indicates that the EVAL-ADIS has power and is going through its start-up/initialization process. After the EVAL-ADIS completes this process, LED1 (below right) will illuminate, indicating that it is time to launch the IMU Evaluation application. During the initialization process, several messages may appear on the screen. They are related to updating the EVAL-ADIS firmware and establishing communication between the PC and the EVAL-ADIS. Once LED1 lights up, double click on the IMU_Evaluation.exe file to launch the application.

Main Window

Once the IMU Evaluation software starts-up, the Main Window will appear and look like the following picture. The second picture provides color-coded boxes to support further discussion of each function in this screen.

The orange box identifies the drop-down menus, which provide a number of useful features. The Devices option provides a list of products. For evaluation of any ADIS1648x product, click on Devices and then select the part number (ADIS16488, for example). The green box shows the current device selection, which in this case, identifies the ADIS16448 as the current selection.

The Register Access option provides a listing of user-configurable registers available from the part number selected in the “Devices” drop down menu. It also provides read/write access to each one of these registers.

The Data Capture option provides the core data collection function.

The Demos option only supports a 3-D rendering tool on the ADIS16480.

The Tools option provides some diagnostic tools for the USB interface.

The About option provides more detail software revision information.

The purple box identifies the output registers, which update, real-time, after pressing the Read button (see the red box for the location of the Read button).

The yellow box identifies the three waveform recorder windows. The top window contains the three gyroscope outputs. The middle window contains the three accelerometer responses. The bottom window contains the three magnetometer responses. Also, each waveform matches the color of its register (see register titles in the purple box).

Register Access

The purpose of the Register Access window is to provide both read and write access to the user registers in the ADIS1648x products. The following picture shows the appearance of this window.

The color coded boxes illustrate the different functions that this window provides.

The purple box identifies the register category. In addition to the Control/Status, this drop-down control offers access to Output and Calibration registers.

The red box identifies all of the registers that are in the current category. Click on the register name to select a register for individual read/write access.

The green box identifies the read/write control options for the current register selection. Use the hexadecimal format when writing commands to a particular register.

The Update Registers in Category button (orange box) triggers a read and display update of all registers in the current category (red box).

The yellow box identifies the area that provides single-bit command buttons, such as the ones provided by the GLOB_CMD register.

The Save Reg Settings to File command saves all of the registers in the current category into a *.csv (common-delimited) file. The Load Reg Settings from File button reads those settings back into the software package and triggers a routine that updates all registers with the values from this file.

APPLICATION TIP: The Register Access screen writes to user control registers, inside of the ADIS1648x devices, two bytes at a time. So, when configuring a register, make sure to include the hexadecimal number for all 16-bits, before pressing the Write Register button. When using an embedded processor to write to user control registers, inside of the ADIS1648x devices, each command (16-bits) writes to one byte at a time.

Data Capture

The Data Capture function supports synchronous data acquisition, based on the data-ready signal from the ADIS1648x. The following picture represents the Data Capture window, right after opening it from the Main Window and the second picture provides color-coded boxes, in order to support further discussion of each function that is associated with this screen.

The red box identifies all of the registers that are eligible for inclusion in the next acquisition process. Click on each box to include a register in the next data acquisition sequence. The box will have a check mark when it has been selected.

The green box identifies the configuration box for the name and location of the data storage file.

The yellow box identifies a number of configuration options for the data acquisition process. The Record Length is a user input for the total number of samples in a data record. Note that all selected registers will have this number of samples in the data record file, after the acquisition process completes. The Sample Rate represents the rate that the ADIS1648x updates its output register. This depends on the configuration in the DEC_RATE register. For example, if DEC_RATE = 0x0009, the decimation setting is 10, which would result in an update rate of 246 SPS. After each update to the Record Length box, the software calculates the displays the total Capture Time. The Add Header option allows the user to add or remove the header in the data storage file. The Use Scaled Data causes the software to convert the decimal, twos complement number into its representative value. For example, when enabling Use Scaled Data, the gyroscope outputs will be in units of degrees/second.


v1.11.1 4/9/14 Updated Magnetometer recorder in the Main Menu for consistency across the ADIS16405, ADIS16407, ADIS16448 and ADIS16488
v1.10.1 12/9/13 Address reported issue with SYS_E_FLAG register missing from ADIS16485 and ADIS16488 Register Access Menu
v1.10.0 11/1/13 Add support for the ADIS16137
Fix register access (GPIO_CTRL) in ADIS16209
v1.9.8 8/27/2013 Corrected a number of register definition issues on the ADIS16480
v1.9.7 8/21/2013 Corrected scale factors associated with GYRO_OUT/GYRO_OUT2 registers in the ADIS16133/5
v1.9.6 N/A Extended Precision Auto Null Wait time to 30 seconds on ADIS1636x/40x
NOTE: This version was not posted online but these updates are in current versions
v1.9.5 N/A Corrected scale factors and offset factors associated with xTEMP_OUT on the ADIS16445
Corrected scale factors and offset factors associated with xTEMP_OUT and xMAGN_OUT registers in the ADIS16448
NOTE: This version was not posted online but these updates are in current versions
v1.9.4 N/A Enabled support for using an external clock on the ADIS16405
NOTE: This version was not posted online but these updates are in current versions
v1.9.3 3/18/2013 Added support for the ADIS16400 and ADIS16405
v1.9.2 2/18/2013 Changed the separation “de-limit” in the data captures file from a comma to a semicolon
v1.9.0 1/16/2013 Added support for the ADIS16209 and ADIS16210
Corrected scale factors associated with the xDELTVEL_xxx registers in the ADIS16480/5
v1.8.1 12/18/2013 Corrected a data capture error, which was observed in the ADIS16448, but could have impacted other products
v1.8.0 11/8/2013 Added support for external clock use
Added support for the ADIS16266
v1.7.0 10/1/12 Added support for the ADIS16360, ADIS16362, ADIS16364, ADIS16365, and ADIS16367
Corrected a scaling issue for those who use “Turkey” as their regional setting.
NOTE: Some sensitivity was still observed; some users in Turkey may need to change regional setting to fully address.
v1.6.0 9/3/12 Added support for the ADIS16300 and ADIS16305
v1.5.0 8/22/12 Added support for the ADIS16445
v1.4.0 7/18/12 Added support for the ADIS1613, ADIS16135, ADIS16136 and ADIS16334
v1.3.0 N/A Internal updates
NOTE: This version was not posted online but these updates are in current versions
v1.2.0 5/28/2012 Added support for the ADIS16480
Added 3-D viewer for ADIS16480 demonstration
v1.1.1 5/4/2012 Updated register names for ADIS16448/ADIS16485 to match datasheet names
Data Capture: changed “Cancel” button to “Stop”
v1.1.0 4/6/2012 Added support for the ADIS16485
Improvements to Waveform Recorder appearance
v1.0.1 3/27/2012 Addressed issue to enable correct register values in the Register Access menu
v1.0.0 3/24/2012 Initial Release


Gyroscope Demonstration

The following example provides a simple demonstration example, for illustrating the gyroscope response to simple rotation.

In order to re-create the z-axis gyroscope (blue waveform, top plot) response, click on Read button and rotate the ADIS16488/EVAL-ADIS, in the manner that the following picture illustrates. Perform a couple of rotation cycles and then hit Stop.

In order to re-create the x-axis gyroscope (read waveform, top plot) response, click on Read button and rotate the ADIS16488/EVAL-ADIS, in the manner that the following picture illustrates. Perform a couple of rotation cycles and then hit Stop. Note that using both both thumbs, to fix the pivot point, typically helps produce a response that is closer to “x-axis only.”

In order to re-create the y-axis gyroscope (green waveform, top plot) response, click on Read button and rotate the ADIS16488/EVAL-ADIS, in the manner that the following picture illustrates. Perform a couple of rotation cycles and then hit Stop. Note that using both both hands, to fix the pivot point, typically helps produce a response that is closer to “y-axis only.”

The purpose of these simple exercises is to develop an intuition the sensor's response to motion. For those who develop their own clever demonstration ideas, post them in the Engineer Zone-MEMS Community.

Accelerometer Demonstration, Gravity

The ADIS16448 accelerometers response to gravity, in a manner that is consistent with Figure 17, on page 12 of the ADIS16448 datasheet. Use the Waveform Recorder to verify the accelerometer responses in six different orientations. In this exercise, place the ADIS16448/EVAL-ADIS flat on a table, or in a small vice, as shown in the following picture. Then, click on Read, wait for the curves to reach two divisions and then click on Stop. Repeat this process, using the following pictures, which represent a total of six orientations, including #1

Complete the exercise by returning to orientation #1 for the final two divisions on the waveform recorder screen and the final result will look like this.

Accelerometer Demonstration, Dynamic

Note that this exercise is just an example of how to develop an understanding of how the accelerometers will respond to dynamic motion. There are an infinite number of ways to do this. Keep in mind that the sample rate for the waveform recorder is fairly low, so keep your motion slow, so that you do not miss a leading edge of your motion and get fooled into thinking that the orientation is the opposite of what you expect. While this exercise uses the waveform recorder, the Data Capture function will provide higher sample rates and time resolution for transient movements.

Click on Read and hold the ADIS16448/EVAL-ADIS flat in your hand, with the USB cable pointed to the right and the ADIS16448 pointed up. Swing the device in a clock wise direction, in a manner that is similar to a big wave to someone. At the end of the clockwise wave, you will want the ADIS16448/EVAL-ADIS to be pointed down. Then swing the ADIS16448/EVAL-ADIS back in a counter-clockwise direction and when the device is back in its original orietnation, click on Stop. The following picture provides an example of what the waveform recorder will look like during this exercise. Notice the positive z-axis response on the leading edge of the response (blue curve) of the clockwise rotation. On the backswing, the rotation is counter-clockwise and the z-axis response leads with a negative transient.

Gyroscope Bias Correction

The ADIS16448 datasheet (page 19, revision 0) offers a three-step process for gyroscope bias correction. This exercise implements these steps, using the ADIS16448/EVAL-ADIS.

STEP #1: Set SENS_AVG = 0x0104

From the Main Window, click on the Register Access option. Once this window is open, select the SENS_AVG regsiter and write “104” in the New Hex Value box, as shown in the following figure. Then click on Write Register. Notice that the register contents box changes at the conclusion of the write cycle.

APPLICATION TIP: When writing to the SENG_AVG register, using an embedded processor, write to the upper byte first, using DIN = 0xB801 (SENS_AVG[15:8] = 0x01) and the ADIS16448 will automatically update the lower byte to 0x04.

STEP #2: Set SMPL_PRD = 0x0401

Stay in the Register Access window and click on SMPL_PRD, type 1001 into the New Hex Value box and then click on Write Register. Notice that the register contents box changes at the conclusion of the write cycle.

STEP #3: Set GLOB_CMD = 0x0001 (Start Auto-null)

Click on the Write button, located next to the AutoNull, on the right side of the screen.

After the calibration function completes, all of the register values on the screen will automatically refresh. Click on the Calibration register category to observe the updated values in the xGYRO_OFF registers.


APPLICATION TIP: The GLOB_CMD register access is managed in a separate box, to help manage the processing time associated with each single-command. When starting an auto-null function with an embedded processor, set DIN = 0xBE01 (GLOB_CMD[7:0] = 0x01) and wait at least 75ms before writing another commmand to the SPI interface.

Gyroscope Sensitivity

For extensive characterization of sensitivity or linearity, over a broad range of conditions, a motor stage with encoder feedback offers the most efficient and accurate approach. For limited conditions, one can employ a simpler approach that involves reading the gyroscope output data while rotating it around a fixed angle. After finishing the motion and data collection, one can calculate the displacement angle by adding all of the gyroscope measurements together and then dividing that sum by the sample rate. Here is a summary of the approach used in this exercise:

1. Use an ADIS16448/EVAL-ADIS and the IMU Evaluation software.

2. Use the edge of a table as a reference, to rotate the ADIS16448/EVAL-ADIS 360 degrees around the z-axis, while capturing data. Since the ADIS16448/EVAL-ADIS will end up in the same place that it started, it is easy to assure an accurate 360 degree turn.

3. Use a range setting of +/-1000 deg/sec (SENS_AVG[15:8] = 0x04).

4. Use a sample rate of 51.2SPS (SMPL_PRD = 0x0401).

5. Capture 10 seconds worth of data.

Start by using the Register Access screen to write the appropriate values to SMPL_PRD (0x0401) and SENS_AVG (>0x0400). After updating these registers, close the Register Access screen and open the Data Capture screen. Select the ZGYRO_OUT box and duplicate all of the settings in the following picture. The filename and location can be different than shown on in this picture.

After the Data Capture settings match the settings in the above picture, position the ADIS16448/EVAL-ADIS so that one of the long PCB edges is in alignment with a table edge. Practice rotating it a full 360 degrees within 10 seconds. Try to avoid rapid changes in the rate of rotation. This may take a few trials to find the right motion and direction. Once comfortable with the approach, click on Capture and rotate the ADIS16448/EVAL-ADIS a full 360 degree and make sure it is in alignment with the same edge that it started on.


For more information on this approach to measuring sensitivity, click on the following technical article link:

A Simple Gyroscope Calibration by Mark Looney

Gyroscope/Accelerometer Noise

In order to test the full-bandwidth, total noise in the ADIS16448 gyroscopes and accelerometers, use the Register Access menu to set SMPL_PRD = 0x0001 and SENS_AVG = 0x0400. Then, go into the Data Capture menu and duplicate the settings in the following picture. Click on Start to collect the data and then open the data-log file in MS Excell to analyze the total noise for each axis, using the STDEV command inside of Excel. Make sure that the ADIS16448 is on a stable surface when performing this exercise.

Note that all six sensors display noise that is consistent with the total noise specificaitons in the ADIS16448 datasheet.

In-run Bias Stability

For the ADIS16448 gyroscopes and acceleroemeters, “In-run Bias Stability” refers to the best resolution available, when averaging sequetital, time domain data. This has a direct impact on the accuracy of a bias correction and therefore, has a direct impact on angle measurement drift. In reviewing the Allan Variance curve for the gyroscopes (Figure 7), the minima of the the best performance curve (mean - 1 sigma) is associated with an integration time of ~100 seconds. However, many of the units (from mean and mean + 1 sigma curves)) start approaching their minima at ~40 seconds. While selecting the best settings may require some iteration, this exercise starts with an integration of 40 seconds, an output data rate of 51.2 SPS (SMPL_PRD = 0x0401) and a dyanmic range of +/-250 degrees/second (SENS_AVG = 0x0104).

Here is a snapshot of the Data Access and Data Capture screens, which configures the software to take 50 sets of z-axis gyroscope data, that contain 40-second time records each, at a read rate of 51.2SPS.

Click on the following link, for an example data file, with a manual calculation of the Allan Variance, at 40 seconds of integration time. In this file, you will find the test unit exhibited ~13 deg/hour of in-run bias stability. In this file, use the following reference points:

Column A = Sample number

Column B = Gyroscope output data

Column C = 40-second average, starting at row 2053

Colum D = Square of the mean difference

Cell F2 completes the Allan Variance computation


Angle Random Walk

Additional details are coming soon.