NOT FINISHED YET!!! My first try to get a self built fully working Quadrocopter based on an mbed, a self built frame and some other more or less cheap parts.

Dependencies:   mbed MODI2C

Committer:
maetugr
Date:
Fri Feb 14 14:17:32 2014 +0000
Revision:
40:2ca410923691
Parent:
34:3aa1cbcde59d
now with MPU6050 before taking it too FlyBed2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maetugr 34:3aa1cbcde59d 1 #include "BMP085.h"
maetugr 34:3aa1cbcde59d 2
maetugr 34:3aa1cbcde59d 3 BMP085::BMP085(PinName sda, PinName scl) : I2C_Sensor(sda, scl, BMP085_I2C_ADDRESS)
maetugr 34:3aa1cbcde59d 4 {
maetugr 34:3aa1cbcde59d 5 // initialize BMP085 with settings
maetugr 34:3aa1cbcde59d 6 //writeRegister(0xf4, 0x2e); // TODO: was macht das + register in header!
maetugr 34:3aa1cbcde59d 7
maetugr 34:3aa1cbcde59d 8 }
maetugr 34:3aa1cbcde59d 9
maetugr 34:3aa1cbcde59d 10 /*void BMP085::read()
maetugr 34:3aa1cbcde59d 11 {
maetugr 34:3aa1cbcde59d 12 long P, UTemp, UPressure, X1, X2, X3, B3, B5, B6;
maetugr 34:3aa1cbcde59d 13 unsigned long B4, B7;
maetugr 34:3aa1cbcde59d 14
maetugr 34:3aa1cbcde59d 15 // TODO: writeRegister(0xf4, 0x2e); ?!!!
maetugr 34:3aa1cbcde59d 16 twi_writechar(BMP085_ADRESS, 0xf4, 0x2e);
maetugr 34:3aa1cbcde59d 17 // Wait at least 4.5ms
maetugr 34:3aa1cbcde59d 18 wait(0.005);
maetugr 34:3aa1cbcde59d 19 UTemp = twi_readshort(BMP085_ADRESS, 0xf6);
maetugr 34:3aa1cbcde59d 20
maetugr 34:3aa1cbcde59d 21 X1 = ((UTemp - AC6) * AC5) >> 15;
maetugr 34:3aa1cbcde59d 22 X2 = (MC << 11) / (X1 + MD);
maetugr 34:3aa1cbcde59d 23 B5 = X1 + X2;
maetugr 34:3aa1cbcde59d 24 Temperature = (float)((B5 + 8) >> 4)/10.0;
maetugr 34:3aa1cbcde59d 25
maetugr 34:3aa1cbcde59d 26 twi_writechar(BMP085_ADRESS, 0xf4, 0x34 + (oss << 6));
maetugr 34:3aa1cbcde59d 27 // Wait at least 4.5ms
maetugr 34:3aa1cbcde59d 28 wait(0.005);
maetugr 34:3aa1cbcde59d 29 UPressure = twi_readlong(BMP085_ADRESS, 0xf6) >> (8 - oss);
maetugr 34:3aa1cbcde59d 30
maetugr 34:3aa1cbcde59d 31 B6 = B5 - 4000;
maetugr 34:3aa1cbcde59d 32 X1 = (B2 * (B6 * B6) >> 12) >> 11;
maetugr 34:3aa1cbcde59d 33 X2 = (AC2 * B6) >> 11;
maetugr 34:3aa1cbcde59d 34 X3 = X1 + X2;
maetugr 34:3aa1cbcde59d 35 B3 = ((AC1 * 4 + X3) << oss) >> 2;
maetugr 34:3aa1cbcde59d 36
maetugr 34:3aa1cbcde59d 37 X1 = (AC3 * B6) >> 13;
maetugr 34:3aa1cbcde59d 38 X2 = (B1 * (B6 * B6) >> 12) >> 16;
maetugr 34:3aa1cbcde59d 39 X3 = ((X1 + X2) + 2) >> 2;
maetugr 34:3aa1cbcde59d 40 B4 = AC4 * (X3 + 32768) >> 15;
maetugr 34:3aa1cbcde59d 41
maetugr 34:3aa1cbcde59d 42 B7 = (unsigned long)(UPressure - B3) * (50000 >> oss);
maetugr 34:3aa1cbcde59d 43
maetugr 34:3aa1cbcde59d 44 if (B7 < 0x80000000)
maetugr 34:3aa1cbcde59d 45 {
maetugr 34:3aa1cbcde59d 46 P = (2 * B7) / B4;
maetugr 34:3aa1cbcde59d 47 }
maetugr 34:3aa1cbcde59d 48 else
maetugr 34:3aa1cbcde59d 49 {
maetugr 34:3aa1cbcde59d 50 P = 2* (B7 / B4);
maetugr 34:3aa1cbcde59d 51 }
maetugr 34:3aa1cbcde59d 52 X1 = (P >> 8) * (P >> 8);
maetugr 34:3aa1cbcde59d 53 X1 = (X1 * 3038) >> 16;
maetugr 34:3aa1cbcde59d 54 X2 = (-7357 * P) >> 16;
maetugr 34:3aa1cbcde59d 55 P = P + ((X1 + X2 + 3791) >> 4);
maetugr 34:3aa1cbcde59d 56 Pressure = (float)P / 100.0;
maetugr 34:3aa1cbcde59d 57 }*/