

The MLX90614 is a highly accurate, non-contact infrared temperature sensor designed to measure the temperature of objects without requiring physical contact. Manufactured by Melexis, this sensor uses infrared radiation to determine the temperature of an object and communicates the data via the I2C protocol. Its compact design and ease of use make it ideal for 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 |
| Communication Protocol | I2C and PWM |
| 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 range) |
| Field of View (FOV) | 35° |
| Resolution | 0.02°C |
| Current Consumption | 1.5mA (typical) |
| Dimensions | 8mm x 8mm x 5mm (TO-39 package) |
The MLX90614 typically comes in a 4-pin TO-39 package. Below is the pinout:
| Pin Number | 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 other devices on the I2C bus share this address, or reconfigure the address if necessary.Below is an example of how to interface the MLX90614 with an Arduino UNO using the I2C protocol. This example uses the Adafruit MLX90614 library.
| MLX90614 Pin | Arduino UNO Pin |
|---|---|
| VDD | 5V |
| VSS | GND |
| SDA | A4 |
| SCL | A5 |
#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
if (!mlx.begin()) {
Serial.println("Error: MLX90614 not detected. Check wiring!");
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
}
Sensor Not Detected
Inaccurate Temperature Readings
No Data on Serial Monitor
Can the MLX90614 measure the temperature of liquids?
What is the maximum distance for accurate measurements?
Can I use multiple MLX90614 sensors on the same I2C bus?
By following this documentation, you can effectively integrate the MLX90614 into your projects and troubleshoot common issues.