Back to Sensors & Actuators Series

IR Non-Contact Temperature: MLX90614

April 10, 2026 Wasil Zafar 9 min read

MLX90614 deep dive — IR thermopile physics, I2C interfacing, emissivity calibration, field of view, Arduino code, and medical thermometry.

Contents

  1. Working Principle
  2. Electrical Characteristics
  3. Interfacing with MCU
  4. Calibration
  5. Code Example
  6. Real-World Applications
  7. Limitations

Working Principle

The MLX90614 from Melexis is a non-contact infrared thermometer in a small TO-39 metal can. It contains two chips: an infrared thermopile detector and a signal-conditioning ASSP (Application-Specific Signal Processor). Every object above absolute zero emits infrared radiation proportional to its temperature (Stefan–Boltzmann law). The MLX90614 focuses this IR radiation onto its thermopile through a built-in optical filter, measures the resulting voltage, compensates for its own case temperature, and outputs the object temperature via I2C (SMBus) or PWM.

Analogy: Imagine pointing a digital camera at an object, but instead of capturing visible light, it measures the invisible heat glow and converts it to a temperature reading — all without touching the surface.

Electrical Characteristics

ParameterValue
Supply Voltage3.3 V (MLX90614xCx) or 5 V (MLX90614xAx)
Object Temperature Range−70 to +380 °C
Ambient Temperature Range−40 to +125 °C
Accuracy (Object)±0.5 °C (0 to +50 °C range)
Resolution0.02 °C
Field of View (FoV)90° (BAA), 35° (BCI), 10° (BCF)
InterfaceI2C (SMBus) / PWM
Current Draw~1.5 mA
Response Time~100 ms

Interfacing with an MCU

Connect SDA and SCL to the I2C bus with pull-up resistors (4.7 kΩ). Default I2C address is 0x5A. The sensor has two temperature outputs:

  • Tambient: Internal die temperature (cold-junction reference)
  • Tobject: Measured surface temperature via IR
Field of View matters: The BAA variant (90° FoV) averages a wide area. For measuring small objects at a distance, use BCF (10° FoV) or add an external lens/tube to narrow the detection cone.

Calibration

The MLX90614 is factory-calibrated against a black body radiator. For real-world accuracy:

  • Emissivity setting: Default is 1.0 (black body). Reduce for shiny surfaces (e.g., polished metal ≈ 0.1–0.3). Write to the emissivity register via I2C.
  • Distance-to-spot ratio: At 10 cm with 90° FoV, the measured spot is ~20 cm diameter. Ensure the target fills the FoV.
  • Thermal settling: Allow 1–2 minutes after power-on for the sensor to reach thermal equilibrium.

Code Example

/*
 * MLX90614 Non-Contact IR Thermometer — Arduino
 * Requires: Adafruit MLX90614 library
 * Wiring: SDA → A4, SCL → A5 (Arduino Uno), 3.3V, GND
 */
#include <Wire.h>
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {
    Serial.begin(9600);
    if (!mlx.begin()) {
        Serial.println("MLX90614 not found!");
        while (1);
    }
    Serial.println("MLX90614 IR Thermometer Ready");
    Serial.print("Emissivity: ");
    Serial.println(mlx.readEmissivity());
}

void loop() {
    float ambientC = mlx.readAmbientTempC();
    float objectC  = mlx.readObjectTempC();

    Serial.print("Ambient: ");
    Serial.print(ambientC, 2);
    Serial.print(" C  |  Object: ");
    Serial.print(objectC, 2);
    Serial.println(" C");

    delay(500);
}

Real-World Applications

Medical Non-Contact Thermometry

The MLX90614 became globally recognised during the COVID-19 pandemic as the sensing element in non-contact forehead thermometers. Its fast 100 ms response, medical-grade ±0.5 °C accuracy in the human body range (32–42 °C), and contactless operation made it ideal for rapid screening at hospitals, airports, and offices.

MedicalContactlessScreening

Limitations

  • Emissivity dependent: Shiny or reflective surfaces give inaccurate readings without emissivity correction.
  • Wide FoV (BAA): The 90° default variant averages a large area — cannot precisely measure small objects without narrow-FoV variants.
  • Ambient sensitivity: Rapid ambient temperature changes (e.g., moving from AC to outdoor sun) cause drift until thermal equilibrium is restored.
  • Not for transparent materials: Glass, plastics, and water are partially transparent to IR, leading to systematically low readings.
  • I2C address conflicts: Default 0x5A cannot be changed without EEPROM programming. Multiple sensors on one bus require address reconfiguration.