Spisu treści:

Odporny na awarie sterownik sieciowy czujnika temperatury: 8 kroków
Odporny na awarie sterownik sieciowy czujnika temperatury: 8 kroków

Wideo: Odporny na awarie sterownik sieciowy czujnika temperatury: 8 kroków

Wideo: Odporny na awarie sterownik sieciowy czujnika temperatury: 8 kroków
Wideo: Sterowniki do ogrzewania podłogowego montaż krok po kroku. Inteligentny dom. Smart home. 2024, Listopad
Anonim
Odporny na awarie sterownik sieciowy czujnika temperatury
Odporny na awarie sterownik sieciowy czujnika temperatury

Ta instrukcja pokazuje, jak przekonwertować płytkę Arduino Uno w jednofunkcyjny kontroler dla zestawu czujników temperatury DS18B20 zdolnych do automatycznej izolacji wadliwych czujników.

Kontroler może zarządzać maksymalnie 8 czujnikami z Arduino Uno. (I wiele więcej z Arduino Mega lub z niewielką modyfikacją oprogramowania.)

Krok 1: Historia za…

Kilka lat temu założyłem sieć czujników temperatury DS18B20 w szklarni mojego ojca dla mojego regulatora ogrzewania opartego na pi. Niestety, niezawodność sterownika była słaba głównie z powodu częstych awarii czujników. Próbowałem wielu ustawień - moc pasożyta, zasilanie bezpośrednie, podłączenie sieci do pi, a także podłączenie jej do niestandardowej płyty opartej na Atmega (której głównym celem było napędzanie silników zaworów).

Co gorsza, niezawodność sieci czujników spadła głównie w zimowe noce, podczas gdy latem prawie nie było problemów! Co tu się do cholery dzieje?

Aby zbadać, który czujnik powoduje problem, pojawiła się potrzeba włączania/wyłączania ich pojedynczo lub włączania dowolnej ich kombinacji.

Krok 2: Jak to działa

DS18B20 (czujnik temperatury) wykorzystuje zastrzeżony protokół 1-przewodowy, który umożliwia wielu czujnikom współdzielenie wspólnego łącza danych (ten jeden przewód). To wspólne łącze danych jest podłączone do jednego z pinów GPIO Arduino i do + 5 V przez rezystor podciągający – nic niezwykłego, wiele instrukcji obejmuje tę konfigurację.

Sztuczka polega na tym, że przewody zasilające każdego czujnika są podłączone do własnych (dedykowanych) pinów GPIO, dzięki czemu można je oddzielnie włączać i wyłączać. Na przykład, jeśli czujnik ma przewód Vcc podłączony do styku 3, a GND do styku 2, ustawienie styku 3 na WYSOKI zapewnia zasilanie czujnika (bez niespodzianki), podczas gdy ustawienie styku 2 na NISKI zapewnia uziemienie (małe zaskoczenie dla ja). Ustawienie obu pinów w tryb wejścia spowoduje (prawie) całkowite odizolowanie czujnika i jego okablowania – bez względu na to, jaka awaria (np. zwarcie) wydarzy się w jego wnętrzu, nie będzie kolidował z pozostałymi.

(Można powiedzieć, że podłączenie przewodu danych do czegoś innego połączonego w jakiś sposób z Arduino rzeczywiście spowoduje zakłócenia, ale w mojej konfiguracji jest to prawie niemożliwe).

Zauważ, że DS18B20 pobiera do 1,5 mA, podczas gdy jeden pin Arduino może pobierać / pobierać do 40 mA, więc można całkowicie bezpiecznie zasilać czujniki bezpośrednio przez piny GPIO.

Krok 3: Materiały i narzędzia

Materiał

  • 1 płytka Arduino UNO
  • 3 żeńskie główki pinów: 1×4, 1×6 i 1×6 (lub dłuższe – wycinam je z jednej główki 1×40)
  • klej
  • kawałek gołego drutu miedzianego (co najmniej 10 cm)
  • taśma izolacyjna
  • materiały eksploatacyjne do lutowania (drut, topnik…)

Narzędzia

  • sprzęt lutowniczy (żelazko, uchwyty, …)
  • małe szczypce do cięcia

Krok 4: Napraw wszystko razem

Naprawiaj rzeczy razem
Naprawiaj rzeczy razem

Przyklej żeńskie nagłówki pinów do nagłówków płytki Arduino:

  1. Listwa 1×4 obok listwy „analogowej”, z boku na bok z pinami A0–A4
  2. Header 1×6 obok pierwszej cyfrowej listwy pinowej, z boku na bok z pinami 2–7
  3. Listwa 1×6 obok drugiej cyfrowej listwy pinowej, z boku na bok z pinami 8–13

Zauważ, że moje nagłówki są nieco dłuższe… przypuszczam, że nie ma żadnych wad ani zalet.

Krok 5: Połącz wszystko razem

Połącz rzeczy razem
Połącz rzeczy razem
Połącz rzeczy razem
Połącz rzeczy razem

Okablowanie magistrali 1-wire:

  1. Połącz wszystkie wyprowadzenia przyklejonych głowic po stronie „cyfrowej” (przylegające do pinów 2–13) lutując do nich kawałek gołego drutu
  2. Przylutuj koniec tego przewodu do przewodu stykowego SCL (wewnętrznie podłączonego do A5)
  3. Połącz wszystkie wyprowadzenia przyklejonej listwy po stronie „analogowej” (piny A0–A3) lutując do nich kawałek gołego drutu
  4. Końcówkę tego przewodu przylutuj do wyprowadzeń A4 i A5 (ja użyłem A5 i A6 bo mam płytkę która ma A6 i A7)
  5. Przylutuj rezystor 4k7 między drugim końcem tego przewodu a przewodem pinowym +5 V

Uwagi:

  • Piny A0–A5, chociaż oznaczone jako „analogowe”, mogą być również używane jako piny cyfrowe GPIO.
  • Pin SCL po stronie „cyfrowej” jest wewnętrznie podłączony do A5 po stronie „analogowej”; podłączony do nagłówków, tworzy linię magistrali 1-wire;
  • A4 (używane jako wejście analogowe) mierzy napięcie magistrali w celach diagnostycznych. Dlatego jest bezpośrednio połączony z autobusem.
  • Użyłem A6 zamiast A4, ponieważ mam płytę, która ma A6 i A7; pierwotnie chciałem użyć A7 jako 1-wire bus master, ale te dwa piny nie mogą być skonfigurowane jako cyfrowe GPIO.
  • Aby zapobiec błędnemu podłączeniu złączy czujników, można pominąć / wyciąć nieużywany styk (nie podłączony do żadnego przewodu) z każdego złącza męskiego i włożyć go do odpowiedniego otworu w wklejonej listwie kołkowej.

Krok 6: Podłączanie czujników

Podłączanie czujników
Podłączanie czujników

Właśnie stworzyłeś tablicę ośmiu gniazd 2x2. Możesz przylutować i zmontować złącza Dupont 2×2 do kabli czujników i podłączyć je do tych gniazd. Oprogramowanie konfiguruje piny tak, że nawet piny to piny GND, a piny nieparzyste to piny Vcc. Dla każdego czujnika pin Vcc to tylko pin GND + 1. Jeden z pozostałych dwóch pinów gniazda 2×2 (jeden z tych dwóch w nagłówku klejonym i lutowanym) jest przeznaczony do przewodu danych czujnika. Nie ma znaczenia, którego używasz.

Krok 7: Oprogramowanie kontrolera

Oprogramowanie kontrolera
Oprogramowanie kontrolera

Szkic SerialThermometer uruchamia kontroler. Możesz go znaleźć na githubie. Otwórz i prześlij za pomocą Arduino IDE.

Krok po kroku:

  1. Otwórz swoje Arduino IDE i zainstaluj bibliotekę DallasTemperature i wszystkie jej zależności za pośrednictwem Sketch | Dołącz bibliotekę | Zarządzaj bibliotekami.
  2. Sklonuj repozytorium git. Jeśli nie znasz git, pobierz i rozpakuj ten zip w dowolnym miejscu na swoim komputerze.
  3. Otwórz szkic SerialThermometer w swoim Arduino IDE.
  4. Podłącz zmodyfikowaną płytkę Arduino do komputera kablem USB (standardowy sposób)
  5. Prześlij szkic za pomocą swojego Arduino IDE
  6. Otwórz monitor szeregowy za pomocą narzędzi | Monitor szeregowy
  7. Powinieneś zobaczyć wyjście diagnostyczne zawierające kilka pomiarów fizycznych, a następnie odczyty temperatury – każde gniazdo czujnika na jednej linii. Jeśli liczba czujników różni się, gdy są włączone osobno i gdy wszystkie są włączone razem), pętle diagnostyczne do momentu rozwiązania. Ale nie martw się, również diagnostyka zapewnia pomiary temperatury!

Zobacz obraz z adnotacjami, aby uzyskać więcej informacji na temat danych wyjściowych diagnostycznych.

Krok 8: Wniosek

Mam silne wrażenie, że awarie mojej sieci sensorowej spowodowane były dużą pojemnością mojego długiego okablowania – około 10 m kabla LIYY 314 (3×0,14 mm²) na każdy sensor. Moje eksperymenty wykazały, że komunikacja przerywa się, jeśli jest pojemność około 0,01 μF między magistralą 1-wire a masą, myślę, że ponieważ rezystor podciągający 4k7 nie jest w stanie podciągnąć magistrali do +5 V wystarczająco szybko, aby spełnić ograniczenia protokołu.

W mojej konfiguracji dzieje się tak, gdy więcej niż 3 czujniki są ze sobą połączone. Następnie sterownik zapętla się w cyklu diagnostycznym, mierząc czujnik po czujniku (co też jest fajne…)

Ale też piąty czujnik (28:ff:f2:41:51:17:04:31) wygląda dość źle (może źle lutuje), więc mogę zbadać dalej!

Zalecana: