Spisu treści:

Uzyskaj numer seryjny DS18B20 z Arduino: 5 kroków
Uzyskaj numer seryjny DS18B20 z Arduino: 5 kroków

Wideo: Uzyskaj numer seryjny DS18B20 z Arduino: 5 kroków

Wideo: Uzyskaj numer seryjny DS18B20 z Arduino: 5 kroków
Wideo: DS18B20 podróbka vs oryginał. Jak je odróżnić? Jakie wady mają podróbki? 2024, Lipiec
Anonim
Uzyskaj numer seryjny DS18B20 z Arduino
Uzyskaj numer seryjny DS18B20 z Arduino

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

Dodaj wymaganą bibliotekę do Arduino IDE
Dodaj wymaganą bibliotekę do Arduino IDE
  1. Otwórz Arduino IDE (używam 1.8.1)
  2. Kliknij „Szkic” -> „Dołącz bibliotekę” -> „Zarządzaj bibliotekami…”
  3. Wybierz pasek wyszukiwania i wpisz „dallas”
  4. Kliknij „DallasTemperature” i kliknij „Zainstaluj”

Alternatywnie możesz pobrać bibliotekę stąd:

Ta biblioteka zawiera bibliotekę OnWire.

Krok 2: Podłącz DS18B20

Podłącz DS18B20
Podłącz DS18B20
Podłącz DS18B20
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”

Załaduj przykładowy szkic
Załaduj przykładowy szkic
Załaduj przykładowy szkic
Załaduj przykładowy szkic

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

Skopiuj numer seryjny
Skopiuj numer seryjny
Skopiuj numer seryjny
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

Skończone
Skończone

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;

}

Zalecana: