Lekce 16 - Arduino - Měření teploty infračerveným teploměrem MLX90614
V minulé lekci, Arduino - Měření teploty a vlhkosti čidlem DHT11, jsem si představili čidlo teploty a vlhkosti DHT11, které jsme využili v novém projektu, kde mohl uživatel zadat, kterou z hodnot má čidlo měřit.
V dnešní lekci HW Arduino tutoriálu si představíme další možnost, jak změřit teplotu a představíme si infračervený teploměr MLX90614. Popíšeme si jeho charakteristiky a poté si ukážeme, jak jej zapojit a naprogramovat.
Teploměr MLX90614
Z mnoha důvodů někdy nemůžeme využít dotykový teploměr, jakým je například model DS18B20. Na trhu však existuje pěkný bezkontaktní snímač teploty, infračervený teploměr MLX90614, který můžeme použít pro měření teploty hned dvěma způsoby:
- Teploměr nám umožňuje změřit teplotu okolí.
- Také jím ale můžeme měřit teplotu objektu na dálku.
Specifikace teploměru
Podívejme se nejprve na specifikaci našeho modelu, již uvádí výrobce:
Rozsah měření pro teplotu okolí | -40 °C až + 125 °C |
Rozsah měření pro teplotu objektu bezkontaktně | -70 °C až + 380 °C |
Přesnost | 0.5 °C |
Rozlišení | 0.02 °C |
Komunikace | I2C |
Jak můžeme vidět, je to dobrý snímač teploty, který bude nepostradatelný zejména, pokud chceme měřit teplotu horkých předmětů. Využijeme ho tedy například pro kontrolu při vaření jídla nebo spíše pro měření teploty komponent na PCB desce.
Při měření teploty dodržujeme vzdálenost 1 cm!
Zapojení senzoru
Zapojení je jednoduché, protože senzor komunikuje prostřednictvím I2C protokolu, jak jsme si mohli přečíst v tabulce výše. Zapojení, které si ukážeme, platí pro Arduino UNO a Nano:
Arduino | Senzor |
---|---|
5V / 3,3V | VIN |
GND | GND |
SCL | A5 |
SDA | A4 |
Pro jiné desky je třeba pohlídat si SCL a SDA piny.
Zapojení na naší desce je následující:
Programování MLX90614 teploměru
Kód je jednoduchý, budeme však potřebovat knihovnu od Adafruit - Adafruit_MLX90614. Knihovnu si můžeme pomocí uvedeného linku stáhnout a nainstalovat do svého Arduino IDE.
Přidání knihovny do projektu jsme si připomínali v lekci Měření teploty a vlhkosti čidlem DHT11, kam se můžete na správný postup podívat, pokud byste s instalací měli problémy.
Pro komunikaci využijeme nově přidanou knihovnu
Adafruit_MLX90614.h
a zároveň využijeme také knihovnu
Wire.h
, která umožňuje Arduinu komunikovat se senzory
využívající I2C protokol. Obě si na začátku našeho programu nejprve
importujeme:
#include <Wire.h> #include <Adafruit_MLX90614.h>
V dalším řádku kódu vytvoříme instanci senzoru z knihovny:
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
Obslužný program bude opravdu jednoduchý, hlavičku tímto máme hotovou a
můžeme se přesunout do funkce setup()
.
Ve funkci setup()
inicializujeme sériovou komunikaci a
zároveň komunikaci se senzorem:
void setup() { Serial.begin(9600); mlx.begin(); }
Nejprve jsem nastavili Baudovu rychlost pro sériový monitor, poté jsme
pomocí příkazu begin()
výše vytvořenou instanci čidla
aktivovali.
Hlavní smyčka
Opět máme hotovo, zbývá nám doplnit funkci loop()
. Ukažme
si nejprve, jak zajistit měření okolní teploty a vzdáleného
předmětu.
Pro získání teploty okolí nyní použijeme příkaz:
mlx.readAmbientTempC();
A pro získání teploty objektu bezkontaktně voláme příkaz:
mlx.readObjectTempC();
Ve zbylé části funkce loop()
pak už jen doplníme výpis
zjištěných hodnot a sekundovou prodlevu, před započetím nového cyklu.
Celý kód hlavní smyčky pak vypadá takto:
void loop() { Serial.println("Temperature from MLX90614:"); Serial.print("Ambient: "); Serial.print(mlx.readAmbientTempC()); Serial.println(" °C"); Serial.print("Contactless: "); Serial.print(mlx.readObjectTempC()); Serial.println(" °C"); Serial.println(); delay(1000); }
A ukažme si, jaký výsledek našeho měření po spuštění programu získáme:
Princip fungování teploměru MLX90614
Máme hotový další funkční projekt. Pojďme si ale ještě v závěru krátce popsat, jak infračervený teploměr MLX90614 funguje.
Několikrát jsme zmínili, že se jedná o infračervený teploměr. Tento druh teploměru využívá předpoklad, že každé těleso se do jisté míry chová jako černé těleso. Černé těleso je takové, které pohlcuje všechno záření všech vlnových délek, jež dopadá na jeho povrch. Černé těleso zároveň vyzařuje elektromagnetické záření podle Planckova zákona. Ten řeší závislost intenzity tohoto záření na vlnové délce.
Název černé těleso nám pak napovídá, že jde o takový předmět, který neodráží žádné světlo. Průběh závislosti intenzity na vlnové délce totiž závisí na teplotě tělesa. Proto, když například více a více zahříváme kov, postupně se mění jeho barva z červena do bílé. To značí, že vlnová délka s narůstající teplotou klesá. Ukažme si to na obrázku z Wikipedie:
Černé těleso je samozřejmě aproximací, téměř každý předmět nějaké to světlo odráží, dokonce i nejtmavší předmět na světě. Infračervený teploměr tak využívá poznatek, že každé těleso má v závislosti na teplotě charakteristický průběh vyzařované energie a na základě toho určuje teplotu tělesa bezdotykově.
V příští lekci, Arduino - Komunikace přes Bluetooth, se naučíme navázat komunikaci pomocí Bluetooth.