DS18B20: Funkcie snímača teploty

  • Senzor DS18B20 dokáže merať teploty od -55°C do 125°C s nastaviteľným rozlíšením od 9 do 12 bitov.
  • Môže byť napájaný cez dátový kolík alebo použiť externý zdroj pre väčšiu stabilitu.
  • Umožňuje pripojenie viacerých senzorov na jednu zbernicu, pričom každý je identifikovaný svojou jedinečnou 64-bitovou adresou.
  • Je kompatibilný s Arduino pomocou knižníc OneWire a DallasTemperature.

ds18b20

El Senzor DS18B20 si získal obľubu vďaka svojej spoľahlivosti a všestrannosti na meranie teploty. Je široko používaný v projektoch elektroniky s mikrokontrolérmi ako Arduino, PIC alebo ESP8266 kvôli jeho jednoduchosti použitia a schopnosti pripojiť viacero senzorov na rovnakú zbernicu, čo z neho robí ideálnu voľbu pre amatérov aj profesionálov.

Jednou z hlavných atrakcií tohto senzora je, že na dátovú komunikáciu využíva protokol iba jeden kábel 1-drôtový, čo uľahčuje jeho integráciu do širokej škály projektov. Okrem toho môže DS18B20 pracovať až v dvoch rôznych režimoch napájania, vďaka čomu je ešte flexibilnejší. V tomto článku vám podrobne vysvetlíme, ako to funguje, ako môžete pripojiť viacero senzorov a ako optimalizovať merania teploty.

Vlastnosti DS18B20

DS18B20 vyrába Maxim Integrated, okrem iného, a je prezentovaný v rôznych zapuzdreniach, pričom tento formát je DO-92 (podobne ako u mnohých tranzistorov) jeden z najbežnejších. Okrem toho ho možno nájsť aj v uzavretých a vodotesných verziách, vďaka čomu je ideálny na meranie teplôt v drsnom alebo vlhkom prostredí.

Medzi najvýznamnejšie vlastnosti DS18B20 patria:

  • Rozsah teplôt, od ktorých môže merať, pokrýva -55 °C až 125 °C, vďaka čomu je vhodný pre priemyselné a domáce aplikácie.
  • Su programovateľné rozlíšenie sa môže líšiť medzi 9 a 12 bitov, čo umožňuje presné prispôsobenie na základe potrieb každého projektu.
  • Každý senzor má jedinečnú adresu 64 bitov, čo uľahčuje identifikáciu viacerých snímačov pripojených na rovnakú zbernicu.

Režimy výkonu DS18B20

pin ds18b20

Senzor môže pracovať v dvoch režimoch výkonu, čo poskytuje flexibilitu pri jeho integrácii do rôznych projektov, pričom každý má svoje výhody.

Napájanie cez dátový kolík (Parasite Power)

Tento režim je ideálny, keď je priestor obmedzený alebo keď je potrebné pripojenie na veľké vzdialenosti. DS18B20 čerpá energiu priamo z dátového kolíka, keď je vysoký, a ukladá energiu do malého kondenzátora, keď je dátové vedenie nízke. Tento typ diéty je tzv Parazitná sila.

Je však dôležité poznamenať, že pre správne fungovanie je potrebné pripojiť kolíky GND y VDD na breh. Okrem toho je vhodné zahrnúť tranzistor MOSFET čo pomáha v situáciách, keď teplotné prevody potrebujú väčší prúd.

Napájanie pomocou externého zdroja

Najbežnejší a odporúčaný spôsob napájania DS18B20 je cez externý zdroj pripojený na kolík VDD. Táto metóda zaručuje stabilné napätie nezávislé od dátovej prevádzky na 1-Wire zbernici, čo je výhodné pre projekty vyžadujúce konštantnú presnosť.

Ako používať DS18B20 s Arduino

pripojenie arduino

Pre prácu s týmto senzorom na platforme Arduino je potrebné použiť dve základné knižnice: OneWire y DallasTemperature. Tieto knižnice uľahčujú komunikáciu a umožňujú jednoduché čítanie a konfiguráciu.

Knižnica OneWire: Umožňuje komunikáciu pomocou 1-Wire protokolu. Dá sa stiahnuť z Úložisko GitHub.

Teplota kníhkupectva Dallas: Obsahuje funkcie potrebné na odčítanie teploty a konfiguráciu snímača. Stiahnite si ho z ce lien.

Po nainštalovaní oboch knižníc môžete bez komplikácií začať pracovať so snímačom. Nižšie vysvetľujeme niekoľko príkladov, ako čítať teplotu a ako pracovať s viacerými snímačmi.

Príklad 1: Odčítanie teploty pomocou jedného snímača

Ak chcete vykonať odčítanie teploty pomocou jedného DS18B20 pripojeného k Arduinu, základný obvod zahŕňa jednoduché pripojenie dátového kolíka snímača k digitálny pin 2 Arduina spolu s odporom Vytiahni 4.7 kΩ.

Toto je základný kód na čítanie teploty snímača:

#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 celkom jednoduchý. Vyžaduje len niekoľko riadkov v hlavnej slučke na vyžiadanie teploty a jej prečítanie, čo uľahčuje implementáciu a prispôsobenie pre rôzne použitia.

Príklad 2: Použitie viacerých snímačov na rôznych kolíkoch

Pri práci s viac ako jedným DS18B20 existujú dva spôsoby pripojenia snímačov. Prvým je priradenie iného digitálneho pinu Arduino každému senzoru. V tomto prípade bude pre každý senzor potrebný Pull-Up rezistor 4.7 kΩ.

Tu vám ukážeme príklad, ako pracovať s dvoma snímačmi pripojenými na rôzne kolíky:

#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); }

Príklad 3: Viacero snímačov pripojených k jednému kolíku

Ďalšou možnosťou pripojenia niekoľkých DS18B20 v projekte je to urobiť pomocou jedného kolíka a rovnakej 1-Wire zbernice pre všetky z nich. V tomto prípade musí mať každý snímač svoj jedinečné identifikačné číslo, ktorý je pridelený vo výrobe. Tu vysvetlíme, ako získať tieto adresy pomocou nasledujúceho 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); }

Keď máte adresy všetkých senzorov, môžete čítať konkrétny senzor pomocou jeho jedinečnej adresy. Nasledujúci kód vám ukáže, ako to urobiť:

#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 tejto metódy je, že na Arduine ušetríte piny a na rovnakú dátovú zbernicu môžete paralelne pripojiť veľa senzorov.

Na týchto príkladoch môžete vidieť všestrannosť a výkon snímača DS18B20. Implementácia je veľmi jednoduchá a ak potrebujete pripojiť viacero senzorov, máte plnú flexibilitu, ako to urobiť rôznymi spôsobmi. DS18B20 je jedným z najspoľahlivejších snímačov na meranie teploty a vďaka nízkej spotrebe energie a jednoduchému programovaniu je ideálny pre všetky typy projektov.

Senzor DS18B20 sa nielen ľahko používa s Arduino, ale môže byť použitý aj v širokej škále priemyselných a rezidenčných aplikácií, ako je monitorovanie teploty v klimatizačných systémoch, strojoch alebo dokonca skleníkoch.


Buďte prvý komentár

Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.