sábado, 8 de novembro de 2014

Medir temperatura com sensor infravermelho MLX90614 e Arduino.

Medir temperatura com sensor infravermelho MLX90614 e Arduino.

Medir ou detectar a variação de temperatura usando a plataforma microcontrolada Arduino ou um microcontrolador é bem simples, mas extremamente interessante, principalmente ao dar os primeiros passos com seu Arduino ou nos estudos sobre microcontroladores 8051, PIC, Atmel, entre outros. 

Mas conseguir medir a temperatura de um objeto sem tocá-lo, apenas apontando um determinado sensor para ele, é mais surpreendente ainda. Isso é possível de ser feito usando o sensor MLX90614, devido sua capacidade de mensurar a quantidade de luz infravermelha, ou radiação infravermelha, que sai de um determinado objeto. 

O MLX90614 é um sensor infravermelho capaz de medir a temperatura de -70°C até 382,2°C, com resolução de 17bits, ou seja, ele é capaz medir a variação de temperatura sem entrar em contato com o objeto com uma resolução de 0.0034°C

Você pode comprar o Sensor MLX90614 no Aliexpress por menos de 5 dólares, clique aqui e confira.

Medir temperatura com sensor infravermelho MLX90614 e Arduino.
 
O sensor MLX90614 é um dispositivo I2C, igual aos outros sensores de temperatura digital, como o DS18B20, porém o MLX90614 não funciona com a biblioteca Wire, sendo necessário usar outra ou adaptar a Wire para ele. Ele também é o sensor propriamente dito, sendo necessário usar alguns resistores pull-up nas linhas de clock e dados. Você também pode adquirir o sensor já pronto para uso. Como este aqui!

No final do artigo vou disponibilizar uma biblioteca I2CMaster que vai funcionar perfeitamente para este sensor, ou seja, você não vai ter que quebrar a cabeça para fazer a sua. A única coisa que deve fazer e salvar a biblioteca na pasta de bibliotecas do Arduino. 

Para conectar o sensor MLX90614 no Arduino é necessário usar o pino SDA, que é o pino analógico 4 e o SCL, que é o pino analógico 5. No Arduino Mega, o SDA é o pino digital 20 e o SCL é o digital 21. Veja a figura abaixo para entender como ele deve ser ligado. 

Medir temperatura com sensor infravermelho MLX90614 e Arduino.
 
Note que foi usado um resistor de 4.7K do SDA para a alimentação de 3.3V e outro do SCL para a alimentação de 3.3V, juntamente com um capacitor de 0.1uf entre a fonte de alimentação e o terra, como é indicado no datasheet do sensor. 

Você pode comprar o sensor já embutido em uma plaquinha com os componentes acima já soldados, bastando conectar os pinos do arduino na placa. Confira a figura!

Medir temperatura com sensor infravermelho MLX90614 e Arduino.
 

Código

#include <i2cmaster.h>


void setup(){
Serial.begin(9600);
Serial.println("Setup...");

i2c_init(); //Inicializa a comunicação I2C
PORTC = (1 << PORTC4) | (1 << PORTC5);// Habilita os pullups
}

void loop(){
int dev = 0x5A<<1;
int data_low = 0;
int data_high = 0;
int pec = 0;

i2c_start_wait(dev+I2C_WRITE);
i2c_write(0x07);

i2c_rep_start(dev+I2C_READ);
data_low = i2c_readAck(); //Faz a leitura de 1 byte e depois envia ack
data_high = i2c_readAck(); //Faz a leitura de 1 byte e depois envia ack
pec = i2c_readNak();
i2c_stop();

//Converte os bytes high e low juntos e processa a temperatura, MSB é um bit de erro que é ignorado para temperaturas
double tempFactor = 0.02; // 0.02 graus por LSB (resolução do MLX90614)
double tempData = 0x0000; // Zera os dados 
int frac; // dados apos o ponto decimal

// Mascara o bit de erro do high byte, e depois move para esquerda 8 bits e soma o low byte.
tempData = (double)(((data_high & 0x007F) << 8) + data_low);
tempData = (tempData * tempFactor)-0.01;

float celcius = tempData - 273.15;

Serial.print("Celcius: ");
Serial.println(celcius);

delay(1000); // Espera 1 segundo antes de fornecer uma nova saida.
}

Antes de tudo, certifique-se de a biblioteca I2CMaster já está na pasta de bibliotecas do Arduino, só então abra o programa Arduino e copie e cole o código e envie. 

Baixe a biblioteca I2CMaster e o código, clique aqui.

O Código exibe como saída a temperatura em graus Celsius via serial, então não esqueça de abrir o monitor serial e de apontar o sensor para o objeto que quer medir a  temperatura. 

Viu como é simples e interessante o sensor MLX90614? Não deixe de estudar o código e dar uma lida na biblioteca para aumentar seu conhecimento. Também estude e circuito e veja o que você consegue melhorar. 

Confira também:

   As melhores lojas do Aliexpress para quem gosta de Eletrônica.
   20 sites para comprar da China com segurança. 
   Os melhores sites para importar livros com frete grátis. 
   Os melhores sites para comprar Ímãs de Neodímio.

É isso galera! Até a próxima.
Sobre: Fellipe Bastos (Catrak)

Fellipe Bastos: Mineiro, graduado em Ciência e Tecnologia, programador C/C++ e Engenheiro Eletricista em formação. Tem interesse pelas áreas da robótica, eletrônica de potência, sistemas de controle e afins.

Confira também:

0 comentários: