Czym jest czujnik DS18B20 - specyfikacja i zastosowania
Tekst opracowany z wykorzystaniem sztucznej inteligencji. Zasady i ograniczenia
Czujnik DS18B20 to cyfrowy termometr jednopunktowy o bardzo wysokiej precyzji, którego istotną cechą jest możliwość podłączenia wielu jednostek do jednego pinu GPIO dzięki unikalnemu 64-bitowemu identyfikatorowi.
Podstawowe parametry techniczne czujnika DS18B20 obejmują zakres napięcia zasilania od 3,0 do 5,5 V oraz maksymalną rozdzielczość równą 12 bitom. Dokładność pomiaru wynosi ±0,5°C w przedziale temperatur od -10 do +85°C, co czyni urządzenie idealnym do precyzyjnych aplikacji wymagających kontroli temperatury. Pełny zakres pomiarowy obejmuje temperatury od -55 do +125°C, a każdy element posiada unikalny numer seryjny umożliwiający rozbudowane systemy pomiarowe.
Wersja standardowa czujnika DS18B20 przeznaczona jest do zastosowań w suchych warunkach, natomiast hermetyczna wersja DS18B20+ oferuje dodatkową ochronę dzięki pokrywie ze stali nierdzewnej. Ta ostatnia jest fundamentalna w instalacjach narażonych na wilgoć, pył czy agresywne media chemiczne.
Czym różni się standardowa wersja od hermetycznej DS18B20+?
- Wersja standardowa posiada otwartą konstrukcję i jest przeznaczona do środowisk suchych
- Hermetyczna wersja DS18B20+ ma pokrywę ze stali nierdzewnej zapewniającą izolację
- Hermetyczna konstrukcja chroni przed wilgocią, kurzem i cząstkami pyłu
- Standardowa wersja wymaga dodatkowej ochrony w trudnych warunkach pracy
W praktyce czujnik DS18B20 znajduje zastosowanie w szerokim spektrum dziedzin. W monitoringu środowiska pomaga kontrolować temperaturę w pomieszczeniach domowych oraz biurowych, zapewniając komfort termiczny. W automatyce domowej integralny czujnik może sterować ogrzewaniem, wentylacją lub klimatyzacją w oparciu o rzeczywiste warunki. Przemysłowe aplikacje wykorzystują tę technologię do monitorowania procesów cieplnych w maszynach, reaktorach czy liniach produkcyjnych. Systemy alarmowe w środowiskach wymagających wodyodporności również korzystają z tego rozwiązania.
Korzyść z interfejsu 1-Wire polega na łatwej rozbudowie instalacji - kilkanaście czujników można podłączyć do jednego pinu bez dodatkowych układów scalonych. Warto podkreślić, że dzięki temu rozwiązaniu czujniki można rozciągać w miarę potrzeb projektu, co istotnie upraszcza projektowanie systemów wielopunktowych.
Podłączenie DS18B20 do Raspberry Pi - schemat i rezystor pull-up
Poprawne ds18b20 podłączenie do Raspberry Pi wymaga trzech przewodów oraz rezystora podciągającego. Czujnik temperatury 1-Wire DALLAS komunikuje się przez magistralę 1-Wire, gdzie linia danych DQ jest podłączona do jednego z pinów GPIO. W praktyce najczęściej wykorzystuje się GPIO 4, co odpowiada fizycznemu pinowi 7 na płytce Raspberry Pi.
DS18B20 Setup & Installation - What's The Deal With That Pull-up Resistor?
Trójprzewodowe połączenie czujnika DS18B20 z Raspberry Pi opiera się na następującej kolejności: prawa nóżka czujnika pełni funkcję zasilania VDD, które podłącza się bezpośrednio do 3,3 V (pin 1 fizyczny). Lepsze połączenie uzyskuje się przy użyciu oszczędnych przewodów, gdzie VDD łączy się z pinem 1, a GND - z masą dostępną na pinach 6 lub 9. Centralna nóżka oznaczona jako DQ łączy się z wybranym pinem GPIO, najczęściej GPIO 4, co zapewnia stabilną komunikację z kontrolerem. Wszystkie te elementy tworzą fundamentalny układ podłączenia czujnika DS18B20 w typowych projektach domowej automatyki.
Schemat podłączenia DS18B20 zawiera rezystor podciągający 4,7-kiloohmowy, który łączy linie zasilania 3,3 V z linią danych DQ. Ten element jest istotny dla poprawnego działania magistrali 1-Wire, ponieważ zapewnia odpowiednie naprężenie logiczne przy braku aktywnego sygnału. W sytuacjach, gdy przewody są dłuższe lub występują zakłócenia, można zastosować rezystor 2,2 kΩ, co zwiększa przepustowość sygnału. Sam układ czujnika wymaga jedynie rezystora pull-up i trzech przewodów, co czyni go doskonalszym rozwiązaniem dla prostych systemów monitoringu temperatury.
Wyprowadzenia czujnika DS18B20 są intuicyjnie oznaczone: prawa nóżka odpowiada za zasilanie VDD (3,0-5,5 V), lewa - masie GND, a środkowa - sygnałowi danych DQ. Pinout czujnika umożliwia podłączenie do dowolnego pinu GPIO, choć wartość 4 jest najczęściej wybierana ze względu na domyślną konfigurację systemu. Czujnik ten może pracować w szerokim zakresie temperatur, pomiar od -55 do 125 stopni Celsjusza, co czyni go idealnym rozwiązaniem do monitoringu w różnych środowiskach.
| Część | Cena [PLN] | Opis |
|---|---|---|
| Czujnik DS18B20 | 12,90 | Moduł z przekaźnikiem, wersja cyfrowa |
| Rezystor 4,7 kΩ | 0,10 | Standardowy rezystor pull-up |
| Rezystor 2,2 kΩ | 0,12 | Dla długich przewodów |
| Expander MCP23017 | 18,50 | Rozszerzenie GPIO I2C |
Koszt montażu DS18B20 w 2026 roku jest niski dzięki prostocie układu. Czujnik sam w sobie nie wymaga dodatkowych komponentów, chyba że projekt wymaga komunikacji z wieloma czujnikami. Warto dodać, że zaleca się użycie wersji hermetycznej DS18B20+ w trudniejszych warunkach środowiskowych. Dla rozbudowanych instalacji rozważ użycie expandera portów GPIO typu MCP23017, co umożliwia dodatkowe 16 linii danych bez konieczności używania kolejnych pinów Raspberry Pi. Sprawdzaj obecność rezystora pull-up 4,7 kΩ między 3,3 V a linią danych przy problemach z wykrywaniem czujnika.
Konfiguracja 1‑Wire w Raspberry Pi - pliki, moduły i test
Interfejs 1‑Wire umożliwia komunikację z czujnikami temperatury DS18B20 oraz innymi urządzeniami jednoliniowymi. Aby aktywować tę magistralę w Raspberry Pi, wystarczy odpowiednia modyfikacja pliku konfiguracyjnego systemu oraz załadowanie odpowiednich modułów jądra. Proces ten jest fundamentalny dla poprawnego odczytu temperatury z czujnika w systemie Linux.
Aktywacja magistrali 1-Wire w Raspberry Pi przez edycję pliku konfiguracyjnego
Aktywacja interfejsu 1-Wire wymaga wpisu dtoverlay=w1-gpio,gpiopin=4 w pliku /boot/config.txt. Domyślny pin GPIO 4 (BCM) można zmienić modyfikując parametr gpiopin - np. gpiopin=17 dla alternatywnej pozycji. Po zapisaniu zmian w pliku konfiguracyjnym system wymaga ponownego uruchomienia, aby zastosowanie zmian mogło zostać weryfikowane zgodnie z dokumentacją Raspberry Pi Foundation.
Automatyczne ładowanie modułów jądra w1-gpio i w1-therm
Moduły w1-gpio i w1-therm muszą być dodane do pliku /etc/modules dla automatycznego ładowania przy starcie systemu. Są to istotne moduły jądra, które umożliwiają komunikację 1-Wire z czujnikami DS18B20. Gdy zostaną poprawnie skonfigurowane, system automatycznie załaduje je przy każdym uruchomieniu. Dla natychmiastowego załadowania modułów bez ponownego uruchamiania można użyć komend sudo modprobe w1-gpio oraz sudo modprobe w1-therm.
Weryfikacja wykrycia czujnika w systemie plików
Czujnik DS18B20 jest widoczny w systemie plików pod /sys/bus/w1/devices/ z unikalnym numerem seryjnym. Większość czujników pojawia się jako katalog o nazwie 28-xxxxxxxxxxxx, gdzie xxxxxxxxxxxx to 64-bitowy adres ROM. Termin lokalizacja czujnika w systemie plików odnosi się do tego mechanizmu wykrywania, dzięki któremu każdy termometr cyfrowy Dallas może być jednoznacznie zidentyfikowany w sieci 1-Wire.
Po skonfigurowaniu interfejsu 1‑Wire warto wspomnieć o metodzie weryfikacji poprawności działania. Polecenie ls /sys/bus/w1/devices/ wyświetli wszystkie dostępne czujniki. Jeśli lista jest pusta, należy sprawdzić połączenia elektryczne oraz logi systemowe przy pomocy komendy dmesg | grep w1.
Odczyt temperatury w Pythonie - kod i obsługa wielu czujników
Skrypt w Pythonie umożliwia odczyt temperatury z jednego lub wielu czujników DS18B20 podłączonych do Raspberry Pi poprzez magistralę 1-Wire. Każdy termometr cyfrowy Dallas posiada unikalny numer seryjny 64-bitowy, dzięki czemu można jednocześnie monitorować wiele punktów pomiaru bez konieczności dodatkowych pinów GPIO.
1. Przygotowanie środowiska i wczytanie modułów systemowych dla DS18B20
Aby Raspberry Pi mogło wykrywać czujniki temperatury 1-Wire, istotne jest właściwe skonfigurowanie systemu. Należy dodać wpis do pliku konfiguracyjnego systemu, wskazujący domyślny pin GPIO jako magistralę 1-Wire.
- Dodaj do /boot/config.txt linijkę: dtoverlay=w1-gpio,gpiopin=4
- Załaduj moduły: sudo modprobe w1-gpio, sudo modprobe w1-therm
- Sprawdź dostępne czujniki: ls /sys/bus/w1/devices/
Po restarcie systemu każdy czujnik DS18B20 pojawi się jako katalog w katalogu /sys/bus/w1/devices/, identyfikowany unikalnym 64-bitowym numerem seryjnym rozpoczynającym się od 28-.
2. Odczyt temperatury z pojedynczego czujnika DS18B20 z konwersją wartości
Jeden z najprostszych sposobów na odczyt temperatury z czujnika polega na ręcznym otwarciu pliku w1_slave w jego katalogu. Wartość temperatury znajduje się po znaku t= w pliku, np. t=23437 oznacza 23,437°C - jest to wartość w tysięcach stopni Celsjusza, którą należy podzielić przez 1000.
Prosty kod Pythona otwiera plik, wyodrębnia liczbę po t= i wykonuje odpowiednią konwersję. Dodanie obsługi wyjątków zapewnia stabilność programu w przypadku problemów z dostępem do pliku lub nieprawidłowego podłączenia czujnika.
Funkcja ta stanowi podstawę dla bardziej zaawansowanych implementacji, które przetwarzają dane z wielu czujników jednocześnie.
3. Pętla iterująca wszystkie czujniki DS18B20 z identyfikacją unikalnych numerów
Realny kod dla Raspberry Pi musi być gotowy na pracę z wieloma czujnikami. Dlatego warto zaprojektować pętlę, która przeszukuje katalog /sys/bus/w1/devices/ i identyfikuje wszystkie podkatalogi zaczynające się od 28-.
Dla każdego czujnika program wyświetla jego numer seryjny oraz odczytaną temperaturę w stopniach Celsjusza. System automatycznie rozpoznaje każdy czujnik dzięki unikalnemu adresowi ROM 64 bitów, co eliminuje potrzebę ręcznej konfiguracji po podłączeniu nowego urządzenia.
Jeśli plik w1_slave nie istnieje lub jest niekompletny, program zgłasza problem, ale kontynuuje działanie dla pozostałych czujników, zapewniając ciągłość pomiarów.
4. Implementacja progu temperatury z alarmem w Pythonie
W aplikacjach monitoringu temperatury istotne jest wykrywanie odchyleń od założonych norm. Funkcja alarmu porównuje aktualną wartość z zadanymi progami górnymi i dolnymi.
Gdy temperatura wyjdzie poza zakres, program wypisuje ostrzeżenie z nazwą czujnika i aktualną wartością. Przykładowo, dla progu górnego 30°C i dolnego 10°C, każda wartość powyżej 30 lub poniżej 10 generuje komunikat ostrzegawczy.
Konfiguracja progów jako zmienne na początku skryptu umożliwia ich łatwą modyfikację bez edycji samego kodu. Dla aplikacji produkcyjnych zaleca się dodanie opcji zapisu alarmów do pliku log.
FAQ
Jak sprawdzić, czy czujniki DS18B20 są poprawnie podłączone?
Jeśli temperatura nie jest aktualizowana, warto najpierw sprawdzić, czy rezystor podciągający 4,7kΩ jest poprawnie podłączony pomiędzy 3,3 V a linią danych - brak takiego rezystora powoduje, że czujniki nie będą widoczne w systemie. Dodatkowo można ręcznie sprawdzić dostępność czujników komendą ls /sys/bus/w1/devices/.
Jaka jest dokładność pomiaru czujnika DS18B20?
Dokładność pomiaru czujnika to 0,5°C dla zakresu -10 do 85°C. Poza tym zakresem, czyli od -55 do 125 stopni Celsjusza, dokładność może się nieco zmieniać, ale nadal pozostaje wystarczająca dla większości zastosowań domowych i przemysłowych.
Czy mogę podłączyć wiele czujników DS18B20 do jednego pinu GPIO?
Tak, magistrala 1-Wire obsługuje jednoczesne podłączenie wielu czujników do jednego pinu GPIO. Każdy czujnik jest automatycznie rozpoznawany przez system dzięki unikalnemu adresowi ROM 64 bitów, co czyni tę konfigurację bardzo praktyczną dla monitoringu wielu punktów temperatury.
Typowe problemy i ich rozwiązania - diagnostyka DS18B20
W sytuacji gdy czujnik nie jest widoczny w systemie, istotne jest systematyczne rozwiązywanie problemów zgodnie z ustalonymi protokołami. Najczęstsze przyczyny awarii wymagają dokładnej weryfikacji połączeń i konfiguracji systemowej.
Checklistka diagnostyczna - czujnik nie jest widoczny w systemie
- Sprawdź napięcie 3,3 V na pinie VDD czujnika przy pomocy multimetru - wartość musi wynosić 3,3 V ±0,1 V
- Zweryfikuj obecność rezystora pull-up 4,7 kΩ między 3,3 V a linią danych DQ
- Skontroluj połączenia fizyczne: czy piny czujnika są poprawnie podłączone do Raspberry Pi (VDD, GND, DQ)
- Upewnij się, że moduły w1-gpio i w1-therm są załadowane - wpisz komendę lsmod | grep w1
- Sprawdź, czy w pliku /boot/config.txt jest wpis dtoverlay=w1-gpio,gpiopin=4
- Ponownie załaduj moduły: sudo modprobe -r w1-gpio w1-therm i sudo modprobe w1-gpio w1-therm
- Zweryfikuj, czy czujnik jest widoczny w /sys/bus/w1/devices/ - lista urządzeń musi zawierać identyfikator 28-
- Spróbuj zmienić pin GPIO - domyślnie używany jest GPIO 4 (BCM), można użyć innego zmieniając gpiopin w konfiguracji
- Włącz tryb parasitowego zasilania - wymaga podłączenia tylko linii danych i masy, redukuje liczbę przewodów
- Dla rozbudowanych instalacji rozważ użycie expandera portów GPIO, aby zwiększyć liczbę dostępnych pinów
Tryb parasitowego zasilania - kiedy i jak go używać
Specjalny tryb zasilania czujnika umożliwia pobór energii z linii danych, co istotnie upraszcza instalację w trudno dostępnych lokalizacjach.
- Tryb parasitowego zasilania umożliwia zasilanie czujnika z linii danych DQ zamiast osobnego przewodu VDD
- Wymaga to podłączenia tylko dwóch przewodów: DQ i GND, co upraszcza instalację w trudno dostępnych miejscach
- Ma ograniczenia co do szybkości przesyłania danych - nie nadaje się do aplikacji wymagających szybkiego odczytu
- Długość magistrali ograniczona jest do kilku metrów ze względu na propagację sygnału
- Nie wszystkie biblioteki obsługują ten tryb automatycznie - wymaga dodatkowej implementacji sterowania zasilaniem
Rozszerzenie instalacji - expandery GPIO w rozbudowanych projektach
Gdy liczba czujników przekracza dostępne piny Raspberry Pi, rozwiązaniem staje się zastosowanie expandera portów GPIO opartego na magistrali I2C.
- Gdy liczba czujników DS18B20 przekracza dostępne piny GPIO, rozważ użycie expandera portów GPIO
- Typowe rozwiązania to moduły MCP23017 lub PCF8574 komunikujące się przez magistralę I2C
- Jeden expander może dodać od 8 do 16 dodatkowych pinów cyfrowych
- Magistrala 1-Wire pozwala podłączyć wiele czujników do jednego pinu GPIO - teoretycznie do 64 czujników
- Rozsądne rozwiązanie dla instalacji z ponad 10 czujnikami - redukuje liczbę potrzebnych pinów Raspberry Pi
| Komponent | Koszt [PLN] | Opis |
|---|---|---|
| DS18B20 (czujnik) | 8,50 | Cyfrowy czujnik temperatury 1-Wire, zakres -55°C do +125°C |
| Rezystor 4,7 kΩ | 0,10 | Rezystor pull-up dla magistrali 1-Wire |
| Rezystor 2,2 kΩ | 0,10 | Rezystor dla długich przewodów (alternatywa) |
| Wariant | Całkowity koszt [PLN] | Uwagi |
|---|---|---|
| Podstawowy montaż | 8,60 | Czujnik + rezystor 4,7 kΩ |
| Z expanderem GPIO (MCP23017) | 22,00 | Dodano moduł rozszerzający piny I2C |
Każdy czujnik DS18B20 posiada unikalny 64-bitowy numer seryjny, co umożliwia podłączenie wielu elementów do jednego pinu GPIO. Dla instalacji przekraczających 10 czujników rozwiązanie z expanderem portów rozszerza liczbę pinów i eliminuje konieczność wykorzystywania dodatkowych linii cyfrowych. W przypadku problemów z wykrywaniem termometru najpierw weryfikuje się napięcie 3,3 V na pinie VDD i obecność rezystora 4,7 kΩ - te czynniki stanowią fundamentalną podstawę poprawnego działania czujnika.
FAQ - najczęściej zadawane pytania o DS18B20
Istotne pytania dotyczą kompatybilności napięciowej, możliwości rozbudowy instalacji oraz diagnostyki typowych problemów w odczycie temperatury. Odpowiedzi opierają się na faktach technicznych i procedurach konfiguracyjnych dla Raspberry Pi w 2026 r.
Czy DS18B20 działa na 5V?
Zakres napięcia zasilania czujnika termometru cyfrowego Dallas to od 3,0 do 5,5 V, co pozwala na bezpośrednie zasilanie 5V. Istotne jest jednak zachowanie ostrożności przy połączeniach z GPIO Raspberry Pi, które pracuje na 3,3V - wymaga rezystora podciągającego 4,7 kΩ oraz może być potrzebny poziomujący układ. Napięcie 5V nie uszkodzi sam czujnik, ale może wymagać dodatkowych środków ostrożności przy magistrali sygnałowej.
Jak podłączyć wiele czujników do jednego pinu?
Magistrala 1-Wire umożliwia podłączenie wielu czujników DS18B20 do jednego pinu GPIO dzięki unikalnym 64-bitowym adresom ROM każdego układu. Wszystkie czujniki łączą się równolegle - VDD do 3,3V, GND do masy, a linia DQ przez rezystor podciągający 4,7 kΩ do 3,3V. Każdy czujnik jest widoczny w systemie plików pod /sys/bus/w1/devices/ jako osobny katalog z nazwą rozpoczynającą się od numeru seryjnego. Warto dodać, że po podłączeniu należy sprawdzić dostępność czujników komendą 'ls /sys/bus/w1/devices/'.
Dlaczego temperatura jest odczytywana jako 85°C?
Wartość 85°C jest stanem początkowym czujnika - odczytywana gdy nie został wykonany pomiar komendą ConvertT. Terminologia ta oznacza, że czujnik wymaga specjalnej procedury: najpierw wywołać konwersję temperatury w kodzie Python (np. 'ow.convert_temp()'), dopiero potem odczytać wartość z pliku w1_slave. Dodatkowo warto odnotować, że DS18B20 wymaga czasu do 750 ms na wykonanie pomiaru, a jeśli czujnik ciągle pokazuje tę samą wartość, należy sprawdzić połączenia, rezystor pull-up oraz załadowanie modułów w1-gpio i w1-therm.
Czy można używać innego pinu GPIO?
GPIO właściwy do komunikacji z czujnikiem może być zmieniony w konfiguracji systemu. Domyślnie używany jest GPIO 4 (BCM), ale można go zamienić na inny - wystarczy zmienić wpis w pliku /boot/config.txt, np. zamiast 'dtoverlay=w1-gpio,gpiopin=4' wpisać 'dtoverlay=w1-gpio,gpiopin=18' dla GPIO 18. W rezultacie po zmianie pinu należy ponownie uruchomić system lub przeładować moduły w1-gpio i w1-therm. Taka elastyczność pozwala dostosować połączenie do własnego schematu.
Redakcja DIY Elektronika · wszystkie artykuły