6DOF Digital IMU

From MyLabWiki
Jump to: navigation, search


Digital IMU Combo Board - 6 Degrees of Freedom using ITG-3200 gyro and ADXL345 accelerometer.

This is a simple breakout for the ADXL345 accelerometer and the ITG-3200 gyro, giving full 6 degrees of freedom. The sensors communicate over I2C and one INT output pin from each sensor is broken out, see the schematics below.

6DOF-01.jpg 6DOF-02.jpg 6DOF-03.jpg

Sen 6DOF-Digital-v10.png

The schematics is also available as PDF.[1] Eagle files are available from the Sparkfun product page.[2]


This is a 3.3V device and therefore it needs a level converter to connect it to a 5V Arduino. Remember to use the TX lines to get bi-directional conversion.


Uses I2C bus:

  • ITG-3200 address: 0xD0 for write and 0xD1 for read.
  • ADXL345 address: 0xA6 for write and 0xA7 for read.

There is an example application on GitHub, see https://github.com/a1ronzo/6DOF-Digital .

On Arduino we can also use the Wire library. However, note that the Wire library uses 7 bit addresses. In fact, I2C addresses are only the upper 7 bit the last bit indicating whether we read (1) or write(0). For the case of the ITG-3200:

  • Write: 0xD0 = 11010000
  • Read: 0xD1 = 11010001

There is the issue of Wire library not supporting reading from a specific register[3]. As the discussion shows, there is a workaround and the new readFrom method will be included in Arduino 023. Moreover, the page links to ADXL345 and ITG-3200 drivers specifically written for Arduino[4][5].


  1. File:Sen 6DOF-Digital-v10.pdf
  2. http://www.sparkfun.com/products/10121
  3. http://code.google.com/p/arduino/issues/detail?id=466
  4. http://code.google.com/p/adxl345driver/
  5. http://code.google.com/p/itg-3200driver/