Friday, February 22, 2013

AVR Atmega 10dof IMU attitude estimation using Mahony filter + processing

Updated to version 02

This is a 10DOF (Degrees of Freedom) AVR Atmega libray.
An inertial measurement unit, or IMU, is an electronic device that measures and reports on a craft's velocity, orientation, and gravitational forces, using a combination of accelerometers and gyroscopes and magnetometers.



This IMU is built on:
  • 3DOF ADXL345 3-axis accelerometer
  • 3DOF L3G4200D 3-axis gyroscope
  • 3DOF HML5883L 3-axis magnetometer
  • 1DOF BMP085 barometer


Attitude estimation is computed using Mahony complementary filter algorithm available from here: http://www.x-io.co.uk/.


Setup parameters are stored in files:
adxl345/adxl345.h (setup the accelerometer)
l3g4200d/l3g4200d.h (setup the gyroscope)
hmc5883l/hmc5883l.h (setup the magnetometer)
bmp085/bmp085.h (setup the barometer)
imu10dof01/imu10dof01.h (setup the 10dof attitude estimation)

This library was developed on Eclipse, built with avr-gcc on Atmega328 @ 16MHz.


Changelog
  • 02: attitude estimation refactored to fit standards
  • 01: first release


Code


Notes
  • read risk disclaimer
  • excuse my bad english