Włączanie i wyłączanie czegoś to pierwsze poważne zadanie, jakie większość osób daje ESP32. Niebieska płytka z przekaźnikiem kosztuje niewiele, w kodzie wystarczy jedno digitalWrite() i lampa się zapala. Potem okazuje się, że przekaźnik klika przy każdym restarcie płytki, moduł nie chce się wyłączyć z pinu 3,3 V albo mała żarówka LED tli się za przekaźnikiem półprzewodnikowym, który teoretycznie jest wyłączony.

To nie są błędy w kodzie. Wynikają z zasady działania elementów i łatwo ich uniknąć, kiedy się o nich wie.

Dlaczego pin GPIO nie wysteruje cewki przekaźnika bezpośrednio

Przekaźnik to elektromagnes, który przestawia styk. Cewka potrzebuje znacznie większego prądu, niż powinien dawać pin mikrokontrolera. Weźmy Songle SRD-05VDC-SL-C, czarną kostkę z większości tanich modułów. Według karty katalogowej cewka 5 V pobiera 71,4 mA w wersji o podwyższonej czułości i 89,3 mA w wersji standardowej. Do tego wymaga 5 V, a wyjścia ESP32 dają 3,3 V.

Między pinem a cewką musi się więc znaleźć dodatkowy element. Przy samym przekaźniku jest to zwykle tranzystor NPN albo tranzystor MOSFET sterowany poziomem logicznym, a równolegle do cewki dioda. Moduły przekaźników mają taki układ na płytce, często poprzedzony transoptorem. Pin ESP32 dostarcza wtedy tylko kilka miliamperów do bazy tranzystora albo do diody LED transoptora.

Dioda równolegle do cewki

Kiedy prąd w cewce zostaje przerwany, zanikające pole magnetyczne indukuje skok napięcia. Według noty aplikacyjnej TE Connectivity o tłumieniu przepięć na cewkach może on sięgać setek, a nawet tysięcy woltów i pojawia się na elemencie, który wyłączył cewkę. Bez zabezpieczenia tym elementem jest tranzystor.

Standardowym rozwiązaniem jest dioda gasząca, włączona zaporowo równolegle do cewki. Omron w swoich odpowiedziach na częste pytania zaleca diody dla cewek prądu stałego, a warystory albo układy RC dla cewek prądu przemiennego. Dodaje też, że każdy układ tłumiący wydłuża czas zwalniania przekaźnika.

To wolniejsze zwalnianie ma swoją cenę. Według TE przy samej diodzie prąd cewki zanika powoli, więc kotwica otwiera się z mniejszą siłą. Przy dużych prądach obciążenia styki mogą się przy zamykaniu lekko zgrzewać, a zbyt powolne otwieranie może nie rozerwać takiego połączenia. TE proponuje diodę Zenera połączoną szeregowo ze zwykłą diodą: tranzystor nadal jest chroniony, a przekaźnik zwalnia szybciej. Do lampy na płytce hobbystycznej zwykła dioda wystarczy. Przy przekaźniku, który przełącza grzałkę albo silnik blisko prądu znamionowego, warto dodać ten jeden element więcej.

Gotowe moduły przekaźników prawie zawsze mają diodę. Jeśli budujesz własny układ sterujący, nie pomijaj jej.

Moduły przekaźników: sterowanie stanem niskim, JD-VCC i logika 3,3 V

Większość wielokanałowych płytek z przekaźnikami do projektów z Arduino i ESP ma taki sam układ wejść. Random Nerd Tutorials opisuje typowy moduł dwukanałowy tak:

  • VCC i GND zasilają część wejściową modułu, a IN1 i IN2 to wejścia sterujące.
  • Przekaźnik załącza się, gdy napięcie na wejściu spadnie poniżej około 2 V. Moduł jest aktywny stanem niskim: LOW włącza przekaźnik.
  • Zworka łączy VCC z JD-VCC, czyli zasilaniem cewek. Z założoną zworką cewki korzystają z tego samego zasilania co strona ESP32, więc nie ma prawdziwej izolacji. Po zdjęciu zworki JD-VCC zasila się z osobnego źródła, a transoptory oddzielają ESP32 od obwodu przekaźników.

Przy sterowaniu stanem niskim łatwo o dwie pułapki. Po pierwsze, logika w kodzie jest odwrócona: digitalWrite(pin, LOW) włącza odbiornik. Po drugie, od tego zależy, co się dzieje podczas uruchamiania płytki - o tym niżej.

Pytanie o 3,3 V wraca stale przy modułach opisanych jako „5 V”. W module, w którym wejście steruje tranzystorem NPN, 3,3 V zwykle wystarcza. W jednej z odpowiedzi na Arduino Stack Exchange obliczenia dla takiego układu dają około 2,5 mA prądu bazy przy 3,3 V, co wystarcza do przełączenia przekaźnika. Moduły z transoptorem są mniej przewidywalne: inna odpowiedź ostrzega, że 3,3 V może nie zaświecić diody transoptora wystarczająco mocno i trzeba to sprawdzić. Jeśli kanał nie przełącza się niezawodnie, najprościej użyć modułu przeznaczonego do logiki 3,3 V, konwertera poziomów albo własnego stopnia z tranzystorem.

Niezależnie od wyboru masa ESP32 musi być połączona z masą części wejściowej modułu, chyba że celowo zasilasz z osobnego źródła przez JD-VCC wyłącznie cewki.

Wybierz piny, które nie zmieniają stanu przy uruchamianiu

Zaraz po starcie ESP32 pinami nie steruje jeszcze napisany przez ciebie program. Od resetu do chwili, w której kod skonfiguruje pin, niektóre GPIO odczytuje albo przełącza program rozruchowy zapisany w pamięci ROM. Opis wyprowadzeń ESP32 w Random Nerd Tutorials wymienia te, na które trzeba uważać:

  • GPIO0 musi mieć stan niski, żeby układ wszedł w tryb wgrywania oprogramowania, a przy uruchamianiu podaje sygnał PWM.
  • GPIO2 musi być niepodłączony albo w stanie niskim, żeby układ wszedł w tryb wgrywania oprogramowania.
  • GPIO5 i GPIO15 podają przy uruchamianiu sygnał PWM i mają wtedy stan wysoki.
  • GPIO12 podciągnięty do stanu wysokiego uniemożliwia uruchomienie.
  • GPIO14 podaje przy uruchamianiu sygnał PWM.
  • GPIO1 i GPIO3 to port szeregowy, GPIO6-GPIO11 są połączone z pamięcią flash, a GPIO34-GPIO39 działają tylko jako wejścia.

Przewodnik Espressif o wyborze trybu uruchamiania wyjaśnia problem z GPIO12: jeśli w chwili resetu ma stan wysoki, napięcie pamięci flash zostaje ustawione na 1,8 V zamiast 3,3 V. Przy pamięci flash na 3,3 V układ może się wtedy nie uruchomić albo nie dać się zaprogramować.

Przekaźnik na GPIO5 albo GPIO15 może więc kliknąć przy starcie płytki, a w module aktywnym stanem niskim stan niski na pinie podczas uruchamiania oznacza włączenie odbiornika. Do wyjść sterujących odbiornikami Random Nerd Tutorials poleca GPIO13, 16-19, 21-23, 25-27, 32 i 33. W niektórych modułach, na przykład z pamięcią PSRAM, GPIO16 i 17 zajmuje pamięć, więc sprawdź swój egzemplarz.

Potem ustal bezpieczny stan domyślny. Ustaw stan wyjścia na samym początku setup(), przed Wi-Fi i wszystkim, co trwa dłużej. Jeśli odbiornik musi pozostać wyłączony, kiedy ESP32 jest bez zasilania albo się resetuje, sprawdź, jak zachowuje się moduł z niepodłączonym wejściem. Jeśli sam nie zostaje w stanie „wyłączony”, dodaj rezystor podciągający do poziomu, który oznacza wyłączenie.

Przekaźnik elektromechaniczny czy półprzewodnikowy

Przekaźnik półprzewodnikowy (SSR) nie ma ruchomych części. Dioda LED po stronie wejścia wyzwala element półprzewodnikowy po stronie wyjścia, na przykład triak albo tyrystor przy obciążeniach prądu przemiennego, tranzystor mocy przy prądzie stałym albo parę tranzystorów MOSFET do obu rodzajów obciążeń. Przewodnik techniczny Omronu wymienia zalety: brak zużywających się styków, szybkie przełączanie i niewielkie zakłócenia. Wymienia też koszty.

Prąd upływu. SSR nie odłącza odbiornika całkowicie. Omron pisze, że nawet bez sygnału na wejściu przez układ tłumiący (gasik RC) płynie niewielki prąd upływu. Panasonic dodaje, że jeśli prąd odbiornika jest mniejszy niż ten prąd upływu, odbiornik może pozostać włączony. Dlatego mała żarówka LED za „wyłączonym” przekaźnikiem SSR tli się albo migocze. Obaj producenci zalecają rezystor obciążający połączony równolegle z odbiornikiem, a przy bardzo małych obciążeniach przekaźnik z wyjściem MOSFET. Z tego samego powodu Omron przypomina, żeby przed dotykaniem przewodów przekaźnika SSR odłączyć zasilanie: „wyłączony” nie znaczy „odłączony”.

Minimalny prąd obciążenia. Panasonic wyjaśnia, że wyjście triakowe może się nie wyłączyć, jeśli prąd odbiornika jest mniejszy od minimalnego prądu obciążenia podanego dla danego przekaźnika SSR.

Ciepło. Przewodnik Omronu wprost zaznacza, że element trzeba chłodzić. Półprzewodnik, przez który płynie kilka amperów, mocno się nagrzewa, a dopuszczalny prąd przekaźnika SSR zależy od radiatora i temperatury otoczenia. Przekaźnik z napisem 25 A nie przeniesie 25 A w zamkniętej plastikowej obudowie bez radiatora.

Prąd przemienny a stały. Rodzaj wyjścia musi pasować do obciążenia. Omron przypisuje triaki i tyrystory do obciążeń prądu przemiennego, więc do odbiornika prądu stałego wybierz przekaźnik SSR zaprojektowany do prądu stałego.

Przełączanie w zerze napięcia. Wiele przekaźników SSR na prąd przemienny włącza się dopiero wtedy, gdy napięcie sieci przechodzi przez zero. Według Omronu ogranicza to zakłócenia i prąd udarowy. Na prąd upływu nie ma wpływu.

Przekaźnik elektromechaniczny w stanie wyłączenia ma prawdziwą przerwę powietrzną, w stanie włączenia mały spadek napięcia i nie ma prądu upływu. Jego słabe strony to zużycie i szybkość. Karta katalogowa Songle podaje trwałość elektryczną 100 000 przełączeń, mechaniczną 10 milionów i najwyżej 30 przełączeń na minutę pod obciążeniem. Dla pompy, która włącza się trzy razy dziennie, to wystarczy. Dla grzałki włączanej i wyłączanej co kilka sekund już nie. Przewodnik Omronu mówi wprost, że jeśli grzałkę przełącza się w odstępach kilku sekund przez kilka lat, trzeba użyć przekaźnika SSR.

Sprawdź obciążalność styków, a nie liczbę na obudowie

Na przekaźnikach w modułach często widnieje napis „10A 250VAC”. Karta katalogowa Songle podaje dla wersji przełącznej 10 A przy 125 V AC i 7 A przy 240 V AC, przy obciążeniu rezystancyjnym. Przy obciążeniu indukcyjnym styk przełączny ma obciążalność 3 A przy 120 V AC. Silnik, transformator albo zasilacz z dużym kondensatorem wejściowym obciąża styki znacznie bardziej niż grzałka.

Sam przekaźnik to też tylko część modułu. O tym, jaki prąd i jakie napięcie płytka naprawdę wytrzyma, decydują ścieżki na płytce drukowanej, złącza śrubowe i odstępy izolacyjne. Przy odbiornikach sieciowych powyżej kilku amperów bezpieczniej użyć przekaźnika albo stycznika na szynie DIN w porządnej obudowie, a z ESP32 sterować tylko jego cewką.

Z napięciem sieciowym nie ma żartów

Random Nerd Tutorials zamieszcza w poradniku o przekaźnikach z ESP32 ostrzeżenie: napięcie sieciowe może spowodować poważne obrażenia, więc podczas programowania i podłączania płytki odłącz wszystko od sieci, a jeśli nie masz doświadczenia, poproś o pomoc kogoś, kto je ma. Użyj obudowy, która nie dopuszcza palców do zacisków, bezpiecznika dobranego do przewodów i odciążenia kabli. Jeśli chodzi tylko o włączanie gniazdka, certyfikowane inteligentne gniazdko albo gotowy przekaźnik ze sterowaniem lokalnym często będzie lepszym wyborem niż goły moduł.

Krótka lista kontrolna

  • Nigdy nie steruj cewką przekaźnika bezpośrednio z pinu GPIO. Użyj modułu albo stopnia z tranzystorem i diodą gaszącą.
  • Sprawdź, czy moduł jest aktywny stanem niskim, i dopasuj do tego kod.
  • Przetestuj logikę 3,3 V na modułach „5 V”, zwłaszcza tych z transoptorami.
  • Nie podłączaj odbiorników do GPIO0, 2, 5, 12, 14 i 15, a stan wyjścia ustaw jak najwcześniej.
  • Jeśli zależy ci na prawdziwej izolacji, zdejmij zworkę JD-VCC i zasil cewki z osobnego źródła.
  • Do częstego przełączania używaj przekaźnika SSR, ale uwzględnij prąd upływu, nagrzewanie i minimalny prąd obciążenia.
  • Dobierz przekaźnik do rzeczywistego rodzaju obciążenia, a nie do liczby na obudowie.