Spisu treści:
- Krok 1: Historia za…
- Krok 2: Jak to działa
- Krok 3: Materiały i narzędzia
- Krok 4: Napraw wszystko razem
- Krok 5: Połącz wszystko razem
- Krok 6: Podłączanie czujników
- Krok 7: Oprogramowanie kontrolera
- Krok 8: Wniosek
Wideo: Odporny na awarie sterownik sieciowy czujnika temperatury: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
Przyklej żeńskie nagłówki pinów do nagłówków płytki Arduino:
- Listwa 1×4 obok listwy „analogowej”, z boku na bok z pinami A0–A4
- Header 1×6 obok pierwszej cyfrowej listwy pinowej, z boku na bok z pinami 2–7
- 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
Okablowanie magistrali 1-wire:
- 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
- Przylutuj koniec tego przewodu do przewodu stykowego SCL (wewnętrznie podłączonego do A5)
- Połącz wszystkie wyprowadzenia przyklejonej listwy po stronie „analogowej” (piny A0–A3) lutując do nich kawałek gołego drutu
- 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)
- 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
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
Szkic SerialThermometer uruchamia kontroler. Możesz go znaleźć na githubie. Otwórz i prześlij za pomocą Arduino IDE.
Krok po kroku:
- 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.
- Sklonuj repozytorium git. Jeśli nie znasz git, pobierz i rozpakuj ten zip w dowolnym miejscu na swoim komputerze.
- Otwórz szkic SerialThermometer w swoim Arduino IDE.
- Podłącz zmodyfikowaną płytkę Arduino do komputera kablem USB (standardowy sposób)
- Prześlij szkic za pomocą swojego Arduino IDE
- Otwórz monitor szeregowy za pomocą narzędzi | Monitor szeregowy
- 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:
ESP8266 i Visuino: Serwer sieciowy temperatury i wilgotności DHT11: 12 kroków
ESP8266 i Visuino: Serwer WWW temperatury i wilgotności DHT11: Moduły ESP8266 to świetne, niedrogie, samodzielne kontrolery z wbudowanym Wi-Fi, i zrobiłem już na ich temat wiele instrukcji. i czujniki wilgotności Arduino, a ja zrobiłem num
Wentylator biurkowy nadający się do recyklingu (odporny na awarie): 10 kroków (ze zdjęciami)
Recyklingowy wentylator biurkowy (awaryjny): Jest to instrukcja, jak zrobić niezwykle prosty mini wentylator stołowy, który można ponownie wykorzystać ze wszystkich kubków z napojami, które prawdopodobnie wyrzucisz (najprawdopodobniej dla mnie kubki Boba Tea) i alternatywę dla ochłodzenia się w upalny słoneczny dzień. To z
Odczyt temperatury za pomocą czujnika temperatury LM35 z Arduino Uno: 4 kroki
Odczytywanie temperatury za pomocą czujnika temperatury LM35 z Arduino Uno: Cześć, w tej instrukcji dowiemy się, jak używać LM35 z Arduino. Lm35 to czujnik temperatury, który może odczytywać wartości temperatury od -55°C do 150°C. Jest to 3-zaciskowe urządzenie, które dostarcza napięcie analogowe proporcjonalne do temperatury. Cześć G
Jak korzystać z czujnika temperatury DHT11 z Arduino i temperatury drukowania, ciepła i wilgotności: 5 kroków
Jak używać czujnika temperatury DHT11 z Arduino i drukowania temperatury, ciepła i wilgotności: Czujnik DHT11 służy do pomiaru temperatury i wilgotności. Są bardzo popularnymi hobbystami elektroniki. Czujnik wilgotności i temperatury DHT11 ułatwia dodawanie danych o wilgotności i temperaturze do projektów elektroniki DIY. To za
Samolot RC sterowany przez Bluetooth (odporny na awarie): 8 kroków
Samolot sterowany przez Bluetooth (odporny na awarie): Drodzy wszyscy, życzę miłego dnia !!! link do filmu można znaleźć poniżej. https://youtu.be/R8zGcuEch48Samoloty zawsze przyciągają m