MLX90615 thermometer readings on LCD project

In this article we create a thermometer based project using an LCD shield, Arduino Uno and an MLX90615 sensor.

Lets discuss the sensor first

The MLX90615 is a miniature infrared thermometer for non-contact temperature measurements. Both the IR sensitive thermopile detector chip and the signal conditioning ASIC are integrated in the same miniature TO-46 can.

Here is a module that I bought

The infrared thermometer comes factory calibrated with a digital SMBus output giving full access to the measured temperature in the complete temperature range(s) with a resolution of 0.02 °C. The sensor achieves an accuracy of ±0.2°C within the relevant medical temperature range. The user can choose to configure the digital output to be PWM.

Features and benefits

Factory calibrated in wide temperature range: -20 to 85°C for sensor temperature and -40 to 115°C for object temperature
High accuracy of 0.5°C over wide temperature range (0..+50 C for both Ta and To)
Medical accuracy of 0.2°C in a limited temperature range
Measurement resolution of 0.02°C
SMBus compatible digital interface for fast temperature readings and building sensor networks
Customizable PWM output for continuous reading
3V supply voltage with power saving mode

 

Parts List

I used the following parts for this project

Description Link
Arduino Uno 1pcs UNO R3 CH340G+MEGA328P for Arduino UNO R3 (NO USB CABLE)
LCD Keypad shield 1PCS LCD Keypad Shield LCD 1602 Module Display For Arduino
MLX90615 1PCS MLX90615 Digital Infrared Temperature Sensor for Arduino
connecting wire 40pcs Dupont jumper wire cable 30cm male to male,female to female,male to female Dupont jump wire line 2.54mm breadboard cable

 

 

Connection

An easy sensor to connect to an LCD – here we show this

lcd shield and mlx90615 layout

lcd shield and mlx90615 layout

 

Code

This MLX90615 sensor code comes from the following library which I installed – https://github.com/skiselev/MLX90615

 

#include <Wire.h>
#include <LiquidCrystal.h>
#include <mlx90615.h>
 
//setup for the LCD keypad shield
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
MLX90615 mlx = MLX90615();
 
void setup() 
{
  //init serial for some debug
  Serial.begin(9600);
  Serial.println("Melexis MLX90615 infra-red temperature sensor test");
  //init MLX90615 sensor
  mlx.begin();
  Serial.print("Sensor ID number = ");
  Serial.println(mlx.get_id(), HEX);
  //init LCD
  lcd.begin(16,2);
  //line 1 - temperature
  lcd.setCursor(0,0);
  lcd.print("AMB = ");
  //line 2 - humidity
  lcd.setCursor(0,1);
  lcd.print("OBJ = ");
}
 
void loop() 
{
  //display temperature on lcd
 
  lcd.setCursor(0,0);
  lcd.print("AMB = ");
  lcd.print(mlx.get_ambient_temp());
  lcd.print(" *c");
  lcd.setCursor(0,1);
  lcd.print("OBJ = ");
  lcd.print(mlx.get_object_temp());
  lcd.print(" *c");
 
  delay(500);
}

 

Output

The following video shows the sensor in action, watch the object temperature rise as I put my finger near the sensor. You will also notice the ambient temperature not changing.

 

Links

https://www.melexis.com/-/media/files/documents/datasheets/mlx90615-datasheet-melexis.pdf

 

Related