Digital Infrared Thermometer circuit using a Thermopile

Non-contact infrared thermometers are widely used in medical and industrial application. In medical applications, digital thermometers have been replacing mercury stick thermometers due to more convenient measurements and also due to the hazard of mercury in legacy thermometers. The ear type thermometers, for instance, are non-contact thermometers that measure the infrared energy radiated from the ear canal. They use thermopiles and thermistors to measure the temperature. Thermopiles generate an output voltage proportional to the energy absorbed. The thermistor measures the cold-junction temperature of the thermopile. The thermopile and thermistor measurements are used to calculate the compensated temperature. This post will show you how simple it is to build a digital infrared thermometer circuit using a thermopile.
Digital Infrared Thermometer using a thermopile

The Melexis MLX90614 is a digital non-contact thermopile for non-contact temperature measurements. Both the IR sensitive thermopile detector chip and the signal conditioning ASIC are integrated in the same TO-39 can. Integrated into the MLX90614 are a low noise amplifier, 17-bit ADC and powerful DSP unit thus achieving high accuracy and resolution of the thermometer.

The MLX90614 is easy to use; it interfaces to microntrollers using I2C. For this post, we bought the thermopile together with a break-out board. The board allows a bigger voltage range to be used. The thermopile requires 4 connections: SDA, SCL, GND and Vin. Here is a photo of the thermopile on the break-out board:

To keep it very simple, we used an Arduino Nano to talk to the MLX90614 thermopile. That’s not all!! The people at Adafruit has made a library for the MLX90614, which means that we didn’t have to look into the MLX90614 I2C addresses to use it 🙂
The MLX90614 library repository can be found at: MLX90614 Library
All you need to do is, download the library and add it to the Arduino IDE. The library even contains a simple code to read the Thermopile and which display the result via the serial monitor.

#include <Wire.h>
#include <Adafruit_MLX90614.h>
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

To make it more exciting, we connected an LCD to the Arduino and displayed the results on there.
Thermopile LCD Schematics

And… to hide all the messy connections, we put everything in a box. We powered the Arduino with a 9V PP3 battery:
Digital Infrared Thermometer

LCD code

Reading the thermopile is pretty straight forward, thanks to the Adafruit library:

void loop() {
  lcd.setCursor(0, 0);
  lcd.print("Object = "); lcd.print(mlx.readObjectTempC()); lcd.print((char)223); lcd.print("C");
  lcd.setCursor(0, 1);
  lcd.print("Ambient= "); lcd.print(mlx.readAmbientTempC()); lcd.print((char)223); lcd.print("C");

A complete copy of the code, we used, can be downloaded here: Thermopile code

If you have any comments or questions, contact us at

Add a Comment

Your email address will not be published. Required fields are marked *

Show Buttons
Hide Buttons