

The TMP01FPZ, manufactured by Analog Devices, is a low-power, programmable temperature controller designed for precise temperature monitoring and control. It features adjustable temperature set points, making it ideal for applications requiring accurate thermal management. The TMP01 is equipped with dual temperature set points (high and low) and open-collector outputs for temperature threshold signaling. Its low power consumption and ease of integration make it suitable for a wide range of applications.








| Parameter | Value |
|---|---|
| Supply Voltage (Vcc) | 4.5 V to 13.2 V |
| Supply Current | 500 µA (typical) |
| Temperature Range | -55°C to +150°C |
| Temperature Accuracy | ±1°C (typical) |
| Output Type | Open-collector |
| High/Low Set Point Range | Programmable via external resistors |
| Output Drive Capability | 20 mA (maximum) |
| Package Type | 8-lead PDIP, SOIC, or CERDIP |
The TMP01 is an 8-pin device. Below is the pinout and description:
| Pin No. | Pin Name | Description |
|---|---|---|
| 1 | V+ | Positive supply voltage (4.5 V to 13.2 V). |
| 2 | SET HIGH | High-temperature set point input. Connect to a resistor divider network. |
| 3 | SET LOW | Low-temperature set point input. Connect to a resistor divider network. |
| 4 | GND | Ground reference. |
| 5 | OUT HIGH | Open-collector output for high-temperature threshold. |
| 6 | OUT LOW | Open-collector output for low-temperature threshold. |
| 7 | TEMP OUT | Analog voltage output proportional to temperature. |
| 8 | NC | No connection. Leave unconnected or grounded. |
The following example demonstrates how to read the TEMP OUT pin using an Arduino UNO:
// TMP01 Arduino Example: Reading Temperature from TEMP OUT Pin
// Connect TEMP OUT to Arduino analog pin A0
// Ensure proper pull-up resistors are used for OUT HIGH and OUT LOW pins
const int tempOutPin = A0; // TMP01 TEMP OUT connected to A0
float voltage = 0.0; // Variable to store the voltage reading
float temperature = 0.0; // Variable to store the calculated temperature
void setup() {
Serial.begin(9600); // Initialize serial communication
}
void loop() {
// Read the analog voltage from TEMP OUT
int analogValue = analogRead(tempOutPin);
// Convert the analog value to voltage (assuming 5V reference)
voltage = (analogValue / 1023.0) * 5.0;
// Convert voltage to temperature (TMP01 scale: 20 mV/°C, 500 mV offset)
temperature = (voltage - 0.5) / 0.02;
// Print the temperature to the Serial Monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
delay(1000); // Wait for 1 second before the next reading
}
No Output from OUT HIGH or OUT LOW Pins:
Incorrect Temperature Readings:
Noise in TEMP OUT Signal:
Q: Can the TMP01 be used with a 3.3 V system?
A: No, the TMP01 requires a minimum supply voltage of 4.5 V. Consider using a level shifter if interfacing with a 3.3 V system.
Q: How do I calculate the resistor values for the set points?
A: Use the TMP01 datasheet's formulas to determine the resistor divider values based on the desired temperature thresholds.
Q: What is the maximum distance between the TMP01 and the microcontroller?
A: Keep the distance as short as possible to minimize signal degradation. Use shielded cables if long distances are unavoidable.
Q: Can the TMP01 drive a relay directly?
A: No, the open-collector outputs cannot directly drive a relay. Use a transistor or MOSFET as an intermediary driver.
This concludes the TMP01 documentation. For further details, refer to the official datasheet provided by Analog Devices.