Difference between revisions of "6DOF Digital IMU"

From MyLabWiki
Jump to: navigation, search
(Programming: Added new info about Wire and Arduino specific drivers for ADXL345 and ITG-3200)
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
* ADXL345 acceleromenter [[Image:ADXL345.pdf|datasheet]]
+
== Overview ==
* ITG-3200 gyro datasheet
+
 
 +
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.
 +
 
 +
[[File:6DOF-01.jpg|250px]]
 +
[[File:6DOF-02.jpg|150px]]
 +
[[File:6DOF-03.jpg|150px]]
 +
 
 +
[[File:Sen_6DOF-Digital-v10.png|400px]]
 +
 
 +
The schematics is also available as PDF.<ref>[[File:Sen_6DOF-Digital-v10.pdf]]</ref>
 +
Eagle files are available from the Sparkfun product page.<ref>http://www.sparkfun.com/products/10121</ref>
 +
 
 +
== Interfacing ==
 +
 
 +
This is a 3.3V device and therefore it needs a [[Logic_Level_Converter|level converter]] to connect it to a 5V Arduino. Remember to use the TX lines to get bi-directional conversion.
 +
 
 +
== Programming ==
 +
 
 +
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 [http://arduino.cc/en/Reference/Wire 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 = 1101000<u>0</u>
 +
* Read: 0xD1 = 1101000<u>1</u>
 +
 
 +
There is the issue of Wire library not supporting reading from a specific register<ref>http://code.google.com/p/arduino/issues/detail?id=466</ref>. 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<ref>http://code.google.com/p/adxl345driver/</ref><ref>http://code.google.com/p/itg-3200driver/</ref>.
 +
 
 +
== References ==
 +
 
 +
<references/>
 +
 
 +
* ADXL345 acceleromenter datasheet: [[File:ADXL345.pdf]]
 +
* ITG-3200 gyro datasheet: [[File:ITG3200-00-01.4.pdf]]
 +
* Available from [http://www.sparkfun.com/products/10121 Sparkfun]
  
 
[[Category:Arduino]]
 
[[Category:Arduino]]
 
[[Category:Sensors]]
 
[[Category:Sensors]]

Latest revision as of 23:30, 23 April 2011

Overview

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]

Interfacing

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.

Programming

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].

References

  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/