Jak na vodotěsné teplotní čidlo DS18B20?
Čidla, které zvládnou měřit teplotu už jsme tu měli (DHT22 a DHT11). I přes jejich zajímavé vlastnosti a například to, že si poradí i s měřením vlhkosti, mají jednu nevýhodu. Snímače DHT nejsou vodotěsné, proto nejsou vhodné pro měření teploty kapalin a do znečištěného prostředí. Nyní si představíme digitální teplotní čidlo DS18B20, které je vodotěsné a dokonce zvládne měřit na setiny °C. Pro někoho mohou být tyto vlastnosti rozhodující právě pro koupi snímače DS18B20 namísto čidel DHT. Proto si ukážeme, jak s DS18B20 správně pracovat a používat čidlo s Arduinem.
zapojení teplotního čidla DS18B20
Stejně jako u čidla DHT, bude potřeba zapojit 3 vodiče. 2 vodiče se postarají o napájení čidla a poslední vodič (žlutý) slouží pro přenos dat na Arduino desku po sběrnici OneWire. Čidlo DS18B20 je připojeno delším kabelem a umí pracovat na sběrnici, proto pro žlutý vodič použijeme tzv. Pull-up rezistor. Pokud vás zajímá více o Pull-up rezistoru, podívejte se na Arduino návod Jak pracovat se senzory DHT22 a DHT11.
Čidlo DS18B20 můžeme zapojit také pomocí dvou vodičů v parazitním režimu. Vzhledem k tomu, že tento režim neumožňuje přenos dat na větší vzdálenosti a kabel čidla má stejně vodiče 3, použijeme pro náš příklad normální režim. Na úvod je vše jasné a rovnou se pustíme do zapojování.
Budeme potřebovat následující Arduino věci:
- Arduino deska (například levný precizní klon Arduino UNO R3 + USB kabel)
- Teplotní čidlo vodotěsné DS18B20
- 1 x rezistor 10 kΩ pro Pull-up
- Propojovací vodiče a kontaktní pole
- Propojovací vodiče M/M
Nelekejte se, že na obrázku zapojení níže není metrový kabel pro snímač, takto čidlo vypadá bez nerezového pouzdra. Jednotlivé součástky propojte podle schématu. Kabel čidla končí odizolovanými vodiči. Ty můžete napájet například na pin lištu, kterou pak připojíte rovnou do kontaktního pole.
Programování čidla DS18B20
Následující program má jednoduchý úkol – zjistit naměřené hodnoty teploty a vypsat je po sériové lince. Nezapomeňte importovat knihovnu pro čidlo DS18B20 a OneWire! Knihovny jsou ke stažení na konci Arduino návodu. Podrobný návod, jak importovat knihovnu naleznete v článku Jak správně naimportovat knihovnu.
V programu je použitý také příkaz „(sensors.getTempCByIndex(0))“. Někteří se smíří s tím, že kód opíšou a jsou rádi, že funguje. Pro ty zvídavější tu mám menší vyprávění. Žlutý vodič, který přenáší data ze senzoru na desku, tvoří tzv. sběrnici OneWire (proto je nutné použít Pull-up rezistor). Na této sběrnici může být zapojeno více senzorů (na jednom pinu Arduina více čidel DS18B20). Aby Arduino deska rozpoznala, ze kterého senzoru data právě přijímá, musí se senzory tzv. indexovat (dát jim adresu). Pokud je zapojený pouze jeden senzor, nepotřebujeme znát jeho adresu, a zkrátka řekneme, že se jedná o první senzor. A protože se v informatice čísluje od 0, tak ji tam rovnou napíšeme.
#include <OneWire.h> #include <DallasTemperature.h> // pin, kde bude senzor zapojený #define pin 2 // nastavení komunikace senzoru přes pin OneWire oneWire(pin); // převedeme onewire do Dallasu DallasTemperature sensors(&oneWire); void setup(void) { // nastavení rychlosti sériové komunikace Serial.begin(9600); // zapnutí senzoru sensors.begin(); } void loop(void) { // požádáme senzor o hodnotu teploty sensors.requestTemperatures(); Serial.print("Teplota je: "); // tento řádek je vysvětlený v článku Serial.print(sensors.getTempCByIndex(0)); Serial.println(" stupnu Celsia"); delay(1000); }
Pokud vše funguje správně, dostane se vám následujícího výpisu. Teploměr jsem během měření zahříval v ruce. :)
Zvídavý bastlíř si vyzkouší jak to funguje, ale také co se děje, když je něco špatně ;). Co se například stane, když nezapojíte Pull-up rezistor? V mém případě, jsem dostal hodnoty teploty takové, na které v ČR jen velmi obtížně dosáhneme...
Zkušenosti s DS18B20
Používání teplotního čidla DS18B20 je poměrně jednoduché. Cena tohoto snímače je nízká a užitné vlastnosti široké, tak nachází uplatnění v mnoha Arduino projektech. Délka kabelu čidla může být nakonec i přes 100 m. V další práci můžete zkusit doplnit program o zobrazování teploty například na displeji a také podmínky, kde se bude vyhodnocovat naměřená teplota. Pak už zvládnete využít tento teploměr v projektu, jako je měření teploty s alarmem třeba v uzáku :).
Pokud narazíte na něco, co vám není v návodu jasné, zeptejte v sekci komentářů nebo se podívejte na další Arduino návody na stránce www.hwkitchen.cz/arduino-navody/.
Bastlení ZDAR!