MLX90614 je bezkontaktní teplotní senzor na bázi infračerveného záření, který dokáže měřit teplotu konkrétního objektu v rozmezí -70 °C – 382,2 °C a teplotu okolí -40 °C – 125 °C, aniž by došlo k fyzickému kontaktu se sledovaným objektem. Je vybaven I2C pro přenos údajů o teplotě do arduina. V modulu je zabudován 17bitový ADC, který na výstupu zobrazuje hodnoty s rozlišením 0,5 ˚C. Tento modul teplotního čidla je vybaven regulátorem napětí 3,3, sběrnicí I2C s interními pullup rezistory pro definování výchozího stavu a kondenzátorem pro filtraci šumu. Rozhodujícím faktorem infračervených teploměrů je zorné pole a vzdálenost měřeného objektu. Tyto dva faktory přímo ovlivňují přesnost zařízení.Každý infračervený teploměr má zorné pole známé jako FOV (Field Of View), což není nic jiného než zorný úhel, v němž se zprůměrují všechny teploty, které senzor vidí.
Vlastnosti senzoru:
- Provozní napětí: 3,6 V – 5,5 V
- Rozsah okolní teploty: -40 °C – 125 °C
- Teplotní rozsah objektu: -70°C – 380°C
- Rozlišení měření: 0.02°C
- Citlivost na ESD: 2 kV
- Proud zdroje: 25mA
- Rozlišení ADC: 17 bitů
- IR senzor je integrován s optickým filtrem, DSP a nízkošumovým zesilovačem pro jemné výstupní digitální signály.
- Jedná se o energeticky úsporný a vysoce citlivý senzor.
Zapojení senzoru.
Připojte napájecí pin Vin teplotního čidla k 5V pinu arduina a GND pin MLX90614 k GND pinu arduina.
Připojte piny SDA a SCL uvedeného IR senzoru k pinům A4 a A5 arduina.
Arduino uno | MLX90614 |
5V | VCC |
GND | GND |
SDA | A4 |
SCL | A5 |
Ještě budeme potřebovat knihovnu, která umožní ze senzorem komunikovat. Jedná se o Adafruit-MLX90614.
Čtení dat ze senzoru.
#include <Wire.h>
#include <Adafruit_MLX90614.h>
Adafruit_MLX90614 senzor = Adafruit_MLX90614();
void setup() {
Serial.begin(9600);
senzor.begin();
}
void loop() {
// výpis teploty okolí a bezdotykově snímané
Serial.println("Teplota z teplomeru: ");
Serial.print(senzor.readAmbientTempC());
Serial.print((char)176);
Serial.print("C");
Serial.println("Bezdotykova teplota: ");
Serial.print(senzor.readObjectTempC());
Serial.print((char)176);
Serial.print("C");
delay(1000);
}