- 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.
#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

- 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.