Termômetro infravermelho usando MLX90614, Arduino e OLED
Neste projeto, você aprenderá a fazer seu próprio termômetro infravermelho usando o sensor de temperatura infravermelho MLX90614 e a placa Arduino. Você pode exibir a leitura de temperatura no display OLED SSD1306 de 0,96″. Anteriormente, usamos sensores de temperatura como DS18B20, LM35 e MAX6675. No entanto, esses sensores de temperatura detectam a temperatura apenas quando o calor é aplicado a eles diretamente em sua superfície. Mas se você deseja medir a temperatura de um corpo muito quente como uma chama ou ferro quente, você não pode contar com esses sensores.
Precisamos de alguns sensores que possam medir a temperatura sem nenhum contato e sentir a temperatura por meio de infravermelho é o melhor método. Para isso, você pode usar o termômetro infravermelho MLX90614 da Melexis para este projeto. O sensor MLX90614 usa sensor de temperatura sem contato para medir os dados de temperatura sem nenhum contato físico com uma superfície específica.
Neste projeto, faremos a interface do MLX90614 com a placa Arduino e usaremos o diodo laser para apontar o sensor para um objeto específico. A taxa de atualização e a sensibilidade do MLX90614 são muito altas que podem fornecer a leitura em uma fração de segundo. Você pode usar o MLX90614 para medir a temperatura de um objeto quente como máquinas, chamas, ferro quente, CPU do dispositivo. Você pode até usar este sensor para fins de laboratório, ou seja, o MLX90614 também pode ser usado como um termômetro infravermelho para medir a temperatura corporal. Devido ao COVID-19, a demanda por este sensor aumentou nos últimos meses. O Sensor MLX90614 requer alguma calibração no Código Arduino que aprenderemos neste post
Conteudo
Lista de Materiais
Todos os componentes de que você precisa para este projeto podem ser pedidos online na Amazon e ou no MercadoLivre. O link de compra de componentes também é fornecido.
Nome dos Componentes | Descrição | Qtd | ||
---|---|---|---|---|
1 | Arduino Pro Mini | Arduino Pro Mini 328 – 3.3V/8MHz | 1 | https://amzn.to/3piwncI |
2 | IR Temperature Sensor | MLX90614 Contactless Temperature Sensor | 1 | ML (Link) |
3 | OLED Display | SSD1306 0.96″ I2C OLED Display | 1 | https://amzn.to/3rQtphv |
4 | Laser Diode | Laser Diode Module | 1 | https://amzn.to/3b2C9KD |
5 | Battery | 3.7V, 1000 mAh Lithium Ion Battery | 1 | ML (Link) |
6 | Connecting Wires | Jumper Wires | 20 | https://amzn.to/3b2Cop1 |
7 | Switch | Push Switch | 1 | ML (Link) |
Sensor de temperatura infravermelho sem contato MLX90614
O MLX90614 é um termômetro infravermelho para medições de temperatura sem contato, capaz de medir temperaturas entre -70 a 380 ° C. O sensor usa um chip detector de termopilha sensível a infravermelho e o ASIC de condicionamento de sinal integrado em um único chip. O termômetro vem calibrado de fábrica com uma saída SMBus digital que dá acesso total à temperatura medida na (s) faixa (s) de temperatura completa (s) com uma resolução de 0,02 ° C. Embora funcione no protocolo SMBus, mas pode ser usado com pinos I2C.
Configuração de pinagem MLX90614
O sensor MLX90614 possui 4 pinos. A tensão de trabalho do sensor é de 3,6 V a 5 V, mas a versão de 3,3 V também está disponível. Possui pinos I2C como SDA e SCL. O SDA é o pino de dados serial e SCL é o pino do relógio serial usado para a comunicação I2C.
Especificações
1. Tensão operacional: 3,6 V a 5 V
2. Corrente de alimentação: 1,5 mA
3. Faixa de temperatura do objeto: -70 ° C a 382 ° C
4. Faixa de temperatura ambiente: -40 ° C a 125 ° C
5. Precisão: 0,02 ° C
6. Campo de visão: 80 °
7. Distância entre o objeto e o sensor: aprox. 2cm-5cm
Para aprender mais tecnicamente sobre este sensor, você pode consultar o Datasheet MLX90614
Princípio de funcionamento de MLX90614
Conforme mencionado anteriormente, o sensor MLX90614 pode medir a temperatura de um objeto com qualquer contato físico. Isso muitas vezes é possível com uma lei chamada Lei de Stefan-Boltzmann, que afirma que cada um dos objetos e seres vivos emite energia IV e, portanto, a intensidade dessa energia IV emitida será diretamente proporcional à temperatura daquele objeto ou ser vivo . Portanto, o sensor MLX90614 calcula a temperatura de um objeto medindo a quantidade de energia IV emitida por ele.
Aplicações de MLX90614
1. Medições de temperatura sem contato de alta precisão
2. Sensor de conforto térmico para sistema de controle de ar condicionado móvel
3. Elemento sensor de temperatura para ar de edifícios residenciais, comerciais e industriais
4. Detecção de ângulo cego automotivo
5. Controle de temperatura industrial de peças móveis
6. Saúde
7. Monitoramento de gado
8. Detecção de movimento
9. Relé/Alerta térmico
10. Medição da temperatura corporal
Diagrama de circuito: termômetro infravermelho usando MLX90614 Arduino e OLED
O diagrama de circuito para fazer um termômetro infravermelho usando MLX90614, Arduino, display OLED e bateria é fornecido abaixo.
O circuito possui Mini Placa Arduino Pro que é utilizada devido ao tamanho pequeno e compacto. O Arduino Pro Mini Board possui 2 versões, uma delas funciona a 5V, 16MHz, e a outra a 3,3V, 8MHz. Você pode selecionar o Arduino Pro Mini de 3,3 V, 8 MHz ao alimentar o dispositivo com a bateria de íon de lítio 3,7 V. O pino RAW do Arduino pro-Mini é conectado diretamente ao pino VCC da bateria por meio de um interruptor.
Para apontar o objeto, você pode usar o Laser Diode Breakout Board. O Módulo de Diodo Laser é um módulo de baixo custo com comprimento de onda de 650nm e voltagem operacional de 3V-5V. A cabeça do laser é composta por um tubo emissor de luz, lentes condensadoras e luva de cobre ajustável. Ele pode funcionar diretamente após se conectar a uma fonte de alimentação CC. Em nosso circuito, conectamos o pino de saída do diodo laser ao D12 do Arduino Pro Mini. Para saber mais sobre o Módulo Laser Diode, você pode conferir um dos projetos Laser Diode Arduino.
O sensor de temperatura infravermelho sem contato MLX90614 e o display I2C OLED de 0,96″ são conectados ao pino I2C da Pro Mini Board. Os pinos SDA e SCL são conectados a A4 e A5 do Pro Mini, respectivamente. O display OLED e o MLX90614 funcionam a 3,3 V, portanto, seu VCC pode ser conectado a 3,3 V do Pro Mini.
Biblioteca Arduino MLX90614
O Arduino IDE requer a biblioteca MLX90614 para fazer a interface do MLX90614 com a placa Arduino. A biblioteca é construída por Sparkfun e Adafruit ambos. O Adafruit & Sparkfun MLX90614 é a biblioteca que faz interface com o termômetro infravermelho sem contato MLX90614 em uma interface de 2 fios semelhante a I2C (SMBus).
Você pode usar qualquer uma das bibliotecas para aplicativos de interface. A biblioteca possui um código de exemplo para a interface do sensor MLX90614 com o Arduino. O sensor é calibrado de fábrica e, portanto, funciona como um módulo de sensor plug and play para acelerar os processos de desenvolvimento.
1. Baixe a Biblioteca Adafruit MLX90614
2. Baixe a Biblioteca Sparkfun MLX90614
No meu caso, estou usando a biblioteca Adafruit MLX90614.
Código-fonte / Programa
O código-fonte ou programa para MLX90614 com Arduino é fornecido abaixo. Para fazer o upload do código para a miniplaca Arduino Pro, você precisa do módulo conversor USB-TTL (módulo FTDI).
Além da Biblioteca MLX90614, você também precisa da Biblioteca para exibição OLED. O display OLED SSD1306 requer duas bibliotecas. Você pode baixar as bibliotecas no link abaixo.
1. Biblioteca Adafruit SSD1306: Download
2. Biblioteca Adafruit GFX: Download
#include <Wire.h> #include <Adafruit_MLX90614.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // Largura da tela OLED, em pixels #define SCREEN_HEIGHT 64 // Altura da tela OLED, em pixels #define OLED_RESET -1 // Redefina o pino # (ou -1 se estiver compartilhando o pino de redefinição do Arduino) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); #define laser 12 Adafruit_MLX90614 mlx = Adafruit_MLX90614(); double temp_amb; double temp_obj; void setup() { Serial.begin(9600); mlx.begin(); //Inicialize MLX90614 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //inicializar com o addr I2C 0x3C (128x64) Serial.println("Sensor de temperatura MLX90614"); pinMode(laser, OUTPUT); //Conecte o LASER digitalWrite(laser, LOW); display.clearDisplay(); display.setCursor(25,15); display.setTextSize(1); display.setTextColor(WHITE); display.println(" Termômetro"); display.setCursor(25,35); display.setTextSize(1); display.print("Inicializando"); display.display(); delay(5000); } void loop() { //Leitura da temperatura ambiente e temperatura do objeto //para ler os valores Fahrenheit, use //mlx.readAmbientTempF() , mlx.readObjectTempF() ) temp_amb = mlx.readAmbientTempC(); temp_obj = mlx.readObjectTempC(); digitalWrite(laser, HIGH); //Serial Monitor Serial.print("Temperatura ambiente = "); Serial.println(temp_amb); Serial.print("Temperatura do Objeto = "); Serial.println(temp_obj); display.clearDisplay(); display.setCursor(25,10); display.setTextSize(1); display.setTextColor(WHITE); display.println(" Temperatura"); display.setCursor(25,30); display.setTextSize(2); display.print(temp_obj); display.print((char)247); display.print("C"); display.display(); delay(1000); }
Testando Arduino Térmica
Após fazer o upload do código para o Arduino Pro-Mini Board usando o módulo FTDI, o dispositivo está pronto para o teste. Agora, você pode LIGAR o circuito pressionando o botão de ação. Depois de ligado, o dispositivo levará 5 segundos para ser inicializado, o que será exibido no visor OLED. Assim que a inicialização for concluída, o laser será LIGADO e o OLED começará a exibir a temperatura.
Olá parabéns pelo trabalho, bem didático e fácil compreensão. Poderia me ajudar indicando como fazer para usar mais de um sensor de temperatura no I2C?
Sim, pode o protocolo i2c permite conectar vários sensores iguais, mais com endereço diferente no sensor