Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
To jest krótki przewodnik, jak uzyskać indywidualne numery seryjne czujników temperatury DS18B20 1-wire.
Jest to przydatne w przypadku projektów wymagających wielu czujników.
Rzeczy, których potrzebujesz:
- Arduino 5v (UNO, Mega, Pro Mini itp.) - Arduino UNO R3 - AliExpress
- Czujnik temperatury DS18B20 - AliExpress - eBay
- Rezystor 4.7k - 1/4w THT - AliExpress - eBay
- Deska do krojenia chleba - AliExpress - eBay
- Przewody połączeniowe - męski na męski - AliExpress - eBay
- Komputer z zainstalowanym Arduino IDE
Krok 1: Dodaj wymaganą bibliotekę do Arduino IDE
- Otwórz Arduino IDE (używam 1.8.1)
- Kliknij „Szkic” -> „Dołącz bibliotekę” -> „Zarządzaj bibliotekami…”
- Wybierz pasek wyszukiwania i wpisz „dallas”
- Kliknij „DallasTemperature” i kliknij „Zainstaluj”
Alternatywnie możesz pobrać bibliotekę stąd:
Ta biblioteka zawiera bibliotekę OnWire.
Krok 2: Podłącz DS18B20
Za pomocą płytki stykowej podłącz +5V, GND i cyfrowy Pin 2 (Pin 2 jest już ustawiony w przykładowym szkicu) z Arduino za pomocą zworek z męskiej na męskiej płytki stykowej.
Podłącz DS18B20 równolegle do 3 listew zaciskowych na płytce stykowej.
- Pin 1 (GND) -> GND (masa 0V)
- Pin 2 (DANE) -> Pin cyfrowy 2
- Pin 3 (Vdd) -> +5V
Aby uzyskać normalny tryb zasilania, podłącz rezystor 4,7 K z +5 V do przewodu Digital Pin 2 na płytce stykowej.
Poniższy link jest doskonałym źródłem informacji o 1-przewodowym czujniku temperatury DS18B20.
www.tweaking4all.com/hardware/arduino/ardu…
Krok 3: Załaduj przykładowy szkic „Pojedynczy”
Po podłączeniu jesteś gotowy do załadowania „Single” SketchOpen Arduino IDE (używam 1.8.1) Kliknij „File” -> „Examples” -> „Dallas Temperature” -> „Single” Dodałem z opóźnieniem(5000); w wierszu 103, aby dać mi czas na skopiowanie numeru seryjnego. Wybierz odpowiednią tablicę z formularza "Narzędzia" -> "Płyta" Wybierz odpowiedni port "Narzędzia" -> "Port"Teraz "Prześlij" Szkic "Szkic" -> "Prześlij" Kliknij "Narzędzia" -> "Monitor szeregowy", upewnij się, że szybkość transmisji odpowiada moim 9600. Jeśli szkic nie został przesłany, sprawdź swoją płytę, port, sterowniki USB itp.
Krok 4: Skopiuj numer seryjny
W „Monitorze szeregowym” zobaczysz czwarty wiersz to „Adres urządzenia 0: xxxxxxxxxxxxxxxx”
To jest numer seryjny DS18B20
Jeśli jest to „0000000000000000”, oznacza to, że wystąpił problem z odczytem DS18B20.
Zaznacz go myszą i naciśnij CTRL + C na klawiaturze, a następnie wklej go w Notatniku
W przypadku moich innych projektów mój kod używa tablicy tych liczb. Sformatowałem ciąg HEX do następującego formatu.
Adres urządzenia tempSensorSerial[9]= {
{0x28, 0xFF, 0x07, 0xA6, 0x70, 0x17, 0x04, 0xB5}, {0x28, 0xFF, 0xB2, 0xA6, 0x70, 0x17, 0x04, 0x28}, {0x28, 0xFF, 0x42, 0x98, 0x70, 0x17,, 0xD3}, {0x28, 0xFF, 0x86, 0xA8, 0x70, 0x17, 0x04, 0xA6}, {0x28, 0xFF, 0x2B, 0x65, 0x71, 0x17, 0x04, 0x76}, {0x28, 0xFF, 0x66, 0x62,, 0x17, 0x04, 0xF5}, {0x28, 0xFF, 0xD9, 0x9B, 0x70, 0x17, 0x04, 0x9C}, {0x28, 0xFF, 0x98, 0x6A, 0x71, 0x17, 0x04, 0xED}, {0x28, 0xFF, 0x42, 0x71, 0x17, 0x04, 0x4C} };
Krok 5: Zakończono
Teraz możesz zidentyfikować każdy pojedynczy czujnik temperatury DS18B20 1-wire w swoim kodzie i użyć funkcji takiej jak ta:
float pobierz temperaturę(bajt j){
czujniki.żądanieTemperaturyByAdres(tempSensorSerial[j]);
float tempC = sensors.getTempC(tempSensorSerial[j]);
temp. powrotu;
}