Oferujemy szeroką gamę najlepszych złączy czujników DS18B20 1-przewodu, w tym NanoFlex, Displayport, USB, Słoneczny, Sata, HDMI, Ata Ide, Sas & wiele innych. Wszystkie kable są produkowane zgodnie z najwyższymi standardami branżowymi. Korzystanie z zespołu obwodu czujnika dla kompilacji pudełek pozwala skupić się na projektowaniu i marketingu, zmniejszyć koszty, i czerpią korzyści z naszych linii montażowych, Procesy QA, oraz wiedza specjalistyczna produkcyjna.
Czujnik DS18B20 komunikuje się za pomocą “1-Drut” protokół, co oznacza, że używa pojedynczej linii danych do całej komunikacji z mikrokontrolerem, umożliwiając podłączenie wielu czujników na tej samej linii i identyfikowane przez ich unikalny 64-bitowy kod szeregowy; Ta pojedyncza linia danych jest wyciągana wysoko za pomocą rezystora, a czujnik przesyła dane, ciągnąc linię nisko w określonych przedziałach czasowych, aby wysłać bity informacji.
DS18B20 Czujnik temperatury: Wodoodporna sonda DS18B20 została zaprojektowana do użytku podwodnego, zdolne do pracy w mokrych lub wilgotnych środowiskach bez uszkodzenia przez wodę lub wilgoć.
Napięcie zasilania czujnika temperatury: 3.0V ~ 5,25 V.;
Zakres temperatur pracy:-55 ℃ to +125 ℃ (-67 ℉ to +257 ℉);
Zapewnia pomiary temperatury od 9-bitowych do 12-bitowych Celsjusza;
Moduł adaptera jest wyposażony w rezystor podciągający, i bezpośrednio łączy się z GPIO Raspberry Pi bez rezystora zewnętrznego;
Użyj tego zestawu modułu adaptera, aby uprościć podłączenie wodoodpornego czujnika temperatury z projektem.
1. Kluczowe punkty dotyczące protokołu 1-przewodu:
Pojedyncza linia danych:
Potrzebny jest tylko jeden drut do komunikacji między czujnikiem a mikrokontrolem.
Komunikacja pół-dupleksu:
Dane mogą być wysyłane w obu kierunkach, Ale tylko jeden kierunek na raz.
Moc pasożyta:
DS18B20 może być zasilany bezpośrednio z linii danych podczas komunikacji, w niektórych przypadkach eliminowanie potrzeby oddzielnego zasilania.
Unikalne adresy urządzenia:
Każdy czujnik DS18B20 ma unikalny 64-bitowy kod szeregowy, który umożliwia mikrokontrolerowi identyfikację i adresowanie poszczególnych czujników w autobusie.
Kroki komunikacji z DS18B20:
1.1 Zresetuj puls:
Microcontroller inicjuje komunikację, ciągnąc linię danych niską przez określony czas trwania (Zresetuj puls).
1.2 Puls obecności:
Jeśli w autobusie jest obecny DS18B20, Odpowiedzi krótkim impulsem, wskazując jego obecność.
1.3 Polecenie ROM:
MicroController wysyła polecenie ROM, aby przeczytać unikalny 64-bitowy kod określonego czujnika (“Dopasuj rom”) lub zająć się wszystkimi czujnikami w autobusie (“Pokój statku”).
1.4 Polecenie funkcji:
W zależności od pożądanej operacji (Jak czytanie temperatury), MicroController wysyła do czujnika określone polecenie funkcji.
1.5 Przesyłanie danych:
Dane są przesyłane bit bit, z czujnikiem ciągnącym linię danych, aby wysłać ‘0’ i pozwalając linii, aby wysłać „1”.
2. Szczegółowe wyjaśnienie 1-przewodowego protokołu komunikacji DS18B20
Powodem, dla którego czujniki DS18B20 są szeroko stosowane, jest głównie wynika z unikalnego protokołu komunikacji – 1-Protokół komunikacji przewodowej. Ten protokół upraszcza wymagania dotyczące połączeń sprzętowych i zapewnia wydajny sposób przesyłania danych. Ten rozdział głęboko przeanalizuje mechanizm działający i proces wymiany danych 1-linii protokołu komunikacji, aby położyć solidne podstawy do późniejszej praktyki programowania.
2.1 Podstawy 1-wire protokoły komunikacji
2.1.1 Cechy 1-przewodowego protokołu komunikacji:
Nazywany jest również protokół komunikacji DS18B20 1-Wire “pojedynczy autobus” technologia. Ma następujące funkcje: – Komunikacja z pojedynczym autobusem: Tylko jedna linia danych jest używana do dwukierunkowej transmisji danych, co znacznie zmniejsza złożoność okablowania w porównaniu z tradycyjną metodą komunikacji czujników z wieloma przewodami. – Połączenie wielu urządzeń: Obsługuje łączenie wielu urządzeń w jednej magistrali danych, oraz identyfikuje i komunikuje się za pomocą kodów identyfikacji urządzeń. – Niskie zużycie energii: Podczas komunikacji, Urządzenie może znajdować się w stanie rezerwowym o niskiej mocy, gdy nie uczestniczy w komunikacji. – Wysoka precyzja: Z krótszym czasem transmisji danych, może zmniejszyć zakłócenia zewnętrzne i poprawić dokładność danych.
2.1.2 Format danych i analiza czasu komunikacji 1-wire
Format danych 1-przewodowego protokołu komunikacji jest zgodny z określoną regułą czasową. Obejmuje czas inicjalizacji, Napisz czas i przeczytaj czas:
Czas inicjalizacji: Host najpierw rozpoczyna czas wykrywania obecności (Puls obecności) Pociągając autobus przez pewien czas, a czujnik następnie wysyła impuls obecności w odpowiedzi.
Napisz czas: Kiedy host wyśle czas zapisu, Najpierw zatrzymuje autobus na około 1-15 Microsekunds, Następnie uwalnia autobus, a czujnik wjeżdża z autobusu 60-120 Mikrosekundy do odpowiedzi.
Przeczytaj czas: Host powiadamia czujnik o wysyłaniu danych poprzez pobranie autobusu i zwalniając, a czujnik wyprowadzi bit danych w magistrecie po pewnym opóźnieniu.
2.2 Wdrożenie oprogramowania komunikacji danych
2.2.1 Inicjalizacja i reset komunikacji 1-liniowej
Na poziomie oprogramowania, inicjalizacja i reset komunikacji 1-przewodowej jest pierwszym krokiem komunikacji. Poniżej znajduje się pseudo kod do wdrożenia tego procesu:
// Funkcja inicjalizacji komunikacji OneWire
void onewire_init() {
// Ustaw magistię na tryb wejściowy i włącz rezystor podciągania
Modna moda(DS18B20_PIN, Input_pullup);
// Poczekaj, aż autobus będzie bezczynny
Opóźnienie(1);
// Wyślij puls resetowania
Onewire_Reset();
}
// Funkcja resetowania komunikacji OneWire
void onewire_reset() {
// Ściągnąć autobus
Modna moda(DS18B20_PIN, Output_low);
Opóźnienie(480);
// Zwolnij autobus
Modna moda(DS18B20_PIN, Input_pullup);
Opóźnienie(70);
// Poczekaj na obecność pulsu
Jeśli (!Waitforonewirepresence())
// Nie wykryto pulsu, może czujnik nie jest połączony lub inicjalizacja nie powiodła się
Obsługiwanie();
Opóźnienie(410);
}
// Czekam na obecność pulsu
Bool Waitforonewirepresence() {
zwróć ReadPin(DS18B20_PIN) == 0; // Załóżmy, że niski poziom jest obecnością sygnału
}
2.2.2 Operacje odczytu i pisania danych
Operacje odczytu i pisania danych są podstawową częścią komunikacji czujników. Poniższy kod pokazuje, jak napisać bajt do autobusu na jednocześnie:
// Napisz bajt do autobusu na jedno-drucie
void onewire_writebyte(Dane bajtów) {
Do (int i = 0; I < 8; I ++) {
Onewire_Writebit(dane & 0x01);
dane >>= 1;
}
}
// Napisz trochę do autobusu na jedno-drucie
void onewire_writebit(dane bitowe) {
Modna moda(DS18B20_PIN, Output_low);
Jeśli (dane) {
// Wypuść autobus podczas pisania 1
Modna moda(DS18B20_PIN, Input_pullup);
Opóźnienie(1);
} w przeciwnym razie {
// Kontynuuj pociągnięcie autobusu podczas pisania 0
Opóźnienie(60);
}
Modna moda(DS18B20_PIN, Input_pullup);
Opóźnienie(1);
}
Dalej jest funkcja do odczytania bajtu:
// Przeczytaj bajt z autobusu z jednym drutem
BYTE Onewire_Readbyte() {
Data bajtów = 0;
Do (int i = 0; I < 8; I ++) {
dane >>= 1;
Jeśli (Onewire_Readbit())
dane |= 0x80;
}
Dane zwracające;
}
// Przeczytaj trochę z autobusu z jednego przewodu
Bit Onewire_Readbit() {
Modna moda(DS18B20_PIN, Output_low);
Modna moda(DS18B20_PIN, Input_pullup);
Opóźnienie(3);
BOOL Result = Readpin(DS18B20_PIN);
Opóźnienie(57);
Wynik zwrotu;
}
2.2.3 Mechanizm weryfikacyjny komunikacji OneWire
Protokół komunikacji OneWire wykorzystuje prosty mechanizm weryfikacji w procesie wymiany danych, zwykle poprzez odczytanie pisemnych danych w celu zweryfikowania poprawności danych. Poniżej znajduje się przykładowy kod weryfikacji danych pisemnych:
Dane bajtów = 0x55; // Załóżmy, że dane zostaną wysłane
Onewire_WriteByte(dane); // Zapisz dane do magistrali Onewire
BYTE READDATA = Onewire_Readbyte(); // Odczytaj dane z magistrali Onewire
Jeśli (ReadData != dane) {
Obsługiwanie(); // Jeśli dane odczytu nie pasują do danych pisemnych, obsłużyć błąd