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.
O 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!