The TMP117 is a high-accuracy digital temperature sensor designed for precision temperature measurements. It communicates via the I2C interface, making it easy to integrate into microcontroller-based systems. With a wide temperature range of -55°C to +150°C and an impressive accuracy of ±0.1°C, the TMP117 is ideal for applications requiring precise thermal monitoring. These include industrial automation, medical devices, HVAC systems, and consumer electronics.
The TMP117 offers robust performance and flexibility for temperature sensing applications. Below are its key technical details:
Parameter | Value |
---|---|
Temperature Range | -55°C to +150°C |
Accuracy | ±0.1°C (from -20°C to +50°C) |
Supply Voltage (VDD) | 1.8V to 5.5V |
Communication Interface | I2C (up to 400 kHz) |
Resolution | 16 bits |
Current Consumption | 3.5 µA (typical, 1 Hz mode) |
Operating Modes | Continuous, Shutdown |
The TMP117 is typically available in a 6-pin WSON package. Below is the pinout description:
Pin Number | Pin Name | Description |
---|---|---|
1 | SDA | I2C Data Line |
2 | SCL | I2C Clock Line |
3 | ALERT | Interrupt/Alert Output (active low, open-drain) |
4 | GND | Ground |
5 | VDD | Power Supply (1.8V to 5.5V) |
6 | ADD0 | I2C Address Selection (connect to GND or VDD) |
The TMP117 is straightforward to use in a circuit, thanks to its I2C interface. Below are the steps and considerations for integrating the TMP117 into your design:
0x48
.0x49
.Below is an example of how to use the TMP117 with an Arduino UNO. This code reads the temperature and prints it to the Serial Monitor.
#include <Wire.h>
// TMP117 I2C address (default is 0x48 if ADD0 is connected to GND)
#define TMP117_ADDRESS 0x48
// TMP117 register addresses
#define TMP117_TEMP_RESULT 0x00
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Start Serial communication for debugging
Serial.println("TMP117 Temperature Sensor Example");
}
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(TMP117_TEMP_RESULT); // 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)
} else {
Serial.println("Error: No data received!");
return NAN; // Return Not-a-Number if data is unavailable
}
}
No I2C Communication:
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, so 3.3V is within its operating range.
Q: How do I set temperature alert thresholds?
A: The TMP117 has dedicated registers for high and low temperature limits. Use the I2C interface to configure these registers.
Q: What is the maximum I2C clock speed supported?
A: The TMP117 supports I2C clock speeds up to 400 kHz.
Q: Can I use multiple TMP117 sensors on the same I2C bus?
A: Yes, you can use up to two TMP117 sensors by configuring their ADD0 pins to different states (GND or VDD) to assign unique I2C addresses.
By following this documentation, you can effectively integrate and use the TMP117 in your projects.