The TMP117 is a high-accuracy digital temperature sensor manufactured by Texas Instruments. It provides precise temperature readings with a resolution of 0.1°C and an accuracy of ±0.1°C across a wide temperature range (-40°C to +125°C). The sensor communicates via an I2C interface, making it easy to integrate into microcontroller-based systems. Its low power consumption and high precision make it ideal for applications such as industrial monitoring, medical devices, HVAC systems, and consumer electronics.
The TMP117 is designed for high performance and ease of use. Below are its key technical details:
Parameter | Value |
---|---|
Supply Voltage (VDD) | 1.8V to 5.5V |
Temperature Range | -40°C to +125°C |
Accuracy | ±0.1°C (from -20°C to +50°C) |
Resolution | 0.0078°C |
Interface | I2C (up to 400 kHz) |
Power Consumption | 3.5 µA (typical, 1 Hz sampling) |
Package Options | WSON (6-pin) |
The TMP117 is available in a 6-pin WSON package. Below is the pinout and description:
Pin Name | Pin Number | Description |
---|---|---|
VDD | 1 | Power supply input (1.8V to 5.5V) |
GND | 2 | Ground |
SDA | 3 | I2C data line |
SCL | 4 | I2C clock line |
ALERT | 5 | Alert output for temperature threshold events |
NC | 6 | No connection (leave unconnected or grounded) |
Below is an example of how to interface the TMP117 with an Arduino UNO using the Wire library:
#include <Wire.h>
#define TMP117_ADDRESS 0x48 // Default I2C address of TMP117
#define TEMP_RESULT_REG 0x00 // Temperature result register
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Configure TMP117 (optional, default settings are sufficient for most cases)
Wire.beginTransmission(TMP117_ADDRESS);
Wire.write(0x01); // Configuration register
Wire.write(0x02); // Set to continuous conversion mode
Wire.write(0x00); // Default settings
Wire.endTransmission();
}
void loop() {
float temperature = readTemperature();
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
delay(1000); // Wait 1 second before the next reading
}
float readTemperature() {
Wire.beginTransmission(TMP117_ADDRESS);
Wire.write(TEMP_RESULT_REG); // Point to the temperature result register
Wire.endTransmission();
Wire.requestFrom(TMP117_ADDRESS, 2); // Request 2 bytes of data
if (Wire.available() == 2) {
int16_t rawData = (Wire.read() << 8) | Wire.read(); // Combine MSB and LSB
return rawData * 0.0078125; // Convert to Celsius (0.0078125°C/LSB)
}
return NAN; // Return NaN if data is unavailable
}
0x48
. If multiple TMP117 sensors are used, their addresses can be configured via hardware.No I2C Communication:
0x48
).Incorrect Temperature Readings:
Alert Pin Not Functioning:
Q: Can the TMP117 operate at 3.3V?
A: Yes, the TMP117 supports a supply voltage range of 1.8V to 5.5V, making it compatible with 3.3V systems.
Q: How do I change the I2C address of the TMP117?
A: The TMP117 has a fixed I2C address (0x48
). To use multiple sensors, consider using an I2C multiplexer or a similar solution.
Q: What is the maximum sampling rate of the TMP117?
A: The TMP117 can sample at a maximum rate of 1 Hz in continuous conversion mode.
Q: Is the TMP117 suitable for outdoor use?
A: While the TMP117 is accurate and reliable, it should be protected from moisture and extreme environmental conditions for outdoor applications. Use an appropriate enclosure if necessary.