Jedním z nejjednodušších a nejlevnějších způsobů, jak přidat do projektu Arduino snímání teploty, je použití 1-drátového teplotního čidla DS18B20. Tyto snímače jsou poměrně přesné a ke své činnosti nepotřebují žádné externí komponenty. Stačí tedy jen několik málo připojení a kód pro Arduino a během chvilky budete snímat teplotu!

DS18B20 1-Wire Temperature Sensor

DS18B20 je teplotní senzor s 1-Wire rozhraním vyráběný společností Dallas Semiconductor Corp. Unikátní rozhraní 1-Wire® vyžaduje pouze jeden digitální pin pro obousměrnou komunikaci s mikrokontrolérem.

Senzor se obvykle dodává ve dvou provedeních. Jeden, který se dodává v pouzdře TO-92, vypadá přesně jako běžný tranzistor. Druhý ve stylu vodotěsné sondy, který může být užitečnější, když potřebujete měřit něco daleko, pod vodou nebo pod zemí.

Typy teplotního čidla DS18B20

Teplotní čidlo DS18B20 je poměrně přesné a ke své činnosti nepotřebuje žádné externí komponenty. Dokáže měřit teploty od -55 °C do +125 °C s přesností ±0,5 °C.

Rozlišení teplotního čidla je uživatelsky konfigurovatelné na 9, 10, 11 nebo 12 bitů. Výchozí rozlišení při zapnutí je však 12 bitů (tj. přesnost 0,0625 °C).

Snímač lze napájet zdrojem 3 V až 5,5 V a při aktivních převodech teploty spotřebovává pouze 1 mA.

Níže jsou uvedeny kompletní specifikace:

Napájení 3 V až 5.5V
Spotřeba proudu 1mA
Teplotní rozsah -55 až 125°C
Přesnost ±0.5°C
Rozlišení 9 až 12 bitů (volitelné)
Čas konverze < 750ms

Více DS18B20 na jedné sběrnici

Jednou z největších výhod DS18B20 je, že více DS18B20 může koexistovat na jedné 1-drátové sběrnici. Protože každý DS18B20 má z výroby vypálený jedinečný 64bitový sériový kód, je snazší je od sebe odlišit.

Tato funkce může být obrovskou výhodou, pokud chcete ovládat mnoho DS18B20 rozmístěných na velké ploše.

Chcete-li vědět, jak číst teplotu z více snímačů teploty DS18B20, podívejte se na tento návod.

Propojení více digitálních snímačů teploty DS18B20 s Arduinem

Jednou z největších výhod DS18B20 je, že na jedné sběrnici 1-Wire může koexistovat více DS18B20. Protože každý senzor DS18B20 má jedinečnou 64bitovou…

Vývody senzoru DS18B20

GND je zemnicí pin.

DQ je 1-Wire Data Bus by měl být připojen k digitálnímu pinu na mikrokontroléru.

Pin VDD napájí senzor, který může mít napětí 3,3 až 5 V.

Připojení teplotního senzoru DS18B20 k Arduinu

Teorie už bylo dost, pojďme na to prakticky! Připojíme DS18B20 k Arduinu.

Připojení je poměrně jednoduché. Začněte připojením VDD k výstupnímu pinu 5V na Arduinu a GND k zemi.

Dále připojte zbývající pin digitálního signálu DQ k digitálnímu pinu 2 na Arduinu. Budete také muset přidat pull-up rezistor 4,7k mezi signálový a napájecí pin, aby byl přenos dat stabilní. (Interní pull-upy na arduinu nefungují)

Dejte pozor, abyste DS18B20 zapojili správně. Pokud ho dáte špatně, bude se zahřívat a pak se zlomí.

Připojení teplotního čidla DS18B20 k arduinu

Pokud používáte vodotěsnou verzi DS18B20, připojte červený proužek k 5V, černý připojte k zemi a žlutý proužek jsou data, která jdou na digitální pin 2 na arduinu. Ještě musíte připojit pullup rezistor 4,7 K z dat na 5 V.

Připojení vodotěsného teplotního čidla DS18B20 k Arduinu

Instalace knihovny pro DS18B20

Protokol Dallas 1-Wire je poněkud složitý a vyžaduje spoustu kódu pro rozbor komunikace. Abychom tuto zbytečnou složitost skryli, nainstalujeme knihovnu DallasTemperature.h, abychom mohli vydávat jednoduché příkazy pro získání údajů o teplotě ze snímače.

Pro instalaci knihovny přejděte do Sketch > Include Library > Manage Libraries…Počkejte, až Správce knihoven stáhne index knihoven a aktualizuje seznam nainstalovaných knihoven.

Vyhledávání filtrujte zadáním ‚ds18b20‘. Mělo by tam být několik položek. Vyhledejte položku DallasTemperature od Milese Burtona. Klepněte na tuto položku a vyberte možnost Instalovat.

Tato knihovna Dallas Temperature je hardwarově specifická knihovna, která zpracovává funkce nižší úrovně. Je třeba ji spárovat s knihovnou One Wire Library, aby mohla komunikovat s jakýmkoli jednovodičovým zařízením, nejen s DS18B20. Nainstalujte si i tuto knihovnu.

Kód pro Arduino

Následující náčrt vám poskytne kompletní představu o tom, jak číst údaje o teplotě ze snímače teploty DS18B20, a může sloužit jako základ pro další praktické experimenty a projekty.

#include <OneWire.h>#include <DallasTemperature.h>// Data wire is plugged into digital pin 2 on the Arduino#define ONE_WIRE_BUS 2// Setup a oneWire instance to communicate with any OneWire deviceOneWire oneWire(ONE_WIRE_BUS);// Pass oneWire reference to DallasTemperature libraryDallasTemperature sensors(&oneWire);void setup(void){ sensors.begin();// Start up the library Serial.begin(9600);}void loop(void){ // Send the command to get temperatures sensors.requestTemperatures(); //print the temperature in Celsius Serial.print("Temperature: "); Serial.print(sensors.getTempCByIndex(0)); Serial.print((char)176);//shows degrees character Serial.print("C | "); //print the temperature in Fahrenheit Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0); Serial.print((char)176);//shows degrees character Serial.println("F"); delay(500);}

Takto vypadá výstup v sériovém monitoru.

Vysvětlení kódu:

Sketch začíná zařazením knihoven OneWire.h a DallasTemperature.h a deklarací pinu Arduino, ke kterému je připojen signální pin senzoru.

#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2

Následuje vytvoření objektu OneWire předáním signálního pinu senzoru do jeho konstruktoru. Tento jednovodičový objekt nám umožní komunikovat s libovolným jednovodičovým zařízením, nejen s DS18B20. Abychom mohli komunikovat se senzorem DS18B20, musíme vytvořit objekt knihovny DallasTemperature a jako parametr předat odkaz na jednovodičový objekt.

OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);

Po vytvoření objektu DallasTemperature můžeme zadávat níže uvedené jednoduché příkazy pro interakci se senzorem.

  • begin() Funkce vyhledá připojené snímače na sběrnici a nastaví pro každý z nich bitové rozlišení (12 bitů).
  • requestTemperatures() Funkce odešle příkaz pro všechny snímače na sběrnici, aby provedly převod teploty.
  • getTempCByIndex(deviceIndex) Funkce přečte a vrátí údaj o teplotě ze snímače. deviceIndex není nic jiného než umístění čidla na sběrnici. Pokud na sběrnici používáte pouze jeden snímač DS18B20, nastavte jej na 0.

Další užitečné funkce v knihovně DallasTemperature.h

Existuje několik užitečných funkcí, které můžete použít s objektem DallasTemperature. Několik z nich je uvedeno níže:

  • setResolution() Funkce nastavuje rozlišení interního analogově-digitálního převodníku DS18B20 na 9, 10, 11 nebo 12 bitů, což odpovídá přírůstkům 0,5 °C, 0,25 °C, 0,125 °C a 0,0625 °C.
  • bool getWaitForConversion() Funkce vrací hodnotu příznaku waitForConversion. Může být užitečná, když chcete zkontrolovat, zda je převod teploty dokončen.
  • setHighAlarmTemp() & setLowAlarmTemp() Funkce nastavuje interní alarmy vysoké & nízké teploty pro zařízení ve stupních Celsia. Platný rozsah je -55 až 125 °C.
  • bool hasAlarm() Funkce vrací true, pokud má zařízení alarmový stav, když teplota překročí nastavení vysokého & nízkého teplotního alarmu.

admin

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

lg