

The MLX90614 is a non-contact infrared temperature sensor designed to measure the temperature of objects without requiring direct physical contact. It utilizes advanced infrared thermopile technology and an integrated signal processing unit to provide accurate temperature readings. The sensor is capable of outputting data via I2C or PWM, making it versatile and easy to integrate into a wide range of applications.








The MLX90614 is available in various models, but the following are the general specifications for the most commonly used version:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.6V to 5V |
| Operating Current | 1.5mA (typical) |
| Temperature Range (Object) | -70°C to +380°C |
| Temperature Range (Ambient) | -40°C to +125°C |
| Accuracy | ±0.5°C (typical, for 0°C to +50°C) |
| Communication Protocols | I2C, PWM |
| Field of View (FOV) | 35° |
| Resolution | 0.02°C |
The MLX90614 typically comes in a 4-pin TO-39 package. Below is the pinout:
| Pin | Name | Description |
|---|---|---|
| 1 | VDD | Power supply (3.6V to 5V) |
| 2 | VSS | Ground |
| 3 | SDA | I2C data line |
| 4 | SCL | I2C clock line |
0x5A. Ensure no address conflicts if multiple devices are on the same I2C bus.Below is an example of how to interface the MLX90614 with an Arduino UNO using the I2C protocol:
#include <Wire.h>
#include <Adafruit_MLX90614.h>
// Create an instance of the MLX90614 library
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
Serial.println("Initializing MLX90614...");
if (!mlx.begin()) {
Serial.println("Error: Could not find MLX90614 sensor. Check connections.");
while (1); // Halt execution if sensor initialization fails
}
Serial.println("MLX90614 initialized successfully.");
}
void loop() {
// Read object and ambient temperatures
double objectTemp = mlx.readObjectTempC();
double ambientTemp = mlx.readAmbientTempC();
// Print the temperatures to the Serial Monitor
Serial.print("Object Temperature: ");
Serial.print(objectTemp);
Serial.println(" °C");
Serial.print("Ambient Temperature: ");
Serial.print(ambientTemp);
Serial.println(" °C");
delay(1000); // Wait 1 second before the next reading
}
Adafruit_MLX90614 library is used for simplicity. Install it via the Arduino Library Manager.No Data or Incorrect Readings:
I2C Address Conflict:
0x5A. If multiple devices are on the same bus, ensure they have unique addresses.Inaccurate Temperature Readings:
Q: Can the MLX90614 measure the temperature of liquids?
A: Yes, but ensure the liquid is within the sensor's field of view and avoid splashes or condensation on the sensor.
Q: How far can the MLX90614 measure?
A: The effective range depends on the size of the target object and its emissivity. For small objects, the range is typically a few centimeters, while larger objects can be measured from farther distances.
Q: Can I use the MLX90614 with a 3.3V microcontroller?
A: Yes, the sensor operates down to 3.6V. However, ensure proper level shifting for I2C communication if the microcontroller operates at 3.3V.
Q: Is the MLX90614 waterproof?
A: No, the sensor is not waterproof. Use appropriate enclosures for outdoor or humid environments.