Wiki

Differences

This shows you the differences between two versions of the page.


Previous revision
Next revision
resources:eval:user-guides:inertial-mems:imu:adis16448 [09 Oct 2013 03:18] – [IMU EVALUATION SOFTWARE OVERVIEW] Mark Looney
Line 1: Line 1:
 +====== ADIS1644X EVALUATION ON THE EVAL-ADIS ======
 +===== OVERVIEW =====
 +
 +The ADIS16445 and [[adi>ADIS16448|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:
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-hook-up-with-ep2.png?nolink&400|}}
 +
 +===== ADIS1644x/PCB BREAKOUT BOARD =====
 +For those who are on a tight timeline, connecting the ADIS16445 or [[adi>ADIS16448|ADIS16448]] to an embedded controller will provide the most flexibility in developing application firmware and will more closely reflect the final system design. The [[adi>en/mems-sensors/mems-inertial-measurement-units/adis16448/products/EVAL-ADIS16448/eb.html|ADIS16448/PCBZ]] is the breakout board for the [[adi>ADIS16448|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 [[adi>en/mems-sensors/mems-inertial-measurement-units/adis16448/products/EVAL-ADIS16448/eb.html|ADIS16448/PCBZ]] breakout boards, check out the following link: [[adi>en/mems-sensors/mems-inertial-measurement-units/adis16448/products/EVAL-ADIS16448/eb.html|ADIS16448/PCB Breakout Board Web Page]].
 +
 +===== EVAL-ADIS: PC EVALUATION =====
 +
 +For those who would prefer to perform PC-based evaluation of the ADIS16445 or [[adi>ADIS16448|ADIS16448]], before developing their own embedded system, the [[adi>EVAL-ADIS|EVAL-ADIS]] is the appropriate system to use. The remainder of this Wiki site will focus on PC-based evaluation with the [[adi>EVAL-ADIS|EVAL-ADIS]] system.
 +
 +===== EQUIPMENT LIST =====
 +[[adi>EVAL-ADIS|EVAL-ADIS]]
 +
 +[[adi>en/mems-sensors/mems-inertial-measurement-units/adis16448/products/EVAL-ADIS16448/eb.html|ADIS16448/PCBZ]] or ADIS16445/PCBZ
 +
 +===== SYSTEM REQUIREMENTS =====
 +Windows XP, Vista, 7
 +
 +.NET Framework 3.5
 +
 +NOTE: Newer versions of the .NET framework do not currnently support the IMU Evaluation software pacakge.
 +===== PHYSICAL SETUP =====
 +The [[adi>en/mems-sensors/mems-inertial-measurement-units/adis16448/products/EVAL-ADIS16448/eb.html|ADIS16448/PCBZ]] includes one interface PCB, one flexible cable/connector and one [[adi>ADIS16448|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 [[adi>ADIS16448|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 [[adi>ADIS16448|ADIS16448AMLZ]], which is the product that most of the pictures in this section represents. Use the flexible cable/connector to install the [[adi>ADIS16448|ADIS16448]] onto the [[adi>EVAL-ADIS|EVAL-ADIS]], using the following five steps. Set interface PCB aside, as it is not used for connecting the [[adi>ADIS16448|ADIS16448AMLZ]] to the [[adi>EVAL-ADIS|EVAL-ADIS]].
 + 
 +NOTE: Do not plug the [[adi>EVAL-ADIS|EVAL-ADIS]] into the USB cable at this stage of the setup.  Wait until the software installation is complete.
 +
 +==== Step #1 ====
 +Install the flexible cable onto the [[adi>ADIS16448|ADIS16448AMLZ]]. The following pictures provide a visual refernece for correct connection.
 +
 +**__CORRECT CONNECTION__**
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step1-01.jpg?nolink&200|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step1-03.jpg?nolink&200|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step1-02.jpg?nolink&400|}}
 +
 +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.
 +
 +**__INCORRECT CONNECTION EXAMPLES__**
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step1-04.jpg?nolink&200|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step1-05.jpg?nolink&200|}}
 +
 +==== Step #2 ====
 +Connect the other end of the flexible cable to the [[adi>EVAL-ADIS|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.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step2-01.jpg?nolink&400|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step2-02.jpg?nolink&300|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step2-03.jpg?nolink&400|}}
 +
 +==== Step #3 ====
 +Slide the [[adi>ADIS16448|ADIS16448AMLZ]] body towards J4, while tucking the excess flexing under the connector interface, as show in the following pictures.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step3-01.jpg?nolink&300|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step3-02.jpg?nolink&300|}}
 +
 +==== Step #4 ====
 +Secure the [[adi>ADIS16448|ADIS16448AMLZ]] body, using (4) M2x0.4x10mm machine screws (included with [[adi>EVAL-ADIS|EVAL-ADIS]]) and the "E" mounting holes (EVAL-ADIS labels for mounting holes).
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:eval-adis-nodut.png?nolink&400|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step4-01.jpg?nolink&400|}}
 +
 +==== Step #5 ====
 +Set JP1 ([[adi>EVAL-ADIS|EVAL-ADIS]]) to "+3.3V."
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-step5-01.jpg?nolink&400|}}
 +
 +====IMU EVALUATION SOFTWARE OVERVIEW====
 +
 +{{page> resources/eval/user-guides/inertial-mems/imu/imu-evaluation-software#imu_evaluation_software_overview&nofooter&noheader}}
 +
 +====USB Driver Installation====
 +
 +{{page> resources/eval/user-guides/inertial-mems/imu/imu-evaluation-software#usb_driver_installation&nofooter&noheader}}
 +
 +====IMU EVALUATION SOFTWARE GETTING STARTED====
 +
 +{{page> resources/eval/user-guides/inertial-mems/imu/imu-evaluation-software#imu_evaluation_software_starting_point&nofooter&noheader}}
 +
 +
 +====IMU EVALUATION SOFTWARE REVISION HISTORY====
 +
 +{{page> resources/eval/user-guides/inertial-mems/imu/imu-evaluation-software#software_revision_history&nofooter&noheader}}
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +=====EXAMPLE EVALUATION EXERCISES=====
 +
 +====Gyroscope Demonstration====
 +The following example provides a simple demonstration example, for illustrating the gyroscope response to simple rotation.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-imueval-waverec-ex1-04.png?nolink&600|}}
 +
 +In order to re-create the z-axis gyroscope (blue waveform, top plot) response, click on **Read** button and rotate the [[adi>ADIS16448|ADIS16488]]/[[adi>EVAL-ADIS|EVAL-ADIS]], in the manner that the following picture illustrates. Perform a couple of rotation cycles and then hit **Stop**.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-gyro-p01.png?nolink&300|}}
 +
 +In order to re-create the x-axis gyroscope (read waveform, top plot) response, click on **Read** button and rotate the [[adi>ADIS16448|ADIS16488]]/[[adi>EVAL-ADIS|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."
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-gyro-p02.png?nolink&300|}}
 +
 +In order to re-create the y-axis gyroscope (green waveform, top plot) response, click on **Read** button and rotate the [[adi>ADIS16448|ADIS16488]]/[[adi>EVAL-ADIS|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."
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-gyro-p03.png?nolink&300|}}
 +
 +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 [[ez>community/mems|Engineer Zone-MEMS Community]].
 +====Accelerometer Demonstration, Gravity====
 +The [[adi>ADIS16448|ADIS16448]] accelerometers response to gravity, in a manner that is consistent with Figure 17, on page 12 of the [[adi>ADIS16448|ADIS16448]] datasheet.  Use the Waveform Recorder to verify the accelerometer responses in six different orientations.  In this exercise, place the [[adi>ADIS16448|ADIS16448]]/[[adi>EVAL-ADIS|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**
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-imu-eval-accel-static-p01.png?nolink&130|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-imu-eval-accel-static-p02.png?nolink&130|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-imu-eval-accel-static-p03.png?nolink&130|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-imu-eval-accel-static-p04.png?nolink&130|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-imu-eval-accel-static-p05.png?nolink&130|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-imu-eval-accel-static-p06.png?nolink&130|}}
 +
 +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.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-imueval-tutex-accel-staticresponse-01.png?nolink&600|}}
 +
 +
 +====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 [[adi>ADIS16448|ADIS16448]]/[[adi>EVAL-ADIS|EVAL-ADIS]] flat in your hand, with the USB cable pointed to the right and the [[adi>ADIS16448|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 [[adi>ADIS16448|ADIS16448]]/[[adi>EVAL-ADIS|EVAL-ADIS]] to be pointed down. Then swing the [[adi>ADIS16448|ADIS16448]]/[[adi>EVAL-ADIS|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.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-imueval-tutex-accel-dynamicresponse-02.png?nolink&600|}}
 +====Gyroscope Bias Correction====
 +The [[adi>ADIS16448|ADIS16448]] datasheet (page 19, revision 0) offers a three-step process for gyroscope bias correction. This exercise implements these steps, using the [[adi>ADIS16448|ADIS16448]]/[[adi>AEVAL-ADIS|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.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:imu_eval_registeraccess_gbcex-01.png?600|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:imu_eval_registeraccess_gbcex-02.png?600|}}
 +
 +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 [[adi>ADIS16448|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.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:imu_eval_registeraccess_gbcex-02a.png?600|}}
 +
 +**__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.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:imu_eval_registeraccess_gbcex-04.png?600|}}
 +
 +
 +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.
 +
 +WAITING FOR SOFTWARE UPDATE TO PROVIDE THIS FIGURE
 +
 +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 [[adi>ADIS16448|ADIS16448]]/[[adi>EVAL-ADIS|EVAL-ADIS]] and the IMU Evaluation software.
 +
 +2. Use the edge of a table as a reference, to rotate the [[adi>ADIS16448|ADIS16448]]/[[adi>EVAL-ADIS|EVAL-ADIS]] 360 degrees around the z-axis, while capturing data.  Since the [[adi>ADIS16448|ADIS16448]]/[[adi>EVAL-ADIS|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.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-gyrosens-datacapt-02.png?nolink&600|}}
 +
 +After the **Data Capture** settings match the settings in the above picture, position the [[adi>ADIS16448|ADIS16448]]/[[adi>EVAL-ADIS|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 [[adi>ADIS16448|ADIS16448]]/[[adi>EVAL-ADIS|EVAL-ADIS]] a full 360 degree and make sure it is in alignment with the same edge that it started on.
 +
 +**REFERENCES**
 +
 +For more information on this approach to measuring sensitivity, click on the following technical article link:
 +
 +[[adi>static/imported-files/tech_articles/GyroCalibration_EDN_EU_7_2010.pdf|A Simple Gyroscope Calibration by Mark Looney]]
 +
 +
 +
 +
 +
 +
 +
 +====Gyroscope/Accelerometer Noise=====
 +In order to test the full-bandwidth, total noise in the [[adi>ADIS16448|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 [[adi>ADIS16448|ADIS16448]] is on a stable surface when performing this exercise.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:adis16448-gyro-accel-noise-datacapture-setup-01.png?nolink&500|}}
 +
 +Note that all six sensors display noise that is consistent with the total noise specificaitons in the [[adi>ADIS16448|ADIS16448]] datasheet.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:adis16488-gyro-accel-noise-test-01.png?nolink&500|}}
 +====In-run Bias Stability====
 +For the [[adi>ADIS16448|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 ([[adi>http://www.analog.com/static/imported-files/data_sheets/ADIS16448.pdf#Page=08|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.
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:imu_eval_registeraccess_sensex-01.png?600|}}
 +{{:resources:eval:user-guides:inertial-mems:imu:448-eval-adis-gyrosens-datacapt-01.png?nolink&600|}}
 +
 +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
 +
 +{{:resources:eval:user-guides:inertial-mems:imu:adis16448-avar-examplecalc.xlsx|}}
 +
 +
 +
 +
 +====Angle Random Walk====
 +Additional details are coming soon.
 +
 +
 +
 +
 +
 +
 +
 +
  
resources/eval/user-guides/inertial-mems/imu/adis16448.txt · Last modified: 11 Feb 2021 18:03 by Ioana Chelaru