Ken Todotani
/
TempSensor
Sample program to get ambient temperature from MCP9700 sensor
LinearTempSensor/LinearTempSensor.h
- Committer:
- todotani
- Date:
- 2010-11-23
- Revision:
- 0:6dde232b3b3b
File content as of revision 0:6dde232b3b3b:
/* mbed Linear Temperature Sensor library * Supports Microchip MCP9700/9701, National Semiconductor LM35 * * Written by Todotani, Nov 22 2010 */ #ifndef MBED_LINEARTEMPSENSOR_H #define MBED_LINEARTEMPSENSOR_H #include "mbed.h" /** Linear Temperature Sensor class. * Sample and store sensor acuired value in N (default=10) times and * calculate avarage temperature from sampled data * Supports Microchip MCP9700/9701, National Semiconductor LM35 * @author Todotani */ class LinearTempSensor { public: /** Sensor Type Definitions */ enum SensorType { MCP9700, /**< Microchip MCP9700 (Default) */ MCP9701, /**< Microchip MCP9701 */ LM35 /**< National Semiconductor LM35 */ }; /** Create a Temperature Sensor instanse * * @param ain PinName of analog input * @param N Number of samples to calculate average temperature (default = 10) * @param type Sensor type (default = MCP9700) */ LinearTempSensor(PinName ain, int N = 10, SensorType type = MCP9700); /** Sample (read) sensor data and store to buffer * * @param None * @return Sensor-acuired value (mV) */ float Sense(); /** Calculate average temperature from sample buffer * * @param None * @return Average temperature from N times of sumple (Centigrade) */ float GetAverageTemp(); /** Calculate temperature from the latest sample * * @param None * @return Temperature from the latest sampled data (Centigrade) */ float GetLatestTemp(); ~LinearTempSensor(); private: AnalogIn _ain; int _samples; SensorType _type; float *sampleBuffer; // Buffer to store sensor acuired data bool bufferNotFilled; // Flag shows that buffer have not filled uint32_t sampleCount; uint32_t index; float V0; // Sensor read value in case 0 degree float Tc; // Tmperature coefficient (temprature inclease) in each degree float Vref; // Reference volgate for ADC }; #endif