An fully working IMU-Filter and Sensor drivers for the 10DOF-Board over I2C. All in one simple class. Include, calibrate sensors, call read, get angles. (3D Visualisation code for Python also included) Sensors: L3G4200D, ADXL345, HMC5883, BMP085

Dependencies:   mbed

Committer:
maetugr
Date:
Thu Aug 29 13:52:30 2013 +0000
Revision:
4:f62337b907e5
Parent:
1:798db5deb8b9
The Altitude Sensor is now implemented, it's really 10DOF now ;); TODO: Autocalibration

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maetugr 1:798db5deb8b9 1 // by MaEtUgR
maetugr 1:798db5deb8b9 2
maetugr 1:798db5deb8b9 3 #ifndef IMU_10DOF_H
maetugr 1:798db5deb8b9 4 #define IMU_10DOF_H
maetugr 1:798db5deb8b9 5
maetugr 1:798db5deb8b9 6 #include "mbed.h"
maetugr 1:798db5deb8b9 7 #include "L3G4200D.h" // Gyro (Gyroscope)
maetugr 1:798db5deb8b9 8 #include "ADXL345.h" // Acc (Accelerometer)
maetugr 1:798db5deb8b9 9 #include "HMC5883.h" // Comp (Compass)
maetugr 4:f62337b907e5 10 #include "BMP085.h" // Alt (Altitude sensor or Barometer)
maetugr 4:f62337b907e5 11 #include "IMU_Filter.h" // Class to calculate position angles (algorithm from S.O.H. Madgwick, see header file for info)
maetugr 1:798db5deb8b9 12
maetugr 1:798db5deb8b9 13 class IMU_10DOF
maetugr 1:798db5deb8b9 14 {
maetugr 1:798db5deb8b9 15 public:
maetugr 1:798db5deb8b9 16 IMU_10DOF(PinName sda, PinName scl);
maetugr 4:f62337b907e5 17 void readAngles(); // read all axis from register to array data
maetugr 4:f62337b907e5 18 void readAltitude(); // read all axis from register to array data
maetugr 1:798db5deb8b9 19
maetugr 4:f62337b907e5 20 float * angle; // where the measured and calculated data is saved
maetugr 4:f62337b907e5 21 float temperature;
maetugr 4:f62337b907e5 22 float pressure;
maetugr 4:f62337b907e5 23 float altitude;
maetugr 1:798db5deb8b9 24
maetugr 1:798db5deb8b9 25 float dt; // local time to calculate processing speed for entire loop and just reading sensors
maetugr 1:798db5deb8b9 26 float dt_sensors; // |
maetugr 1:798db5deb8b9 27 private: // |
maetugr 1:798db5deb8b9 28 Timer LocalTimer; // |
maetugr 1:798db5deb8b9 29 float time_for_dt; // |
maetugr 1:798db5deb8b9 30 float time_for_dt_sensors; // |
maetugr 1:798db5deb8b9 31
maetugr 1:798db5deb8b9 32 L3G4200D Gyro; // All sensors Hardwaredrivers
maetugr 1:798db5deb8b9 33 ADXL345 Acc;
maetugr 1:798db5deb8b9 34 HMC5883 Comp;
maetugr 4:f62337b907e5 35 BMP085 Alt;
maetugr 4:f62337b907e5 36
maetugr 1:798db5deb8b9 37 IMU_Filter Filter; // Filterclass to join sensor data
maetugr 1:798db5deb8b9 38 };
maetugr 1:798db5deb8b9 39
maetugr 1:798db5deb8b9 40 #endif