Meranie teploty na OneWire a spôsoby zapojenia

Tvoříte zajímavý projekt? Pochlubte se s ním.
Pravidla fóra
Vkládejte prosím jen HOTOVÉ projekty, které chcete představit ostatním.
Odpovědět
martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Meranie teploty na OneWire a spôsoby zapojenia

Příspěvek od martinius96 » 16 lis 2017, 12:16

Ahoj, prinášam vám návod, na ktorý veľa ľudí hľadá odpoveď najmä začiatočníkov.
Všetci začiatočníci sa snažia vytvoriť napríklad meteostanicu, kde chcú merať teploty, tlak a iné veličiny.
Na meranie teplôt sa využívajú najčastejšie senzory DS18B20 (Dallas Maxim Temperature sensors)
Tieto senzory podporujú OneWire zbernicu. Po jednom vodiči je možné posielať dáta + "elektriku".
Každé DS18B20 čidlo má inú adresu. To znamená, že je možné čítať z každého čidla zvlášť, podľa jeho indexu (poradia na kábli). Napájanie stačí na 3.3V, pri 5V sa čidlá jemne hrejú a tým je meranie nepresnejšie. Pri každom zapojení je nutné využiť 4,7KΩ odpor.
Wiring pre Parasite Power Mode:
Obrázek
Wiring pre Normal Power Mode:
Obrázek
Wiring pre jedno DS18B20 čidlo
Obrázek
POZOR pri obrázku NORMAL módu! Podľa druhu čidla je možné, že Vcc a GND máte naopak.
Vzorový Arduino kód:

Kód: Vybrat vše

#include <OneWire.h>                 //KNIZNICA ONEWIRE PRE VYUZITIE ONEWIRE ZBERNICE
#include <DallasTemperature.h>       //KNIZNICA PRE TEPLOTNE CIDLA DS18B20
#define ONE_WIRE_BUS 5               //DEFINICIA PINU AKO ZBERNICE PRE ONEWIRE ZARIADENIA.. TU ZBIERAME UDAJE
OneWire oneWire(ONE_WIRE_BUS);       //ONEWIRE ČÍTAŤ IBA NA PORTE DEFINOVANOM VYSSIE
DallasTemperature sensors(&oneWire); //PRIRADENIE SENZOROV DALLAS DS18B20 NA ONEWIRE ZBERNICU

void setup() {      
  sensors.begin();     //START SENZOROV POD ONEWIRE (DALLASTEMPERATURE)                                         
  delay(2000);                
  Serial.begin(9600); //SPUSTENIE SERIOVEJ LINKY NA CITACIU RYCHLOST 9600
  while (!Serial) {
    ;               //CAKA POKYM SA SERIOVY PORT NEZAPNE
  }



}


void loop() { 
   sensors.requestTemperatures(); B
   delay(500);  //delay je dobry, niektore DS senzory musia počkať, kým vrátia hodnotu! 
    Serial.println("Teplota prve cidlo:"); 
Serial.println(sensors.getTempCByIndex(0));
  Serial.println("Teplota druhe cidlo:"); 
Serial.println(sensors.getTempCByIndex(1));
    Serial.println("Teplota tretie cidlo:"); 
Serial.println(sensors.getTempCByIndex(2));
  Serial.println("Teplota stvrte cidlo:"); 
Serial.println(sensors.getTempCByIndex(3));    


  delay(2000); 
}

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Meranie teploty na OneWire a spôsoby zapojenia

Příspěvek od pavel1tu » 16 lis 2017, 12:36

Paráda ! To by si zasloužilo vlastní sekci .... a více takovýchto příspěvků.

To "parazitní" zapojení je na prd, jsou s ním jen problémy a pár čidel s ním nechodí - lze to najít na original foru. Jen tak bokem.

PS: já bych navrhoval udělat sekci "Začínáme" kde by se tyto příspěvky dávali - bez možnosti je komentovat, aby se v tom lépe hledalo.
Dal bych tam i položku "Diskuze" kde by se mohlo probírat změny/opravy/doporučení jak onen a ten příspěvek doladit.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Meranie teploty na OneWire a spôsoby zapojenia

Příspěvek od martinius96 » 16 lis 2017, 13:43

Ja som parazit režim neskúšal, iba ten normál klasický :) Tie DS18B20 čidlá sú rôzne. Pri niektorých sa na teplotu musí čakať aj 500ms, niektoré majú GND a Vcc naopak.. Je to fakt des niekedy. Áno, tvoj nápad sa mi páči, to by bolo super :)

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Meranie teploty na OneWire a spôsoby zapojenia

Příspěvek od pavel1tu » 16 lis 2017, 18:46

martinius96 píše:
16 lis 2017, 13:43
Ja som parazit režim neskúšal, iba ten normál klasický :) Tie DS18B20 čidlá sú rôzne. Pri niektorých sa na teplotu musí čakať aj 500ms, niektoré majú GND a Vcc naopak.. Je to fakt des niekedy. Áno, tvoj nápad sa mi páči, to by bolo super :)
To máš pravdu, hlavně čína - to je někdy kvalita a přesnost. To si raději připlatím.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Meranie teploty na OneWire a spôsoby zapojenia

Příspěvek od martinius96 » 17 lis 2017, 20:51

Jo, videl som test pána z Čiech, ktorý si kúpil 5 čidiel, nechal ich 2 hodiny pripojené na zbernici (aby sa teplota vyrovnala a zapojil to. Každé ukazovalo inú teplotu. Rozdiel min a max bol cez 2°C :D

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů