quarta-feira, 19 de outubro de 2016

Arduino termômetro sem contato MLX90614




O que foi usado?

Sensor MLX90614;
Arduino UNO;
Display LCD 16x2 com módulo I2C;
Protoboard (para facilitar a conexão do display e sensor ao arduino);
Jumpers diversos;

Ligação:



O que faz?

Lê a temperatura ambiente e a temperatura do objeto, pessoa, etc que esteja na frete do sensor, a cerca de 2 ou 3cm de distância, e mostra no display.

Datasheet do sensor
Biblioteca do sensor
Biblioteca do display

Código (adaptado do código que acompanha a biblioteca do sensor)


// adaptado do exemplo da bibliteca:
// https://github.com/adafruit/Adafruit-MLX90614-Library

byte grau[8] = {   0b00110, // byte para criar o caracter grau
                   0b01001,
                   0b01001,
                   0b00110,
                   0b00000,
                   0b00000,
                   0b00000,
                   0b00000 };
// bibliotecas             
#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include <LiquidCrystal_I2C.h>

// instanciando objetos lcd e mlx
LiquidCrystal_I2C lcd(0x27,16,2);
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {

  mlx.begin(); // inicialieza sens. de temp
  lcd.init(); // inicializa displau
  lcd.createChar(1, grau); // cria caracter ( º )
   
  lcd.backlight();
  lcd.print(" Teste MLX90614 ");
  delay(1000);
  lcd.clear();
}

void loop() {

  // escreve temp ambiente

  lcd.setCursor(0,0);  
  lcd.print("Amb.: "); 
  lcd.print(mlx.readAmbientTempC()); 
  lcd.print (" ");
  lcd.write(1); 
  lcd.print ("C");
  
  // escreve temp do objeto 
  
  lcd.setCursor(0,1);
  lcd.print("Obj.: ");
  lcd.print(mlx.readObjectTempC());
  lcd.print (" ");
  lcd.write(1);
  lcd.print ("C");
  
  delay(500);
}