

The MLX90614 is a non-contact infrared temperature sensor manufactured by Melexis. It is designed to measure the temperature of objects without requiring physical contact, making it ideal for applications where direct measurement is impractical or unsafe. The sensor uses advanced infrared thermopile technology and integrates a low-noise amplifier, 17-bit ADC, and a powerful DSP for accurate temperature readings.








The following table outlines the key technical details of the MLX90614ESF-AAA-000-TU:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.6V to 5.5V |
| Current Consumption | 1.5 mA (typical) |
| Object Temperature Range | -70°C to +380°C |
| Ambient Temperature Range | -40°C to +85°C |
| Accuracy | ±0.5°C (typical, for 0°C to +50°C range) |
| Field of View (FOV) | 35° |
| Communication Interfaces | I2C, PWM |
| Resolution | 0.02°C |
| Package Type | TO-39 metal can |
The MLX90614 has four pins, as described in the table below:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VDD | Power supply (3.6V to 5.5V) |
| 2 | VSS | Ground (0V) |
| 3 | SDA | I2C data line / PWM output |
| 4 | SCL | I2C clock line |
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
if (!mlx.begin()) {
Serial.println("Error: MLX90614 not detected. 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
}
Sensor Not Detected:
Inaccurate Temperature Readings:
No Output on Serial Monitor:
Q1: Can the MLX90614 measure the temperature of liquids?
A1: Yes, but the sensor must have a clear line of sight to the liquid surface. Ensure the liquid is not reflective.
Q2: Can I use the MLX90614 with a 3.3V microcontroller?
A2: Yes, the sensor supports a minimum operating voltage of 3.6V. Use a level shifter for I2C lines if needed.
Q3: How far can the MLX90614 measure temperature?
A3: The effective range depends on the size and emissivity of the target object. For small objects, the range is typically a few centimeters, while larger objects can be measured from farther distances.
Q4: Can I use multiple MLX90614 sensors on the same I2C bus?
A4: Yes, but you must change the default I2C address of each sensor. This can be done by writing to the sensor's EEPROM.
By following this documentation, you can effectively integrate the MLX90614 into your projects and troubleshoot common issues.