Como usar o Sensor de Temperatura MLX90614

Neste post vamos mostrar como usar o Sensor de Temperatura IR MLX90614, um sensor que faz a leitura da temperatura de objetos ou até mesmo a temperatura corporal sem que seja necessário o contato direto com o sensor.

MLX90614 se caracteriza por ser um sensor de alta precisão, podendo ser usado por exemplo em projetos de automação residencial, detectores de movimento e projetos automotivos, entre outras aplicações.

Sensor de Temperatura IR MLX90614

O Sensor de Temperatura IR MLX90614 (datasheet) tem uma faixa de medição entre -40 a 125°C para temperatura ambiente e entre -70 a 380°C para medição de temperatura de objetos. Ele é capaz de realizar as duas medições simultaneamente, e veremos isso logo abaixo nos testes desse módulo. A precisão da medição é de 0,5°C.

A comunicação com o microcontrolador é feita via interface I2C ocupando assim apenas 2 pinos do microcontrolador. A alimentação desse módulo é de 5V.

Conexão do MLX90614 ao Arduino

Para conexão do sensor de temperatura IR MLX90614 na placa Arduino Uno usaremos os pinos análogicos A4 (SDA) e A5 (SCL), que são os pinos de comunicação I2C.

No mesmo barramento I2C vamos ligar um display 16×2 I2C backlight azul, onde mostraremos o valor da temperatura ambiente e do objeto que aproximarmos do sensor:

No barramento I2C a “separação” dos dados recebidos do sensor de temperatura e enviados para o display LCD é possível pois cada componente tem um endereço I2C específico.

Programa leitor de temperatura

Para usar o circuito montado anteriormente, vamos usar as bibliotecas LiquidCrystal I2C e Adafruit MLX90614 que podem ser baixadas à partir da própria IDE do Arduino.

Para a instalação das bibliotecas, entre na IDE, em Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas e procure primeiro por Liquid Crystal I2C conforme a figura abaixo, clicando em seguida em Instalar:

Faça o mesmo procedimento com a biblioteca Adafruit MLX90614:

Com as bibliotecas instaladas, carregue o programa abaixo no Arduino. Atenção para a linha 11, que define o endereço I2C do display LCD 16×2. No meu caso o endereço é o 0x3B

Se nada aparecer no display, provavelmente o seu tem outro endereço. Utilize o programa I2CScanner, que eu usei neste post, e ele vai te mostrar o endereço I2C dos dispositivos conectados no barramento (inclusive o próprio sensor MLX90614, que no meu caso é o 0x5A). Veja como ficou a minha tela do Serial Monitor ao rodar o I2CScanner:

No programa abaixo, utilizamos as variáveis temp_amb e temp_obj para ler os valores das temperaturas ambiente e do objeto, respectivamente. Depois usamos essas variáveis dentro do loop para mostrar os valores tanto no display como no Serial Monitor.

//Programa: Sensor de temperatura I2C MLX90614 Arduino
//Autor: Arduino e Cia

#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include <LiquidCrystal_I2C.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

//Define o endereco I2C do display e qtde de colunas e linhas
LiquidCrystal_I2C lcd(0x3B, 16, 2);

//Array que desenha o simbolo de grau
byte grau[8] = {B00110, B01001, B01001, B00110,
                B00000, B00000, B00000, B00000,};

double temp_amb;
double temp_obj;

void setup()
{
  Serial.begin(9600);
  Serial.println("Sensor de temperatura MLX90614");

  //Inicializa o display LCD I2C
  lcd.init();
  lcd.backlight();

  //Atribui a "1" o valor do array "grau", que desenha o simbolo de grau
  lcd.createChar(1, grau);

  //Inicializa o MLX90614
  mlx.begin();
}

void loop()
{
  //Leitura da temperatura ambiente e do objeto
  //(para leitura dos valores em Fahrenheit, utilize
  //mlx.readAmbientTempF() e mlx.readObjectTempF() )
  temp_amb = mlx.readAmbientTempC();
  temp_obj = mlx.readObjectTempC();

  //Mostra as informacoes no display
  lcd.setCursor(0, 0);
  lcd.print("Ambiente:");
  lcd.setCursor(10, 0);
  lcd.print(temp_amb);
  lcd.setCursor(15, 0);
  lcd.write(1);
  lcd.setCursor(0, 1);
  lcd.print("Objeto:");
  lcd.setCursor(10, 1);
  lcd.print(temp_obj);
  lcd.setCursor(15, 1);
  lcd.write(1);

  //Mostra as informacoes no Serial Monitor
  Serial.print("Ambiente = ");
  Serial.print(temp_amb);
  Serial.print("*CtObjeto = ");
  Serial.print(temp_obj); Serial.println("*C");

  //Aguarda 1 segundo ate nova leitura
  delay(1000);
}

Logo após o carregamento do programa serão mostradas no display a temperatura ambiente e a temperatura do objeto que você aproximar do sensor. As temperaturas estão em graus Celsius.

Você também pode acompanhar esses dados a partir do Serial Monitor do Arduino, que vai mostrar uma tela como essa abaixo. Repare que a leitura da temperatura ambiente praticamente não se alterou mesmo quando aproximamos um objeto do sensor.

Gostou? Então confira outros posts utilizando sensores de temperatura aqui mesmo no Arduino e Cia!

4.8/5 - (21 votos)

Related posts

Como importar dados do Data logger em uma planilha

by Arduino e Cia
6 anos ago

Web Server com o módulo ESP8266 NodeMCU e DHT22

by Arduino e Cia
9 anos ago

Sensor de temperatura e umidade DHT22 (AM2302)

by Arduino e Cia
10 anos ago
Sair da versão mobile