These are the methods to interface the TMP006 sensor with the mbed controller.
Dependents: mbed_blinky_Tmp006_No2 mbed_blinky_Tmp006_3rd completesensor TMP006IR_HelloWorld
Diff: TMP006.h
- Revision:
- 0:48c0564d877a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TMP006.h Wed Oct 16 19:59:52 2013 +0000 @@ -0,0 +1,96 @@ +/** TMP006 Temperature methods. + * Used for interfacing the TMP006 with the mbed. + * + * Example: + * @code + * #include "mbed.h" + * #include "TMP006.h" + + * #define Address 0x80 + * + * TMP006 sensor(p9, p10, Address); + * + * int main() + * { + * while(1) { + * printf("TTemperature: %f F \r \n", sensor.readObjTempF(Address)); + * wait(0.5); + * } + * } + * @endcode + */ + + +#ifndef TMP006_H +#define TMP006_H + +#include "mbed.h" + +// Constants for calculating object temperature +#define TMP006_B0 -0.0000294 +#define TMP006_B1 -0.00000057 +#define TMP006_B2 0.00000000463 +#define TMP006_C2 13.4 +#define TMP006_TREF 298.15 +#define TMP006_A2 -0.00001678 +#define TMP006_A1 0.00175 +#define TMP006_S0 6.4 // * 10^-14 + +// Configuration Settings +#define TMP006_CFG_RESET 0x8000 +#define TMP006_CFG_MODEON 0x7000 +#define TMP006_CFG_1SAMPLE 0x0000 +#define TMP006_CFG_2SAMPLE 0x0200 +#define TMP006_CFG_4SAMPLE 0x0400 +#define TMP006_CFG_8SAMPLE 0x0600 +#define TMP006_CFG_16SAMPLE 0x0800 +#define TMP006_CFG_DRDYEN 0x0100 +#define TMP006_CFG_DRDY 0x0080 + +// Registers to read thermopile voltage and sensor temperature +#define TMP006_VOBJ 0x00 +#define TMP006_TAMB 0x01 +#define TMP006_CONFIG 0x02 + +class TMP006 +{ +public: + + // Constructor + TMP006(PinName sda, PinName scl, int addr); + + /** Configures sensor, use before reading from it */ + void config(uint8_t addr, uint16_t samples); + + /** Read raw sensor temperature */ + int16_t readRawDieTemperature(uint8_t addr); + + /** Read raw thermopile voltage */ + int16_t readRawVoltage(uint8_t addr); + + /** Calculate object temperature (C) based on raw sensor temp and thermopile voltage */ + double readObjTempC(uint8_t addr); + + /** Calculate object temperature (F) based on raw sensor temp and thermopile voltage */ + double readObjTempF(uint8_t addr); + + /** Caculate sensor temperature (C) based on raw reading */ + double readDieTempC(uint8_t addr); + + /** Caculate sensor temperature (F) based on raw reading */ + double readDieTempF(uint8_t addr); + + /*! + Destroys instance. + */ + ~TMP006(); + + + +private: + I2C m_i2c; + int m_addr; + +}; + +#endif \ No newline at end of file