Post Go back to editing

How to make IMU sensors insusceptible to surrounding electronics?


I am using two IMU sensors to perform the same tests and they are: ADIS16360 and ADIS16362.

I attached my IMU sensor on a robot arm to take some data and the gyroscope measurements were always out of calibration after one or two trials. I took the data with EVAL-ADIS board. The robot's control box is about 2 feet below the arm on which the sensor was attached to. I currently have my sensor wrapped in layers of aluminum foil but that wasn't helping either. Is there something I can do to prevent this?



  • Thank you for your post, Dao.
    We will be happy to help. Can we start with getting just a little more information?
    1. Can you explain the motion in physical terms that we can translate into an expected gyroscope output response?
    2. How much error are you observing?
    3. How do you have the devices configured? Specifically, what are the values in these registers: SMPL_PRD, SENS_AVG, MSC_CTRL
    4. Are you collecting data synchronously, based on the data ready signal or are you reading the data in a manner that is a synchronous with respect to the sensor sampling?
    5. If you are reading the data asynchronously, how often are you reading the data?
    6. Are you using any post processing on the data? If so, can you explain that signal processing?
    7. Would it be possible to post an example set of data, which illustrates this conclusion?
    8. Could you also post a small data file that provides data for each sensor output, while the device is laying flat on the table

    Best regards,
  • Hi Mark,

    Thanks for responding!

    1. I performed three separate tests and they're all rotational motion approximately 90 degrees at constant rate about every IMU axis. So I rotate about X-axis first for the first test, then about Y-axis for second test, and finally about Z-axis for the last test.

    2. At the end of the motion where all gyro readings should be approximately zero, the error observed was fluctuating from +/- 1 to +/- 2 deg/sec, sometimes higher. The error was more predominant in X and Z axes and only in gyro measurements.

    3. The current values in the registers: (a)SMPL_PRD: 0001  (b)SENS_AVG: 0406  (c)MSC_CTRL: 0006.

    4 & 5. I took some data in the default settings in 'Data Capture'. I am aware that there are seven different sampling rates according to the datasheet, so I did vary the SMPL_PRD from 0001 to 0007, but that didn't seem to help either. I guess how do I know if I am collecting data synchronously from the default setting? Are there internal delays? And what did you mean by data ready signal?

    6. I am using the raw data as they were.

    7 & 8. Most definitely! The data that illustrates the error is in the 'textfile', and the other is in excel.

    I suppose one last question I would like to ask is that is it required that I null-calibrate the sensor when it's plugged in for use for the first time? I am actually doing that otherwise there's always a constant offset in gyro readings. Here's the procedure I follow: In IMU evaluation program -> Register Access -> Click AutoNull under 'GLOB_CMD' register selection.

    Thank you for your time,

  • I almost forgot the measurements in the '.txt' file were not labelled, I simply copied the measurements from the spreadsheet to a text file for analysis in Matlab.

    Anyway, here are the column information for the data:

    Column:      1                2              3              4               5               6             7

                 Samples     X_Gyro     Y_Gyro      Z_Gyro     X_Grav      Y_Grav     Z_Grav



  • Thank you for sharing this data.  I already have a pretty busy day ahead of me, but I will try to take a look as soon as possible.  If you are using the EVAL-ADIS, then you are likely reading the data synchronous with the data production (using data ready).



  • In reviewing your register definitions, I noticed that you were using SENS_AVG = 0x0406, which is understandable but we have found the 14-bits might not be enough resolution to capture the output of the 65-tap filters.  You might want to consider trying this with 0x0402 and then perform some averaging in your processing. We supported another discussion on this topic a little while ago.  Click on this link for additional information:

    Re: A Question about your noise characteristic definitions


  • From the "Flat on Table" data, I can see that the SUPPLY_OUT is 4.55V, which is well below the minimum value (4/75V).  We have seen some drop through the power plan on occasion, but this would be the worst case I have seen so far.  This has been noted as an area for improvement in the EVAL-ADIS and is being addressed in the next generation.  While I am not sure that this is the only issue you are facing, this is likely contributing to elevated errors in the gyroscopes. For now, you can use the external power option associated with JP1 to provide an external supply that is +5V.  You might need to turn up >+5V (carefully), while probing one of the pins in J1, to make sure the ADIS1636x devices are seeing +5V.

    See Step #1 at this link, to locate JP1 on the EVAL-ADIS (which you appear to be using).

    I will keep thinking about this, but would it be possible to adjust the SENS_AVG and provide a +5V supply to produce a fresh set of data/observations?  A wise man once told me, "solve the known issues, then sometimes the "ghosts" disappear. If they don't, you will still be able to see them more clearly."

    Anyway, thanks for giving us a chance to help you!



  • With respect to the SMPL_PRD register, you will find that 0x0001 will most often provide the best results, so there is no need to experiment with that any further. 

  • Hi Mark,

    Thanks for all the suggestions! I have a lab help period shortly but I will try the above suggestions as soon as I'm available and get back to you hopefully by the end of day.



  • Yup, I am using EVAL-ADIS to take data.

    Here are two sets of data I took with an external 5v supply (approximately) and with SENS_AVG: 0x0402. First set of data is with the IMU lying flat on the table, second set is a 90 degrees rotation about IMU X-axis. By plotting and examining the second data, it appears slightly more noise, some averaging on the gyro readings is necessary just like you mentioned. A little tradeoff there. The good thing is there's not really any constant offset? Maybe there is but the noise makes it a little harder to detect, nevertheless even if there was some offset, it's not as comparably high as the previous data I sent. And this time I only need to null-calibrate that once. I suppose the 'ghost' may not be lingering around anymore? We'll need your expertise on that...

    I do have one concern, I provided an external +5v supply to the board, but it's reading -5, I was following the instructions from this link: Should I reverse the 'vdd' and 'gnd' wiring?


  • Thank you!  I can confirm that the referenced drawing is correct. When you say "its reading -5V," are you referring to a probed voltage on a meter or something else?  I can't imagine why this would flip the polarity of the voltage if it was hooked up correctly.