Bosch BMP085 Barometric Pressure Sensor

bmp085.h

Committer:
timm
Date:
2015-03-19
Revision:
0:e8f53e502a4c

File content as of revision 0:e8f53e502a4c:

/**
@file bmp085.h

@brief Header file containing member functions and variables

*/

#ifndef __BMP085_H__
#define __BMP085_H__

#include "mbed.h"

#define BMP085_I2C_ADDR_READ  (0xEF)
#define BMP085_I2C_ADDR_WRITE (0xEE)

#define CTRL_REG_ADDR (0xF4)
#define DATA_REG_ADDR (0xF6)

#define MEASURE_TEMP_CMD (0x2E)
#define MEASURE_PRES_CMD (0x34)

// MSB addresses, MSB first
#define CAL_DATA_AC1    (0xAA)
#define CAL_DATA_AC2    (0xAC)
#define CAL_DATA_AC3    (0xAE)
#define CAL_DATA_AC4    (0xB0)
#define CAL_DATA_AC5    (0xB2)
#define CAL_DATA_AC6    (0xB4)
#define CAL_DATA_B1     (0xB6)
#define CAL_DATA_B2     (0xB8)
#define CAL_DATA_MB     (0xBA)
#define CAL_DATA_MC     (0xBC)
#define CAL_DATA_MD     (0xBE)


/** 
@brief Simple library for interfacing with Bosch BMP085

@brief Revision 1.0

@author Tim Meese
@date   January 2015
 *
 * Example:
 * @code
 
 #include "mbed.h"
 #include "bmp085.h"
 
  
 * @endcode
 */


class BMP085
{

private:

    // I2C interface
    I2C * i2c;
 
    const float p0 = 101325;     // Pressure at sea level (Pa)
    float altitude;
   
    // Calibration parameters
    short AC1;
    short AC2;
    short AC3;
    unsigned short AC4;
    unsigned short AC5;
    unsigned short AC6;
    short B1;
    short B2;
    short MB;
    short MC;
    short MD;
    
    // uncalibrated temp, pressure
    long UT;    
    long UP;
    
    // shared values 
    long X1;
    long X2;
    long X3;
    long B3;
    unsigned long B4;
    long B5;
    long B6;
    unsigned long B7;
    long T; // temp in 0.1 degrees C
    long p; // pressure in Pascals

    void readCalData();
    void readUncompTemp();
    void readUncompPressure(int mode);

public:
    /** Create a BMP085 object connected to the specified pins
    *
    * @param clkPin  Pin connected to clk
    * @param dataPin Pin connected to data
    * 
    */
    BMP085(PinName clkPin, PinName dataPin);
    
    /** Initialise SHT11
    *
    */
    void init();
    float getTemperature();
    float getPressure(int oss);
    long getUT();
    long getUP();
};

#endif /* __BMP085_H__ */