Lekce 27
Teplotní čidlo LM35

Úvod

Dalším senzorem, který převádí nějakou neelektrickou veličinu na elektrický analogový signál je teplotní čidlo LM35. Jedná se o integrovaný obvod, obsahující převodník teploty na napětí, s maximální nelinearitou ±0,75 °C v rozsahu teplot –55 °C až 150 °C. Často používaná varianta obvodu je zapouzdřena v malém plastovém pouzdře TO-92, ale existuje i verze ve větším plastovém pouzdře TO-220 a i verze v kovovém pouzdře TO-46.

teplotni cidlo LM35

Integrovaný obvod LM35 vyvinula americká společnost National Semiconductor. Je určen pro měření teploty ve stupních Celsia. Obvod má malý odběr proudu, napájecí proud je menší než 60 μA. Vzhledem k nízkému příkonu převodníku dochází jen k malému vlastnímu ohřevu součástky, což je důležité z hlediska přesnosti měření. Napájecí napětí převodníku   pokud se pohybuje v rozsahu 3 V až 5,5 V – nemusí být stabilizované a převodník lze tudíž napájet přímo z baterie, která se časem může částečně vybíjet. Pokud se mají měřit kladné i záporné teploty, tak zapojení je o něco složitější.

Použité komponenty

  • modul Arduino
  • USB kabel
  • teplotní čidlo LM35
  • LCD displej s I²C převodníkem
  • nepájivé pole
  • vodiče pro nepájivé pole + vodiče typu „samec-samice“

Princip

Abychom mohli získat poměrně přesný teploměr, je třeba si uvědomit, jak jsou výstupní hodnoty použitého čidla prezentovány ve stupních Celsia. Protože převodní koeficient činí 10 mV/°C, objeví se např. při teplotě 150 °C na výstupu napětí převodníku napětí 1500 mV. Mimochodem, v předešlém odstavci byla zmínka o měření záporných hodnot, tak jen pro zajímavost zde uvedeme, že bude-li měřená teplota záporná, např. –40 °C, bude i výstupní napětí záporné (–400 mV). Modul Arduino neumí na analogových pinech měřit záporná napětí, proto se v dalším zaměříme jen na měření kladných teplot.

Pro přepočet teploty t na napětí UOUT platí následující vzorec:

UOUT = 10·t,

kde teplota se dosazuje ve stupních Celsia a výsledné napětí vychází v milivoltech.

Modul Arduino načítá vstupní napětí svým 10-bitovým AD převodníkem v rozmezí 0–1023, pro určení teploty temp z hodnoty AD převodníku (imVal) tedy použijeme následující vzorec:

temp =  5  ·  1000  · imVal


1024 10
převod mezi
napětím a
rozsahem ADC
  milivolty
vs.
koef. čidla

temp = 0,48828125 · imVal


Načtené hodnoty z pinu A0 budeme v programu násobit konstantou 0,48828125 a výsledná hodnota bude odpovídat naměřené teplotě.


Postup experimentu

Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu. Spojení mezi displejem I²C LCD1602 a modulem Arduino, stejně tak jako propojení modulu Arduino a čidla LM35 znázorňují následující tabulky.

Blokové schéma

Blokove schema

Elektronické schéma

Elektronicke schema
I²C LCD1602 modul Arduino
UNO Mega
SDA A4 20
SCL A5 21
UCC 5V 5V
GND GND GND

LM35 modul Arduino
Analog Out A0
+ 5V
GND GND

Krok 2: V prostředí mBlock vytvoříme následující program. Při tvorbě programu je třeba znát adresu použitého I²C LCD displeje, neboť u každého příkazů pro LCD je třeba nastavit aktuální adresu. (viz rozbalovací pole „adr.“).


ikona vysvetleni Vysvětlení kódu

V počáteční části programu nastavíme parametry použitého LCD, jako jsou jeho rozměry (sloupce, řádky) a zapnutí podsvícení. Je třeba se zaměřit na správné nastavení adresy použitého I²C převodníku! Před spuštění hlavní nekonečné smyčky „opakuj stále“ jsou ještě nataveny proměnné temp a imVal. Jedna bude odpovídat vypočítané teplotě, druhá slouží pro načtení hodnoty z AD převodníku modulu Arduino. V hlavní nekonečné smyčce je načítáno teplotní čidlo, které je připojené na pin A0. Získaná hodnota je následně vynásobena konstantou 0,48828125, abychom získali hodnotu teploty ve stupních Celsia. Získaná hodnota teploty je vypsána na druhý řádek displeje. V minulém programu, kde jsme nevěděli, jak bude zobrazovaný text dlouhý, jsme tuto řádku mazali přepsání několika mezer. Zde je situace podobná, neboť nevíme, zda bude teplota řádově jednotky nebo desítky (popř. stovka) stupňů. Možná jsme si v minulé lekci všimli, že při přepisování mezerami docházelo k blikání. Proto zde zkusíme opět text přepisovat, ale za posledním znakem přidáme dvě mezery, kdyby došlo, že se zobrazí kratší text. Tyto mezery jsou přidány za znak C, který se zobrazuje na konec řádky. Za zmínku ještě stojí vložení symbolu stupně. Jelikož není dobré tyto speciální symboly vkládat pomocí znaku, je zde využito vložení pomocí ASCII kódu. Podobně lze vložit i další nestandardní znaky z ASCII tabulky.


Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem tlacitko nahrat.

Krok 4: Po spuštění programu uvidíme na LCD displeji hodnotu aktuální teploty. Pro sledování směny teploty je možné třeba stisknout čidlo LM35 mezi prsty.

Pohled na experiment