The MLX90614 is a non-contact infrared thermometer designed to measure the temperature of objects without requiring direct physical contact. It utilizes advanced infrared sensing technology to provide accurate temperature readings. The sensor outputs temperature data digitally, making it easy to integrate into microcontroller-based systems.
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 Protocol | SMBus (I2C compatible) |
Field of View (FOV) | 35° |
Resolution | 0.02°C |
The MLX90614 is typically available 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 | Serial Data Line (I2C communication) |
4 | SCL | Serial Clock Line (I2C communication) |
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 Adafruit MLX90614 library:
#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
Fluctuating Readings
I2C Address Conflict
Q: Can the MLX90614 measure the temperature of liquids?
A: Yes, but ensure the sensor has a clear line of sight to the liquid's surface and avoid condensation on the sensor.
Q: What is the maximum distance for accurate measurements?
A: The effective range depends on the size of the target and the sensor's field of view. For small objects, the distance should be minimized for accurate readings.
Q: Can I use the MLX90614 with a 3.3V microcontroller?
A: Yes, the MLX90614 operates at 3.6V to 5V, but ensure the I2C lines are properly level-shifted if the microcontroller operates at 3.3V.
Q: How do I change the I2C address of the MLX90614?
A: The I2C address can be changed using specialized software tools and commands. Refer to the sensor's datasheet for detailed instructions.