kmki.pl

Jak podłączyć i skonfigurować dwa czujniki DS18B20 na jednym pinie

Jak podłączyć i skonfigurować dwa czujniki DS18B20 na jednym pinie
Autor Marcin Jankowski
Marcin Jankowski

22 marca 2025

DS18B20 to cyfrowy czujnik temperatury o szerokim zastosowaniu. Mierzy temperaturę od -55°C do +125°C z dokładnością do ±0.5°C. Wykorzystuje interfejs 1-Wire, co umożliwia podłączenie wielu czujników do jednego pinu mikrokontrolera. DS18B20 jest popularny w automatyce domowej, przemyśle i medycynie. Jego prosta obsługa i wszechstronność czynią go idealnym wyborem dla projektów z Arduino i innymi platformami mikrokontrolerowymi. Najważniejsze informacje:
  • Zakres pomiaru: -55°C do +125°C
  • Dokładność: ±0.5°C w zakresie -10°C do +85°C
  • Interfejs 1-Wire pozwala na podłączenie wielu czujników
  • Zasilanie: 3.0V do 5.5V, możliwość zasilania przez linię danych
  • Dostępny w obudowie TO92 z trzema wyprowadzeniami
  • Szeroko stosowany w automatyce, systemach HVAC i urządzeniach medycznych
  • Łatwy w podłączeniu i programowaniu, szczególnie z Arduino

Zasada działania magistrali 1-Wire

Magistrala 1-Wire to system komunikacji cyfrowej opracowany przez firmę Dallas Semiconductor. Umożliwia przesyłanie danych i zasilanie urządzeń za pomocą jednego przewodu. Działa na zasadzie master-slave, gdzie urządzenie nadrzędne kontroluje komunikację z wieloma urządzeniami podrzędnymi.

DS18B20 idealnie wykorzystuje zalety magistrali 1-Wire. Pozwala to na podłączenie wielu czujników temperatury DS18B20 do jednego pinu mikrokontrolera, co znacznie upraszcza okablowanie i redukuje liczbę zajętych pinów.

  • Komunikacja przez jeden przewód
  • Możliwość zasilania urządzeń przez linię danych (tryb pasożytniczy)
  • Unikalny adres 64-bitowy dla każdego urządzenia
  • Obsługa wielu urządzeń na jednej linii

Schemat podłączenia dwóch czujników DS18B20

Podłączenie dwóch czujników DS18B20 do jednego pinu mikrokontrolera jest proste. Wystarczy połączyć linie danych obu czujników do wspólnego pinu, dodać rezystor podciągający i podłączyć zasilanie. Taka konfiguracja pozwala na efektywne wykorzystanie magistrali 1-Wire DS18B20.

Pin DS18B20 Pin mikrokontrolera Funkcja
GND GND Masa
DQ Pin cyfrowy (np. D2) Linia danych
VDD 3.3V lub 5V Zasilanie

Rezystor podciągający jest kluczowy dla prawidłowej komunikacji. Łączy linię danych z napięciem zasilania, zapewniając stabilny stan wysoki, gdy linia jest nieaktywna.

Konfiguracja rezystora podciągającego

Rezystor podciągający jest niezbędny do prawidłowego działania magistrali 1-Wire. Zapobiega on powstawaniu zakłóceń i zapewnia, że linia danych powraca do stanu wysokiego po transmisji.

Optymalna wartość rezystora to zazwyczaj 4,7 kΩ.

Przy dodawaniu kolejnych czujników DS18B20, konfiguracja rezystora pozostaje bez zmian. Jeden rezystor wystarczy dla wielu urządzeń na magistrali, co jest kolejną zaletą konfiguracji wielu czujników DS18B20.

Czytaj więcej: DS1820 AVR: Jak podłączyć i użyć czujnik temperatury

Kod do odczytu danych z dwóch czujników

Programowanie dwóch czujników DS18B20 wymaga użycia odpowiednich bibliotek. Dzięki nim, odczyt danych z DS18B20 staje się prosty i efektywny.

Potrzebne biblioteki: - OneWire.h - DallasTemperature.h

#include 
#include 

#define ONE_WIRE_BUS 2

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

void setup() {
  Serial.begin(9600);
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures();
  Serial.print("Czujnik 1: ");
  Serial.println(sensors.getTempCByIndex(0));
  Serial.print("Czujnik 2: ");
  Serial.println(sensors.getTempCByIndex(1));
  delay(1000);
}

Ten kod inicjalizuje magistralę 1-Wire na pinie 2. Funkcja sensors.begin() przygotowuje czujniki do pracy. W pętli głównej, requestTemperatures() żąda odczytu z wszystkich czujników. Metoda getTempCByIndex() zwraca temperaturę z konkretnego czujnika, indeksowanego od 0.

Adresowanie i identyfikacja czujników

Adresowanie jest kluczowe przy pracy z wieloma czujnikami DS18B20. Każdy czujnik ma unikalny 64-bitowy adres, co pozwala na ich precyzyjną identyfikację na magistrali 1-Wire.

Aby uzyskać adresy czujników, można użyć specjalnego sketchu do skanowania magistrali 1-Wire. Wyświetli on adresy wszystkich podłączonych urządzeń.

W kodzie można wykorzystać te adresy, używając funkcji sensors.getAddress() do przypisania adresów do zmiennych, a następnie sensors.requestTemperaturesByAddress() do odczytu konkretnego czujnika.

Rozwiązywanie problemów z wieloma czujnikami

Zdjęcie Jak podłączyć i skonfigurować dwa czujniki DS18B20 na jednym pinie
  • Błędne odczyty: Sprawdź połączenia i rezystor podciągający
  • Brak komunikacji: Upewnij się, że biblioteki są poprawnie zainstalowane
  • Identyczne odczyty: Sprawdź, czy adresy czujników są unikalne
  • Niestabilne odczyty: Zwiększ pojemność kondensatora filtrującego na linii zasilania
  • Wolne odczyty: Rozważ użycie trybu zasilania pasożytniczego

Wydajność i dokładność: jeden vs. dwa czujniki

Użycie dwóch czujników DS18B20 zamiast jednego może zwiększyć dokładność pomiarów poprzez uśrednianie wyników. Jednak może to również wydłużyć czas odczytu i nieznacznie zwiększyć zużycie energii.

Parametr Jeden czujnik Dwa czujniki
Dokładność ±0.5°C Potencjalnie lepsza (uśredniona)
Czas odczytu Krótszy Dłuższy (o ~10-20%)
Zużycie energii Niższe Wyższe (o ~5-10%)

Warto użyć dwóch czujników, gdy potrzebna jest większa precyzja lub pomiar w dwóch różnych punktach. W prostych aplikacjach jeden czujnik często wystarcza.

Praktyczne zastosowania konfiguracji z dwoma czujnikami

Konfiguracja z dwoma czujnikami DS18B20 znajduje zastosowanie w wielu dziedzinach. Może być używana do monitorowania gradientu temperatury, zwiększenia dokładności pomiarów czy zabezpieczenia przed awariami. Takie rozwiązanie sprawdza się szczególnie w systemach, gdzie precyzja i niezawodność są kluczowe.

Przykładowy projekt to system monitorowania temperatury w akwarium. Jeden czujnik mierzy temperaturę przy grzałce, drugi przy filtrze, co pozwala na dokładną kontrolę warunków wodnych.

Innym zastosowaniem jest monitoring temperatury w serwerowni. Dwa czujniki rozmieszczone w różnych punktach pomieszczenia pozwalają na wykrycie lokalnych przegrzań i optymalizację systemu chłodzenia.

Efektywne wykorzystanie dwóch czujników DS18B20 na jednej magistrali

Zastosowanie dwóch czujników DS18B20 na jednej magistrali 1-Wire otwiera nowe możliwości w precyzyjnym pomiarze temperatury. Dzięki prostemu podłączeniu i konfiguracji, możemy znacząco zwiększyć dokładność pomiarów oraz monitorować temperaturę w dwóch różnych punktach jednocześnie.

Kluczem do sukcesu jest prawidłowe adresowanie czujników i wykorzystanie odpowiednich bibliotek w kodzie Arduino. Pamiętajmy o rezystorze podciągającym, który zapewnia stabilną komunikację. Mimo niewielkiego wzrostu zużycia energii i czasu odczytu, korzyści płynące z zastosowania dwóch czujników często przewyższają te drobne niedogodności.

Wykorzystanie konfiguracji wielu czujników DS18B20 znajduje szerokie zastosowanie w monitoringu akwariów, serwerowni czy systemach automatyki domowej. Dzięki tej wiedzy, możemy tworzyć bardziej zaawansowane i niezawodne systemy pomiarowe, dostosowane do różnorodnych potrzeb.

Źródło:

[1]

https://botland.com.pl/blog/czujnik-temperatury-ds18b20-cyfrowy-1-wire-tht-szczegoly-na-temat-produktu-i-przyklady-zastosowan/

[2]

https://www.montersi.pl/ds18b20-1m-cyfrowa-czujka-temperatury-1-m-silikon

[3]

https://akademia.nettigo.pl/ds18b20/

[4]

https://ntronic.pl/czujnik-temperatury-ds18b20/

Najczęstsze pytania

Tak, możesz podłączyć wiele czujników DS18B20 do jednego pinu mikrokontrolera dzięki magistrali 1-Wire. Teoretycznie możliwe jest podłączenie nawet kilkudziesięciu czujników, ale w praktyce zaleca się nie przekraczać 10-15 urządzeń na jednej linii, aby uniknąć problemów z zasilaniem i komunikacją.

Maksymalna długość przewodu dla czujników DS18B20 zależy od kilku czynników, takich jak rezystancja przewodu i zakłócenia zewnętrzne. Generalnie, dla standardowej konfiguracji, można bezpiecznie używać przewodów o długości do 20-30 metrów. Przy dłuższych odległościach może być konieczne zastosowanie wzmacniaczy sygnału lub specjalnych technik okablowania.

Nie, nie potrzebujesz osobnego zasilania dla każdego czujnika DS18B20. Czujniki te mogą pracować w trybie zasilania pasożytniczego, co oznacza, że mogą pobierać energię z linii danych. Wystarczy podłączyć VDD do GND i używać tylko dwóch przewodów: GND i DQ. Pamiętaj jednak, że przy większej liczbie czujników lub dłuższych przewodach, lepiej zastosować standardowe zasilanie.

Częstotliwość odczytu danych z czujników DS18B20 zależy od wybranej rozdzielczości. Dla najwyższej rozdzielczości (12 bitów), czas konwersji temperatury wynosi około 750 ms. Oznacza to, że możesz odczytywać dane mniej więcej raz na sekundę. Przy niższych rozdzielczościach, czas ten się skraca, pozwalając na częstsze odczyty, ale kosztem dokładności pomiaru.

Standardowe czujniki DS18B20 w obudowie TO-92 nie są wodoodporne. Jednak dostępne są specjalne wersje tych czujników, zamknięte w wodoszczelnych metalowych osłonach, które są odporne na wilgoć i można je zanurzać w cieczach. Zawsze sprawdzaj specyfikację konkretnego modelu czujnika, aby upewnić się, czy jest odpowiedni do zastosowania w wilgotnym lub mokrym środowisku.

tagTagi
shareUdostępnij artykuł
Autor Marcin Jankowski
Marcin Jankowski

Jestem pasjonatem nowych technologii. Testuję najnowsze smartfony i dzielę się wrażeniami na blogu. Sprawdzam wydajność procesorów i jakość wyświetlaczy. Porównuję aparaty i możliwości fotograficzne. Oceniam komfort obsługi i wygląd urządzeń. Polecam stylowe etui i przydatne gadżety. Piszę o historii telefonów i przyszłych trendach. Uczę też jak samodzielnie wymienić baterię czy wyświetlacz.

Oceń artykuł
rating-fill
rating-fill
rating-fill
rating-fill
rating-fill
Ocena: 0.00 Liczba głosów: 0

Komentarze(0)

email
email

Polecane artykuły

Urządzenia5 błędów, które możesz popełnić używając zgrzewarki do ogniw – i jak ich unikać

Wyobraź sobie, że postanowiłeś zbudować własny pakiet baterii do roweru elektrycznego. Zakup zgrzewarki do ogniw wydawał się ostatnim krokiem do sukcesu. Kilka kliknięć w sklepie, szybka dostawa i... zaczynasz działać. Niestety, po kilku dniach okazuje się, że Twoje połączenia są słabe, ogniwa się przegrzewają, a całość wygląda, jakby miała zaraz wybuchnąć.