DS18B20: Vlastnosti snímače teploty

  • Senzor DS18B20 dokáže měřit teploty od -55°C do 125°C s nastavitelným rozlišením od 9 do 12 bitů.
  • Může být napájen přes datový kolík nebo použít externí zdroj pro větší stabilitu.
  • Umožňuje připojení více senzorů na jednu sběrnici, přičemž každý je identifikován svou jedinečnou 64bitovou adresou.
  • Je kompatibilní s Arduino pomocí knihoven OneWire a DallasTemperature.

ds18b20

El Senzor DS18B20 si získal oblibu díky své spolehlivosti a všestrannosti pro měření teploty. Je široce používán v elektronických projektech s mikrokontroléry, jako jsou Arduino, PIC nebo ESP8266, díky jednoduchosti použití a schopnosti připojit více senzorů na stejnou sběrnici, což z něj dělá ideální volbu pro amatéry i profesionály.

Jedním z hlavních lákadel tohoto senzoru je, že používá pouze jeden kabel pro datovou komunikaci pomocí protokolu 1vodič, což usnadňuje jeho integraci do široké škály projektů. Kromě toho může DS18B20 pracovat až ve dvou různých režimech napájení, díky čemuž je ještě flexibilnější. V celém tomto článku do hloubky vysvětlíme, jak to funguje, jak můžete připojit více senzorů a jak optimalizovat měření teploty.

Vlastnosti DS18B20

DS18B20 vyrábí Maxim Integrated, mimo jiné, a je prezentován v různých zapouzdřeních, ve formátu DO-92 (podobně jako u mnoha tranzistorů) jeden z nejběžnějších. Kromě toho jej lze nalézt také v utěsněné a vodotěsné verzi, takže je ideální pro měření teplot v drsném nebo vlhkém prostředí.

Mezi nejpozoruhodnější vlastnosti DS18B20 patří:

  • Teplotní rozsah, ze kterého může měřit, pokrývá -55 °C až 125 °C, takže je vhodný pro průmyslové a domácí aplikace.
  • Su programovatelné rozlišení se může lišit mezi 9 a 12 bitů, umožňující přesné nastavení na základě potřeb každého projektu.
  • Každý senzor má jedinečnou adresu 64 bitů, což usnadňuje identifikaci více senzorů připojených na stejnou sběrnici.

Režimy napájení DS18B20

pin ds18b20

Senzor může pracovat ve dvou režimech napájení, což poskytuje flexibilitu při jeho integraci do různých projektů, z nichž každý má své vlastní výhody.

Napájení přes datový kolík (Parasite Power)

Tento režim je ideální, když je omezený prostor nebo když je potřeba připojení na dlouhé vzdálenosti. DS18B20 odebírá energii přímo z datového kolíku, když je vysoký, a ukládá energii do malého kondenzátoru, když je datová linka nízká. Tento typ diety se nazývá Parazitní síla.

Je však důležité si uvědomit, že pro správnou funkci je nutné propojit kolíky GND y VDD na břehu. Navíc je vhodné zahrnout tranzistor MOSFET což pomáhá v situacích, kdy teplotní převody potřebují více proudu.

Napájení pomocí externího zdroje

Nejběžnějším a doporučeným způsobem napájení DS18B20 je externí zdroj připojený ke kolíku VDD. Tato metoda zaručuje stabilní napětí nezávislé na datovém provozu na 1-Wire sběrnici, což je výhodné pro projekty vyžadující konstantní přesnost.

Jak používat DS18B20 s Arduinem

připojení arduino

Pro práci s tímto senzorem na platformě Arduino je nutné použít dvě základní knihovny: OneWire y DallasTemperature. Tyto knihovny usnadňují komunikaci a umožňují snadné provádění čtení a konfigurací.

Knihovna OneWire: Umožňuje komunikaci pomocí 1-Wire protokolu. Lze jej stáhnout z Úložiště GitHub.

Teplota knihkupectví Dallas: Obsahuje funkce potřebné pro čtení teploty a konfiguraci senzoru. Stáhněte si jej z tento odkaz.

Jakmile nainstalujete obě knihovny, můžete bez komplikací začít pracovat se senzorem. Níže vysvětlíme několik příkladů, jak číst teplotu a jak pracovat s více senzory.

Příklad 1: Odečet teploty s jedním senzorem

Chcete-li provést odečet teploty s jedním DS18B20 připojeným k Arduinu, základní obvod zahrnuje jednoduché připojení datového kolíku senzoru k digitální pin 2 Arduina spolu s rezistorem Vytáhnout 4.7 kΩ.

Toto je základní kód pro čtení teploty čidla:

#include <OneWire.h>  #include <DallasTemperature.h>  OneWire  ds(2);  DallasTemperature sensors(&ds); void setup() {   Serial.begin(9600);   sensors.begin(); } void loop() {   sensors.requestTemperatures();   float tempC = sensors.getTempCByIndex(0);   Serial.print("Temperatura= ");   Serial.print(tempC);   Serial.println(" °C");   delay(1000); }

Kód je celkem jednoduchý. Vyžaduje pouze několik řádků v hlavní smyčce pro vyžádání teploty a její přečtení, takže je velmi snadné ji implementovat a přizpůsobit pro různá použití.

Příklad 2: Použití více senzorů na různých pinech

Při práci s více než jedním DS18B20 existují dva způsoby připojení senzorů. První je přiřazením jiného digitálního pinu Arduino každému senzoru. V tomto případě bude pro každý senzor potřeba Pull-Up rezistor 4.7 kΩ.

Zde vám ukážeme příklad, jak pracovat se dvěma senzory připojenými na různé piny:

#include <OneWire.h>  #include <DallasTemperature.h>  OneWire ds1(2); OneWire ds2(3);  DallasTemperature sensors1(&ds1); DallasTemperature sensors2(&ds2); void setup() {   Serial.begin(9600);   sensors1.begin();   sensors2.begin(); } void loop() {   sensors1.requestTemperatures();   float temp1 = sensors1.getTempCByIndex(0);   sensors2.requestTemperatures();   float temp2 = sensors2.getTempCByIndex(0);   Serial.print("Temperatura 1 = ");   Serial.print(temp1);   Serial.print(" °C   Temperatura 2 = ");   Serial.println(temp2);   delay(1000); }

Příklad 3: Více snímačů připojených k jednomu kolíku

Další možností připojení několika DS18B20 v projektu je použití jediného pinu a stejné 1-Wire sběrnice pro všechny z nich. V tomto případě musí mít každý snímač svůj jedinečné identifikační číslo, který je přiřazen z výroby. Zde vysvětlíme, jak tyto adresy získat pomocí následujícího kódu:

#include <OneWire.h> OneWire ds(2); void setup(void) {   Serial.begin(9600); } void loop(void) {   byte address[8];   if (!ds.search(address)) {     Serial.println("No more addresses.");     ds.reset_search();     delay(250);     return;   }   Serial.print("Address: ");   for (int i = 0; i < 8; i++) {     Serial.print(address[i], HEX);     if (i < 7) Serial.print(", ");   }   Serial.println();   delay(250); }

Jakmile budete mít adresy všech senzorů, můžete číst konkrétní senzor pomocí jeho jedinečné adresy. Následující kód ukazuje, jak to udělat:

#include <DallasTemperature.h>  OneWire ds(2);  DallasTemperature sensors(&ds);  DeviceAddress sensor1 = {0x28, 0xFF, 0xCA, 0x4A, 0x5, 0x16, 0x3, 0xBD}; DeviceAddress sensor2 = {0x28, 0xFF, 0x89, 0x3A, 0x1, 0x16, 0x4, 0xAF};  void setup() {   Serial.begin(9600);   sensors.begin(); } void loop() {   sensors.requestTemperatures();   float temp1 = sensors.getTempC(sensor1);   float temp2 = sensors.getTempC(sensor2);   Serial.print("Temp sensor 1: ");   Serial.println(temp1);   Serial.print("Temp sensor 2: ");   Serial.println(temp2);   delay(1000); }

Výhodou této metody je, že ušetříte piny na Arduinu a můžete připojit mnoho senzorů paralelně na stejnou datovou sběrnici.

Na těchto příkladech můžete vidět všestrannost a výkon snímače DS18B20. Implementace je velmi snadná, a pokud potřebujete připojit více senzorů, máte plnou flexibilitu, jak to udělat různými způsoby. DS18B20 je jedním z nejspolehlivějších snímačů pro měření teploty a díky nízké spotřebě energie a snadnému programování se skvěle hodí pro všechny typy projektů.

Senzor DS18B20 se nejen snadno používá s Arduinem, ale lze jej také použít v široké řadě průmyslových a rezidenčních aplikací, jako je monitorování teploty v klimatizačních systémech, strojích nebo dokonce sklenících.


Začněte konverzaci

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.