Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use mlx90614: Examples, Pinouts, and Specs

Image of mlx90614
Cirkit Designer LogoDesign with mlx90614 in Cirkit Designer

Introduction

The MLX90614 is a non-contact infrared temperature sensor designed to measure the temperature of objects without requiring direct physical contact. Manufactured by Melexis, this sensor utilizes infrared thermopile technology and integrates a low-noise amplifier, 17-bit ADC, and a powerful DSP for accurate temperature readings. It communicates via the I2C protocol, making it easy to interface with microcontrollers and other digital systems.

Explore Projects Built with mlx90614

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
ESP32-Based Multi-Sensor Health Monitoring System with Bluetooth Connectivity
Image of circuit diagram: A project utilizing mlx90614 in a practical application
This circuit features an ESP32-WROOM-32UE microcontroller as the central processing unit, interfacing with a variety of sensors and modules. It includes a MAX30100 pulse oximeter and heart-rate sensor, an MLX90614 infrared thermometer, an HC-05 Bluetooth module for wireless communication, and a Neo 6M GPS module for location tracking. All components are powered by a common voltage supply and are connected to specific GPIO pins on the ESP32 for data exchange, with the sensors using I2C communication and the modules using UART.
Cirkit Designer LogoOpen Project in Cirkit Designer
Battery-Powered Raspberry Pi Pico GPS Tracker with Sensor Integration
Image of Copy of CanSet v1: A project utilizing mlx90614 in a practical application
This circuit is a data acquisition and communication system powered by a LiPoly battery and managed by a Raspberry Pi Pico. It includes sensors (BMP280, MPU9250) for environmental data, a GPS module for location tracking, an SD card for data storage, and a WLR089-CanSAT for wireless communication. The TP4056 module handles battery charging, and a toggle switch controls power distribution.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32 CAM Infrared Temperature Monitoring System with Audio Alert
Image of robot: A project utilizing mlx90614 in a practical application
This circuit features an ESP32 CAM module interfaced with an MLX90614 infrared temperature sensor and a buzzer. The ESP32 CAM is programmed via an FTDI Programmer, which also provides power to the ESP32. The buzzer is controlled by one of the ESP32's GPIO pins, and the MLX90614 communicates with the ESP32 via the I2C protocol using two GPIO pins for SDA and SCL.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino Mega 2560-Based Autonomous Robot with GPS, Bluetooth, and Environmental Sensors
Image of botfinal: A project utilizing mlx90614 in a practical application
This circuit is a robotic system controlled by an Arduino Mega 2560, which uses multiple sensors including temperature sensors (MLX90614), gas sensors (MQ-136), a GPS module, and a Bluetooth module to navigate and detect environmental conditions. The system drives motors via an L298N motor driver and displays information on a 16x2 I2C LCD, with the ability to receive commands via Bluetooth.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with mlx90614

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of circuit diagram: A project utilizing mlx90614 in a practical application
ESP32-Based Multi-Sensor Health Monitoring System with Bluetooth Connectivity
This circuit features an ESP32-WROOM-32UE microcontroller as the central processing unit, interfacing with a variety of sensors and modules. It includes a MAX30100 pulse oximeter and heart-rate sensor, an MLX90614 infrared thermometer, an HC-05 Bluetooth module for wireless communication, and a Neo 6M GPS module for location tracking. All components are powered by a common voltage supply and are connected to specific GPIO pins on the ESP32 for data exchange, with the sensors using I2C communication and the modules using UART.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Copy of CanSet v1: A project utilizing mlx90614 in a practical application
Battery-Powered Raspberry Pi Pico GPS Tracker with Sensor Integration
This circuit is a data acquisition and communication system powered by a LiPoly battery and managed by a Raspberry Pi Pico. It includes sensors (BMP280, MPU9250) for environmental data, a GPS module for location tracking, an SD card for data storage, and a WLR089-CanSAT for wireless communication. The TP4056 module handles battery charging, and a toggle switch controls power distribution.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of robot: A project utilizing mlx90614 in a practical application
ESP32 CAM Infrared Temperature Monitoring System with Audio Alert
This circuit features an ESP32 CAM module interfaced with an MLX90614 infrared temperature sensor and a buzzer. The ESP32 CAM is programmed via an FTDI Programmer, which also provides power to the ESP32. The buzzer is controlled by one of the ESP32's GPIO pins, and the MLX90614 communicates with the ESP32 via the I2C protocol using two GPIO pins for SDA and SCL.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of botfinal: A project utilizing mlx90614 in a practical application
Arduino Mega 2560-Based Autonomous Robot with GPS, Bluetooth, and Environmental Sensors
This circuit is a robotic system controlled by an Arduino Mega 2560, which uses multiple sensors including temperature sensors (MLX90614), gas sensors (MQ-136), a GPS module, and a Bluetooth module to navigate and detect environmental conditions. The system drives motors via an L298N motor driver and displays information on a 16x2 I2C LCD, with the ability to receive commands via Bluetooth.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications

  • Non-contact temperature measurement in industrial and medical applications
  • Thermal imaging systems
  • HVAC (Heating, Ventilation, and Air Conditioning) monitoring
  • Consumer electronics, such as smart thermostats
  • Automotive climate control systems

Technical Specifications

The MLX90614 is available in various models, but the following specifications are common across most variants:

Parameter Value
Operating Voltage 3.6V to 5.5V
Communication Protocol I2C (default address: 0x5A)
Object Temperature Range -70°C to +380°C
Ambient Temperature Range -40°C to +125°C
Accuracy ±0.5°C (typical, for 0°C to +50°C range)
Field of View (FOV) 35° (standard model)
Resolution 0.02°C
Current Consumption 1.5mA (typical)
Sleep Mode Current 2µA

Pin Configuration

The MLX90614 is typically available in a 4-pin TO-39 package. Below is the pinout description:

Pin Name Description
1 VDD Power supply (3.6V to 5.5V)
2 VSS Ground
3 SDA I2C data line
4 SCL I2C clock line

Usage Instructions

Connecting the MLX90614 to a Circuit

  1. Power Supply: Connect the VDD pin to a 3.6V to 5.5V power source and the VSS pin to ground.
  2. I2C Communication: Connect the SDA and SCL pins to the corresponding I2C pins on your microcontroller. Use pull-up resistors (typically 4.7kΩ) on both SDA and SCL lines if not already present on your board.
  3. Bypass Capacitor: Place a 0.1µF ceramic capacitor between VDD and VSS for noise filtering.

Interfacing with Arduino UNO

The MLX90614 can be easily interfaced with an Arduino UNO using the Wire library. Below is an example code to read the object temperature:

#include <Wire.h>

// MLX90614 default I2C address
#define MLX90614_I2C_ADDR 0x5A

// MLX90614 register for object temperature
#define MLX90614_TOBJ1 0x07

void setup() {
  Wire.begin(); // Initialize I2C communication
  Serial.begin(9600); // Start serial communication for debugging
  Serial.println("MLX90614 Temperature Sensor Test");
}

void loop() {
  float objectTemp = readTemperature(MLX90614_TOBJ1); // Read object temperature
  Serial.print("Object Temperature: ");
  Serial.print(objectTemp);
  Serial.println(" °C");
  delay(1000); // Wait 1 second before the next reading
}

// Function to read temperature from the MLX90614
float readTemperature(uint8_t reg) {
  Wire.beginTransmission(MLX90614_I2C_ADDR); // Start communication with sensor
  Wire.write(reg); // Request data from the specified register
  Wire.endTransmission(false); // Send repeated start condition
  Wire.requestFrom(MLX90614_I2C_ADDR, (uint8_t)3); // Request 3 bytes of data

  if (Wire.available() < 3) {
    return NAN; // Return NaN if data is not available
  }

  uint16_t data = Wire.read(); // Read low byte
  data |= Wire.read() << 8; // Read high byte and combine
  uint8_t pec = Wire.read(); // Read PEC (Packet Error Code, not used here)

  // Convert raw data to temperature in Celsius
  return (data * 0.02) - 273.15;
}

Important Considerations

  • Ensure proper pull-up resistors are used on the I2C lines.
  • Avoid placing the sensor in direct sunlight or near heat sources, as this may affect accuracy.
  • The sensor's field of view (FOV) should be considered when positioning it to ensure accurate readings.
  • Use a stable power supply to minimize noise and improve measurement accuracy.

Troubleshooting and FAQs

Common Issues

  1. No Data from Sensor:

    • Ensure the I2C connections (SDA, SCL) are correct and secure.
    • Verify that the pull-up resistors are properly connected.
    • Check the sensor's power supply voltage (3.6V to 5.5V).
  2. Inaccurate Temperature Readings:

    • Ensure the sensor is not exposed to reflective surfaces or direct sunlight.
    • Verify that the sensor is within its specified operating temperature range.
  3. I2C Communication Errors:

    • Confirm the I2C address (default: 0x5A) matches the one in your code.
    • Check for conflicting devices on the I2C bus.

FAQs

Q: Can the MLX90614 measure the temperature of liquids?
A: Yes, but the sensor must have a clear line of sight to the liquid's surface. Ensure the liquid is not reflective to avoid inaccurate readings.

Q: How can I reduce noise in the temperature readings?
A: Use a stable power supply, add a bypass capacitor (0.1µF) near the sensor, and average multiple readings in your code.

Q: Can I change the I2C address of the MLX90614?
A: Yes, the I2C address can be changed by writing to the sensor's EEPROM. Refer to the manufacturer's datasheet for detailed instructions.

Q: What is the maximum distance for accurate temperature measurement?
A: The effective range depends on the size and emissivity of the target object. For small objects, the sensor should be placed closer to ensure accurate readings.