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