Zaloguje się
or
Tel +48 698 615 740

Podłączenie wodoodpornych czujników temperatury DS18B20 do Arduino wraz z wyświetlaczem

22 września, 2022

W artykule zostanie przedstawione podłączenie pojedynczego czujnika jak i większej ich ilości. Czujniki zostaną wykorzystane w programie, gdzie będziemy odczytywać tą wartość na wyświetlaczu dotykowym. Program będzie również posiadał możliwość ręcznego odświeżenia temperatur.

Spis treści

  • Krótki opis
  • Specyfikacja
  • Wykorzystane komponenty
  • Podłączenie jednego czujnika
  • Podłączenie większej ilości czujników
  • Odczytanie adresu czujnika/czujników
  • Odczytywanie wartości z czujnika/czujników
  • Program z czujnikami i wyświetlaczem
  • Działanie w praktyce
  • Pliki do pobrania

Krótki opis

Czujnik temperatury DS18B20 wodoodporny.  Czujnik nie jest zakończony wtykiem.

Specyfikacja

  • Zastosowany układ : DS18B20
  • Zasilanie 3,3-5V
  • Zakres pomiar -55°C do 125°C ± 0.5°C
  • Obudowa nierdzewna
  • Długość przewodu 1m
  • Wyprowadzenie: 3 przewody VCC-czerwony, GND-czarny, DATA-niebieski
  • Do płytek stykowych, modułów uruchomieniowych, układów mikroprocesorowych arduino itp.

Wykorzystane komponenty

  • Arduino Mega
  • Płytka stykowa
  • Czujniki wodoodporne DS18B20
  • Dotykowy Wyświetlacz LCD TFT przekątna 3.2″

Podłączenie jednego czujnika

Przy podłączeniu jednego czujnika będziemy potrzebowali rezystora 4,7kΩ, z czujnika wychodzą 3 przewody, jeden czarny, drugi żółty i czerwony. Na schemacie jest czujnik nie wodoodporny, ale podłączenie wygląda tak samo. Czarny przewód odpowiada za uziemienie (na schemacie pierwszy przewód od lewej), żółty za sygnał (środkowy przewód na schemacie) no i czerwony za zasilanie (ostatni na schemacie).

Podłączenie większej ilości czujników

Aby podłączyć więcej czujników musimy najpierw zrobić powyższe połączenie, gdy mamy je gotowe możemy podłączyć kolejne czujniki. Na poniższym schemacie jest przedstawione przykładowe połączenie, można również wziąć przewody wszystkich czujników: czerwony i czarny, zlutować ze sobą i to samo zrobić z żółtymi. Do tego lutujemy przewód za pomocą, którego będziemy mogli go wpiąć do płytki stykowej i połączenie gotowe.

Odczytanie adresu czujnika/czujników

Aby odczytać adres naszych czujników będziemy potrzebowali bibliotek, które można pobrać na samym dole artykułu. Włączamy przykład z biblioteki search_ds18b_20_addresses

Wgrywamy do arduino, włączamy monitor portu szeregowego i powinny wyświetlić się nam wszystkie adresy czujników, warto je gdzieś zapisać, ponieważ przydadzą się nam w kolejnym kroku.

Odczytywanie wartości z czujnika/czujników

Włączamy przykład ds18b20_multpiple_sensors

Wpisujemy adresy czujników

Zmieniamy liczbę naszych czujników

Wgrywamy program do arduino i po otworzeniu monitora portu szeregowego powinny wyświetlać się odczyty.

Program z czujnikami i wyświetlaczem

Cały gotowy program będzie do pobrania pod spodem, ponieważ jest on za duży, aby go tutaj umieścić.

W programie na początku zmieniamy adresy czujników i ich ilość na własne.

const byte ONEWIRE_PIN = 2; //numer pinu do odczytywania temperatury
const byte SENSORS_NUM = 16; //ilość czujników temperatury

//adresy czujników temperatury
const byte sensorsAddress[SENSORS_NUM][8] PROGMEM = {
  0x28, 0xFA, 0x7C, 0x14, 0x0, 0x0, 0x0, 0xD9,
  0x28, 0xB1, 0xB1, 0x14, 0x0, 0x0, 0x0, 0x9A,
  0x28, 0x47, 0x78, 0x14, 0x0, 0x0, 0x0, 0x8B,
  0x28, 0x37, 0x5, 0x15, 0x0, 0x0, 0x0, 0x1D,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x40, 0x6D, 0x70,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x2C, 0xC1, 0x6B,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x3E, 0xBC, 0x13,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x9, 0xC5, 0x34,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x59, 0xC9, 0xE0,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x45, 0x14, 0xEB,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x55, 0x30, 0x45,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x55, 0x13, 0x84,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x4B, 0x42, 0x31,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x4B, 0xCB, 0x21,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x5B, 0xC9, 0x71,
  0x28, 0xFF, 0x64, 0x1E, 0x87, 0x5F, 0xD1, 0x15,
};

W programie wykorzystano funkcję, która robi pomiary i zwraca temperaturę z czujnika. Jako argument przyjmuje jego numer.

float wykonajPomiarTemp(int i)
{
  float temperature = 0;

  if (sensors.available())
  {
    temperature = sensors.readTemperature(FA(sensorsAddress[i]));

    Serial.print(temperature);
    Serial.println(F(" 'C"));

  }

  return temperature;
}

Po wywołaniu funkcji w programie trzeba umieścić sensors.request();

Działanie w praktyce

Pliki do pobrania

Sticky
Możliwość komentowania Podłączenie wodoodpornych czujników temperatury DS18B20 do Arduino wraz z wyświetlaczem została wyłączona
Adrian Wojtala

Adrian Wojtala

Ma 21 lat. Studiuje informatykę na Uniwersytecie DSW, ukończył technikum o profilu technik-informatyk. Interesuje się programowaniem i w przyszłości ma plan zostać back-end developerem. Swoją przygodę z Arduino rozpoczął podczas praktyk od września 2021 r.

Comments are closed.

Strona korzysta z plików cookies w celu realizacji usługi i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.