Kategorie: Obvody mikrokontrolérů
Počet zobrazení: 9996
Komentáře k článku: 0
Měření teploty a vlhkosti na Arduino - výběr způsobů
Chcete-li vytvořit domácí meteorologickou stanici nebo teploměr, musíte se naučit, jak spárovat desku Arduino a zařízení pro měření teploty a vlhkosti. Měření teploty lze řešit pomocí termistoru nebo digitálního senzoru DS18B20, ale pro měření vlhkosti používat složitější zařízení - senzory DHT11 nebo DHT22. V tomto článku vám ukážeme, jak měřit teplotu a vlhkost pomocí Arduino a těchto senzorů.
Měření termistoru
Nejjednodušší způsob stanovení teploty je použití termistor. Jedná se o typ rezistoru, jehož odpor závisí na okolní teplotě. Existují termistory s kladným a záporným teplotním koeficientem odporu - PTC (také nazývané pozistory) a NTC-termistory.
V níže uvedeném grafu vidíte teplotní závislost odporu. Přerušovaná čára ukazuje závislost negativního termistoru TCS (NTC) a plná čára pozitivního termistoru TCS (PTC).
Co tady vidíme? První věc, která upoutá vaše oko, je to, že plán termistoru PTC je porušen a bude obtížné nebo nemožné měřit řadu teplotních hodnot, ale plán termistoru NTC je víceméně rovnoměrný, i když je zjevně nelineární. Co to znamená? Použití termistoru NTC je snadnější měřit teplotu, protože je snazší zjistit funkci, kterou se jeho hodnoty mění.
Chcete-li převést teplotu na odpor, můžete hodnoty vzít ručně, ale to je obtížné udělat doma a pro stanovení skutečných hodnot teploty média potřebujete teploměr. V datových listech některých komponent je taková tabulka uvedena například pro řadu termistorů NTC od Vishay.
Poté můžete překlad uspořádat pomocí větví pomocí funkce, pokud ... jindy nebo rozvaděče. Pokud však v datových listech takové tabulky neexistují, musíte vypočítat funkci, kterou se odpor mění s rostoucí teplotou.
K popisu této změny existuje Steinhart-Hartova rovnice.
kde A, B a C jsou termistorové konstanty určené měřením tří teplot s rozdílem nejméně 10 stupňů Celsia. Současně různé zdroje naznačují, že pro typický 10 kΩ termistor NTC jsou rovny:
Koeficient B - beta se počítá na základě měření odporu pro dvě různé teploty. Je to uvedeno v datovém listu (jak je znázorněno níže) nebo vypočítáno samostatně.
V tomto případě je B ve tvaru:
To znamená, že koeficient byl vypočítán na základě údajů získaných při měření odporu při teplotách 25 a 100 stupňů Celsia, což je nejběžnější varianta. Pak se vypočítá podle vzorce:
B = (ln (R1) - ln (R2)) / (1 / T1 - 1 / T2)
Níže je uvedeno typické schéma připojení termistoru k mikrokontroléru.
Zde R1 je konstantní odpor, termistor je připojen ke zdroji energie a data jsou přijímána ze středu mezi nimi, schéma podmíněně ukazuje, že signál je veden na svorku A0 - to analogový vstup Arduino.
Pro výpočet odporu termistoru můžete použít následující vzorec:
R termistoru = R1⋅ ((Vcc / Voutput) −1)
Chcete-li přeložit do jazyka, který je pro arduino srozumitelný, musíte si uvědomit, že arduino má 10bitový ADC, takže maximální digitální hodnota vstupního signálu (napětí 5V) bude 1023. Potom podmíněně:
-
Dmax = 1023;
-
D je skutečná hodnota signálu.
Pak:
R termistoru = R1⋅ ((Dmax / D) −1)
Teď použijeme tento výpočet pro výpočet odporu a poté vypočítáme teplotu termistoru pomocí beta rovnice v programovacím jazyce pro Arduino. Náčrt bude vypadat takto:
DS18B20
Ještě populárnější pro měření teploty pomocí.Arduino našel digitální senzor DS18B20. Komunikuje s mikrokontrolérem přes jednovodičové rozhraní, k jednomu vodiči můžete připojit několik senzorů (až 127) a pro přístup k nim budete muset zjistit ID každého ze senzorů.
Poznámka: ID byste měli znát, i když používáte pouze 1 senzor.
Schéma připojení senzoru ds18b20 k Arduinu vypadá takto:
K dispozici je také parazitní režim napájení - jeho schéma zapojení vypadá takto (místo tří kabelů potřebujete dva dráty):
V tomto režimu není zaručena správná funkce při měření teplot nad 100 stupňů Celsia.
Digitální teplotní senzor DS18B20 se skládá z celé sady uzlů, stejně jako u jiných SIMS. Jeho interní zařízení můžete sledovat níže:
Chcete-li s tím pracovat, musíte si stáhnout knihovnu Onewire pro Arduino a pro samotný senzor se doporučuje použít knihovnu DallasTemperature.
Tento příklad kódu demonstruje základy práce s 1 teplotním senzorem, výsledek ve stupních Celsia je výstupem přes sériový port po každém čtení.
DHT11 a DHT22 - senzory vlhkosti a teploty
Tyto senzory jsou oblíbené a často se používají k měření vlhkosti a teploty okolí. V následující tabulce jsme uvedli jejich hlavní rozdíly.
Schéma připojení je velmi jednoduché:
-
1 závěr - výživa;
-
2 závěr - data;
-
3 závěr - nepoužito;
-
4 závěr - obecný drát.
Pokud máte senzor ve formě modulu, bude mít tři výstupy, ale nepotřebujete rezistor - je již připájen k desce.
K práci potřebujeme knihovnu dht.h, která není ve standardní sadě, takže je třeba ji stáhnout a nainstalovat do složky knihoven ve složce s arduino IDE. Podporuje všechny senzory v této rodině:
-
DHT 11;
-
DHT 21 (AM2301);
-
DHT 22 (AM2302, AM2321).
Příklad použití knihovny:
Závěr
Vytvoření vlastní stanice pro měření teploty a vlhkosti je dnes díky platformě Arduino velmi jednoduché. Náklady na takové projekty jsou 3-4 stovky rublů. Pro výdrž baterie a bez výstupu do počítače lze použít znakové zobrazení (popsali jsme je v nedávném článku), pak si můžete vytvořit přenosné zařízení pro použití doma i v autě. Napište do komentářů, co dalšího byste se chtěli dozvědět o jednoduchých domácích řemeslech na arduino!
Viz také toto téma:Populární senzory pro Arduino - spojení, diagramy, náčrtky
Viz také na e.imadeself.com
: