IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Infračervený teplomer MLX90614 pre Arduino

V minulej lekcii, Arduino a práca s tlačidlami , sme sa naučili pracovať s tlačidlom.

MLX90614

Z mnohých dôvodov niekedy nemôžem využiť dotykový teplomer (napríklad DS18B20). Rozhodol som sa teda kúpiť tento pekný bezkontaktný snímač teploty - MLX90614, ktorý meria 2 teploty:

  • teplotu okolia a
  • teplotu objektu na diaľku.

Špecifikácia

Jeho špecifikácia je nasledovné:

rozsah merania -40 ° C ... + 125 ° C pre teplotu okolia
-70 ° C ... + 380 ° C pre teplotu objektu bezkontaktne
presnosť 0.5 ° C
rozlíšenie 0.02 ° C
komunikácia Aj 2 C
Pri meraní teploty dodržiavajte vzdialenosť 1 cm!

Myslím, že je to dobrý snímač teploty pre horúce predmety, ako je napríklad varenie jedla alebo meranie teploty komponentov na PCB.

Zapojenie senzora

Zapojenie je jednoduché, pretože senzor komunikuje prostredníctvom I 2 C protokolu, pozri tabuľku, resp. obrázok. Zapojenie platí pre Arduino UNO a Nano. Pre iných dosky treba postrážiť si SCL a SDA piny.

Arduino senzor
5V / 3,3V VIN
GND GND
SCL A5
SDA A4
Zapojenie na doske je nasledujúci:
Zapojenie teplotného senzora na doske Arduino - Arduino

Kód

Kód je jednoduchý, budete potrebovať knižnicu od Adafruit - Adafruit_MLX90614.h.

Pre komunikáciu využijeme spomínanú knižnicu a zároveň nezabudneme na Wire.h, ktorá umožňuje Arduino komunikovať so senzormi využívajúce I 2 C protokol:

#include <Wire.h>
#include <Adafruit_MLX90614.h>

Inicializujeme senzor z knižnice:

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

Vo funkcii setup() inicializujeme sériovú komunikáciu a zároveň komunikáciu so senzorom:

void setup()
{
  Serial.begin(9600);
  mlx.begin();
}

Pre získanie teploty okolia použijeme príkaz:

mlx.readAmbientTempC()

Pre získanie teploty objektu bezkontaktne:

mlx.readObjectTempC()

Funkcia loop():

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 ukážme si ako meranie vyzerá:

Ukážka meranie teploty s Arduino - Arduino

Ako to funguje?

Infračervený teplomer využíva predpoklad, že každé teleso sa do istej miery správa ako čierne teleso. To je teleso, ktoré pohlcuje všetko žiarenie všetkých vlnových dĺžok, ktoré dopadá na jeho povrch. Zároveň vyžaruje elektromagnetické žiarenie podľa Planckova zákona (závislosť intenzity na vlnovej dĺžke). Čierne sa nazýva preto, že neodráža žiadne svetlo. Priebeh závislosti intenzity na vlnovej dĺžke závisí od teploty telesa, preto napr. Čím viac zahrievame kov, postupne sa mení farba kovu z červena do bielej (vlnová dĺžka s narastajúcou teplotou klesá). Ukážme si to na obrázku z Wikipédie:

Závislosť intenzity žiarenia od vlnovej dĺžky. Zdroj: wikipedia - Arduino

Čierne teleso je samozrejme aproximáciou, takmer každý predmet nejaké to svetlo odráža (dokonca aj najtmavší predmet na svete). Infračervený teplomer využíva poznatok, že každé teleso v závislosti od teploty má charakteristický priebeh závislosti vyžarovanej energie na teplote, a na základe toho určuje teplotu telesa bezdotykovo.

V budúcej lekcii, Arduino a práca s tlačidlami - Knižnica , si pre prácu s tlačidlom vytvoríme knižnicu, aby sa nám s tlačidlom pohodlnejšie pracovalo.


 

Predchádzajúci článok
Arduino a práca s tlačidlami
Všetky články v sekcii
Arduino
Preskočiť článok
(neodporúčame)
Arduino a práca s tlačidlami - Knižnica
Článok pre vás napísal michal
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor sa venuje vzdelávaniu a má rad novinky vo vzdelávani.
Aktivity