

The MAX6682, manufactured by Analog Devices, is a high-accuracy, low-power temperature sensor with a digital output. It communicates via a 2-wire I2C interface, making it easy to integrate into microcontroller-based systems. With a temperature range of -40°C to +125°C and a resolution of 0.0625°C, the MAX6682 is ideal for applications requiring precise temperature monitoring. Common use cases include industrial automation, HVAC systems, consumer electronics, and environmental monitoring.








The following table outlines the key technical details of the MAX6682:
| Parameter | Value |
|---|---|
| Supply Voltage (Vcc) | 3.0V to 5.5V |
| Temperature Range | -40°C to +125°C |
| Temperature Resolution | 0.0625°C |
| Accuracy | ±1°C (typical) |
| Communication Interface | I2C (2-wire) |
| Current Consumption | 250 µA (typical) |
| Output Format | 12-bit digital temperature data |
| Package | 8-pin SOIC |
The MAX6682 is available in an 8-pin SOIC package. The pin configuration and descriptions are as follows:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (3.0V to 5.5V) |
| 2 | GND | Ground |
| 3 | SDA | Serial Data Line for I2C communication |
| 4 | SCL | Serial Clock Line for I2C communication |
| 5 | ALERT | Over-temperature alert output (active low) |
| 6 | ADD0 | I2C address selection bit 0 |
| 7 | ADD1 | I2C address selection bit 1 |
| 8 | NC | No connection (leave unconnected or grounded) |
Below is an example of how to interface the MAX6682 with an Arduino UNO using the Wire library:
#include <Wire.h>
#define MAX6682_ADDRESS 0x48 // Default I2C address of the MAX6682
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
}
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(MAX6682_ADDRESS);
Wire.write(0x00); // Point to the temperature register
Wire.endTransmission();
Wire.requestFrom(MAX6682_ADDRESS, 2); // Request 2 bytes of temperature data
if (Wire.available() == 2) {
int msb = Wire.read(); // Most significant byte
int lsb = Wire.read(); // Least significant byte
// Combine MSB and LSB, then convert to temperature
int16_t rawTemp = (msb << 8) | lsb;
return rawTemp * 0.0625; // Convert to Celsius (resolution is 0.0625°C)
}
return NAN; // Return NaN if data is unavailable
}
No Temperature Data Received
Inaccurate Temperature Readings
I2C Communication Errors
ALERT Pin Not Functioning
Q: Can the MAX6682 operate at 3.3V?
A: Yes, the MAX6682 supports a supply voltage range of 3.0V to 5.5V, making it compatible with 3.3V systems.
Q: How do I calculate the temperature from raw data?
A: The raw 12-bit data can be converted to temperature by multiplying it by the resolution (0.0625°C).
Q: What is the maximum I2C clock speed supported?
A: The MAX6682 supports I2C clock speeds up to 400kHz (Fast Mode).
Q: Can I use multiple MAX6682 sensors on the same I2C bus?
A: Yes, you can use up to four MAX6682 sensors by configuring the ADD0 and ADD1 pins to set unique I2C addresses.