SantyagoSantyago
YouTube RSS Google+ Facebook GitHub

Newsletter Arduino

Zapisz się do Newslettera, aby otrzymać informację o nowych wpsiach w dziale Arduino!

Arduino poradnik

Wstęp

Teoria

Biblioteki

Komponenty

Czujniki i sensory

Rozwiązania i algorytmy

Narzędzia

Mikrokontrolery i Arduino IDE

Arduino i klony

Poradniki wideo

Sprzęt dostarczają

Reklama na Blogu

Najnowsze poradniki

Ostatnie komentarze

Popularne wpisy

Facebook

Google+

Ostatnie fotografie

polskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorywieliczka-szyb-danilowicza

Co to jest przekaźnik i jak działa?

Przekaźnik to nic innego jak przełącznik, który do swojego działania wykorzystuje zjawisko pola elektromagnetycznego do zmiany położenia swoich styków. Najczęściej zbudowany jest z cewki nawiniętej na rdzeń ferromagnetyczny, tworząc elektromagnes. Podczas przepływu prądu przez cewkę, wytwarzane jest pole magnetyczne, którego natężenie wzrasta wraz ze zwiększeniem się natężenia przepływającego prądu. Wytworzone w ten sposób pole magnetyczne przyciąga do siebie magnetyczną kotwiczkę, która zwiera i/lub rozwiera styki kolenego obwodu. Jak to wygląda?

W naszym przypadku, najczęściej stosowane przekaźniki pracują z napięciem zasilania cewki wynoszącym 5V, pozwala to na wytworzenie odpowiednio silnego pola magnetycznego do przyciągnięcia ów kotwiczki, zmieniając tym samym położenie styków.

W zelażności od budowy przekaźnika, możemy spotkać się z różną ilością styków odpowiadającą ilości możliwych obwodów. Styki te oznaczone są jako COM (common - wspólny), NC (normally close - normalnie zamknięty) oraz NO (normally open - normalnie otwarty). Normalnie zamknięty to taki, który bez przyłożenia napięcia do cewki pozostaje zamknięty, czyli zwarty. Normalnie otwarty zaś na odwrót. Po przyłożeniu napięcia do cewki, położenie styków zmienia się na przeciwny - normalnie zamknięty się otwiera, a normalnie otwarty zamyka.

Przkeźniki stosujemy najczęściej w przypadku, gdy chcemy za pomocą niskonapięciowych sygnałów (np. z Arduino) włączyć obowdy pracujące z dużo większymi napięciami i prądami, nawet sieciowymi 230V. Dlatego podczas pracy i budowy takiego urządzenia należy zachować szczególną ostrożność!

W sklepach możemy znaleźć bardzo szeroką gamę przekaźników pracujących na różnych napięciach zasilania oraz napięć i prądów przepływających przez jego styki. Najczęściej spotykane przekaźniki 5V, mogących przepuścić przez siebie prąd 10A przy napięciu sieciowym 230V.

Pomimo tego, że do działania przekaźnika wymagane jest tylko przyłożenie odpowiedniego napięcia zasilania cewki, to aby bezpiecznie sterować jego działaniem za pomocą mikrokontrolera, wymagane jest zbudowanie odpowiedniego układu sterującego:

Na powyższym schemacie  zastosowano dodatkowy optoizolator, tranzystor NPN, diodę zabezpieczającą oraz dwa rezystory. Sygnał z mikrokontrolera podawany jest na wejście SIG bezpośrednio do  optoizloatora OK1 poprzez rezystor ograniczający prąd R1.

Zadaniem optoizolatora jest zabezpieczenie naszego układu cyfrowego w przypadku uszkodzenia przekaźnika i przedostania się wysokiego napięcia poza jego styki. W najgorszym scenariuszu, uszkodzeniu ulegną elementy sterujące przekaźnikiem z optoizolatorem włącznie.

Wyjście optoizolatora połączone jest z kolei przez rezystor R2 do bramki tranzystora NPN T1. O ile rezystor R1 najczęściej posiada wartość 1 kΩ - 10 kΩ, to dobór wartości rezystora R2 jest zależny od zastosowanego tranzystora T2, który razem fototranzystorem optoizolatora tworzą układ Darlingtona. Dlatego należy pamiętać o mnożeniu się ich współczynników wzmocnienia i maksymalnym prądzie bramki tranzystora T2. Najcześciej jednak, wartość rezystora R2 to kila lub kilkadziesiąt Ω. 

Ostatnim elementem jest dioda D1 podłączona równolegle do uzwojeń cewki przekaźnika, która ma na zadanie zabezpieczyć układ przed wystąpieniem napięcia wstecznego, które może indukować się w cewce podczas wyłączenia przekaźnika. Generowane napięcie może wielokrotnie przewyższyć napięcie zasilania samego przekaźnika. Zastosowanie diody Schottky w kierunku zaporowym jest odpowiednie, jednak spokojnie możemy zastosować tanie diody impulsowe 1N4148 lub SY345-8L. Dobierając jednak diodę musimy zwrócić uwagę na jej parametr prądu przewodzenia, ponieważ on powie nam, czy wytrzyma prąd wsteczny wygenerowany przez cewkę. Dioda taka powinna być umieszczona jak najbliżej styków cewki przekaźnika.

Gotowe moduły przekaźników

Jeśli nie czujemy się na siłach, aby wykonać własny sterownik przekaźnika, możemy skorzystać z szerokiej gamy gotowych modułów. A jest na prawdę w czym wybierać. Dostępne są moduły z pojedynczym przekaźnikiem lub nawet szesnastoma przekaźnikami. Niektóre posiadają wspomniany optoizolator, niektóre go nie posiadają. Różnią się również ilością pinów sterujących, parametrami pracy czy prędkością działania.

Najczęściej spotkamy się z modułami z optoizolatorem oraz przekaźnikiem SONGLE. W zależności od modułu, przekaźnik załączany jest przy podaniu stanu wysokiego lub niskiego na pin sterujący.

Sporą i bardzo ofertę znajdziecie w sklpeie elty.pl - same przekaźniki oraz gotowe moduły.

Datasheet przekaźników SONGLE.

Sterowanie stanem niskim czy wysokim?

Jak wspomniałem, przekaźnik w zależności od budowy modułu może być załączany podaniem stanu wysokiego lub niskiego (zwarciem do masy). Z naszego punktu widzenia lepszym wyborem mogą okazać się te załączane stanem niskim, ponieważ domyślnie nieskonfigurowane piny mikrokontrolera posiadają stan nieustalony, a to z kolei nie wpłynie na stabilność zachowania się przekaźnika (pozostanie on wyłączony) i nie załączy się losowo podczas uruchomienia układu.

W poprzednim schemacie przedstawiona była konfiguracja sterowania stanem wysokim. Dla sterowania stanem niskim, może wyglądać to następująco:

Sterowanie za pomocą Arduino jest banalnie proste - tak proste jak świecenie diodą LED podłączoną do cyfrowego pinu. Wszystko co musimy zrobić, to podłączyć masę, zasilanie oraz wybrać cyfrowy pin w Arduino do sterowania wejściem przekaźnika.

  1. void setup()
  2. {                
  3.   pinMode(3, OUTPUT);     
  4. }
  5.  
  6. void loop()
  7. {
  8.   digitalWrite(3, HIGH);
  9.   delay(1000);
  10.   digitalWrite(3, LOW);
  11.   delay(1000);
  12. }

Powyższy program. co sekundę będzie włączał i wyłączał nasz przekaźnik.

Chciałbym przy okazji obalić często panujący mit, że załączanie przekaźnika stanem niskim niesie za sobą oszczędność energii, ponieważ cyfrowy pin nie musi być ciągle w stanie wysokim.

Po części to prawda, jednak wymagane ~2mA do podtrzymania załączenia przekaźnika to nic w przypadku, gdy zasilana cewka przekaźnika pobiera prąd na poziomie ~60mA. Jeśli zależy nam na oszczędności energii podczas pracy z przekaźnikami, powinniśmy zwrócić swoją uwagę na przekaźniki bistabilne.

Przekaźniki bistabilne

Przekaźniki bistabilne znane są już od wielu lat. Niestety ich popularność nie jest zbyt wysoka, a to wielki błąd. Na szczęście powoli się to zmienia za sprawą wzrostu zapotrzebowania na elektronikę o niskim zużyciu energii ze względów ekologicznych :) lub konieczności pracy układu na zasilaniu bateryjnym.

Nie sposób się domyśleć, że podtrzymanie działania standardowego przekaźnika kosztuje nas około 60mA, a to wcale nie mało w porównaniu z zapotrzebowaniem Atmega328 pracującego z częstotliwością 16MHz i napięciu 5V wynoszącym 16-30mA. Ciągłe zasilanie cewki przekaźnika może skrócić pracę naszego układu nawet 4-5 krotne.

Dodatkowo nie zapowiada się, aby tradycyjne przekaźniki przez najbliższy czas były zdolne do niskiego poboru energii, dlatego zbawieniem mogą być właśnie przekaźniki bistabilne, które pobierają energię tylko podczas zmiany stanu położenia styków.

Istotną cechą przekaźników bistabilnych jest również ich pamięć. Styki pozostaną w tym samym położeniu, nawet w przypadku zaniku zasilania układu sterującego. Niesie to również pewne niebezpieczeństwo. W przypadku tradycyjnego przekaźnika, gdy cewka nie jest zasilana, styki są zwarte w konfiguracji COM-NC. Tak więc podłączenie np. elementu grzejnego pod jego obwód było relatywnie bezpieczne po powrocie napięcia zasilania. W przypadku przekaźnika bistabilnego takie założenie może mieć opłakane dla nas skutki, ponieważ w chwili powrotu zasilania układ i ponownego uruchomienia programu, jego styki mogą znajdować się w dowolnym położeniu (np. ustawiony wcześniej stan załączenia obwodu z elementem grzejnym i puszczenia stodoły z dymem).

Dlatego bardzo ważne jest, aby podczas inicjalizacji programu odczytać aktualny stan położenia styków, albo od razu ustawić ich stan w domyślnym, znanym nam dla nas położeniu (tzw. reset przekaźnika). Na szczęście jest to proces bardzo prosty, gdyż załączenie i rozłączenie styków nie musi być wykonywane naprzemiennie. Prościej mówiąc - jeśli stan wysoki powoduje załączenie przekaźnika, to ponowne wystawienie stanu wysokiego nie spowoduje zmiany położenia styków.

Koniec konców, w funkcji setup() możemy usatwić pin tak, aby wygenerować sygnał wyłączający przekaźnik, nie ważne czy wcześniej był on wyłączony czy załączony

No dobrze, ale jak to działa?

Wszystko zależy od tego ilu cewkowy jest przekaźnik, ale podstawą utrzymania położenia styków w określonej pozycji jest zastosowanie dodatkowego, specjalnego materiału obwodu magnetycznego z wbudowanym magnesem przytrzymującym styki w stanie załączenia.

W przypadku przekaźników z jedną cewką. załączenie styków wymaga podania odpowiedniego napięcia na cewkę, aby je zamkąnąc. Aby odwrócić ich stan, kierunek prądu musi zmienić się na przeciwny:

W przypadku przekaźników z dwoma cewkami, podanie napięcia na jedną z nich powoduje "załączenie" styków, natomiast podanie napięcia na drugą cewkę powoduje rozłączenie (reset).

Takim dwucewkowym przekaźnikiem może być HFD2/005-M-L2(555) zastosowanym w module oferowanym przez sklep elty.pl.

Sterowanie za pomocą Arduino

Moduł zbudowany jest tak, że stan styków zmienia się w chwili wystąpienia zbocza narastającego lub opadającego. Jeśli przekaźnik znajduje się aktualnie w stanie załączenia (zwarcia styków COM i NO). wyłączenie, czyli zwarcie styków COM i NC następuje w chwili pojawienia się zbocza narastrającego.

Aby mieć więc pewność, że przekaźnik podczas uruchomienia programu jest wyłączony, musimy zrealizować poniższy program, czyli sprawić, że ostatnią zmianą zbocza, będzie zbocze narastające.

  1. void setup()
  2. {
  3.   pinMode(3, OUTPUT);
  4.   digitalWrite(3, LOW);
  5.   delay(1000);
  6.   digitalWrite(3, HIGH);
  7.   delay(1000);
  8. }
  9.  
  10. void loop() { }

Aby sytuacja była odwrotna, doprowadzamy, aby ostatnim występującym zboczem było zbocze opadające.

  1. void setup()
  2. {
  3.   pinMode(3, OUTPUT);
  4.   digitalWrite(3, HIGH);
  5.   delay(1000);
  6.   digitalWrite(3, LOW);
  7.   delay(1000);
  8. }
  9.  
  10. void loop() { }

Szalenie istotną cechą tego modułu jest to, że kiedy nie zmieniamy położenia styków przekaźnika, moduł pobiera bardzo znikomy prąd rzędu 100uA w przypadku wyłączonego przekaźnika (zwarcie COM-NC) i około 50uA w przypadku jego załączenia (zwarcie COM-NO). Więc jeśli zależy nam na oszczędności energii lub pracy urządzenia na zasilaniu bateryjnym, przekaźnik bistabilny to idealne rozwiązanie.

Powyższy moduł wyposażony jest w przekaźnik, który niestety nie nadaje się dla pracy z polskim napięciem sieciowym 230V, ponieważ jego styki wytrzymują maksymalnie napięcie 125V i prąd 1A. Ale doskonale sprawdzi się z napięciem stałym 30V i prądzie 2A.

Jak widać poniżej, załączenie przekaźnika i odłączeniu od niego zasialania, nadal posiada zwarte styki COM-NO, dostarczając z akumulatorka energię do drugiej płytki Arduino.

Zakłócenia generowane przez styki przekaźnika

Nie lada problemem, który jest często ignorowany przez projektantów są zakłócenia generowane przez styki przekaźnika. Dlatego jeśli projektujemy własne urządzenie nie wykorzystujące Arduino, bezwzględnie pamiętajmy o filtrowaniu zasilania mikokontrolerta. Warto też pamiętać, że styki przekaźnika są częściami ruchomymi, to też cierpią na dwa niepożądanie zjawiska - występowanie łuku elektrycznego podczas przełączania oraz drgania styków w momencie stykania się par styków.

Aby utrudnić występowanie tych zjawisk, możemy dołączyć prosty układ tłumiący - popularnie nazywany gasikiem. Układ taki jest włączany (w zależności od potrzeb) równolegle do styków przekaźnika lub samego odbiornika. Najbardziej popularnym gasikiem jest połączenie szeregowe dwóch elementów - kondensatora oraz rezystora. Ich wartości dobieramy na podstawie napięcia pracy odbiornika oraz pobieranego przez niego prądu. Dobór tych parametrów nie jest taki prosty, a sam temat gasików to temat rzeka. Możemy jednak posłużyć się poniższym nomogramem z katalogu ELFA.

Przykładowo dla obciążenia 230V i prądu 1A wartość C=0.1uF R=20Ω

Materiał filmowy

Udpstępnij dalej!

http://www.jarzebski.pl/arduino/komponenty/przekazniki-elektromagnetyczne.html

Reklama

Komentarze Komentarze
Avatar 1
Kordian Linux Ubuntu / Mozilla Firefox 44.0
07 marzec 2016 - 11:03 Brak informacji

Bardzo pouczające treści przekazane w przystępny sposób.

Chciałbym odwołać się do Pana wiedzy.

Przy opisie przekaźnika typu SSR sprzedawca zaleca podłączenie układu gasikowego. W moim przypadku obciązeniem dla tego przekaźnika jest pompa ogrodowa ~100W/230V. Z wykresu wyznaczyłem parapatry układu RC podłączonego równolegle do styków SSR (22nF,45R).

PYTANIA:
A. Jakiej mocy powinien być opornik ? ( sprzedawca podaje 1-5W )
Czy może jest jakiś monogram do wyznaczania mocy tego opornika ?
B. Na jakie minimalne napięcie powinien być kondensator ? Jakiego typu ma byc ten kondensator ?

"UWAGA - ZABEZPIECZENIE PRZEKAŹNIKÓW SSR DUŻEJ MOCY.
1.W przypadku obwodów wysokoprądowych (VDC/VAC) czy szczególnie obwodów z obciążeniem o charakterze indukcyjnym (AC) należy zawsze pamiętać o stosowaniu odpowiednich zabezpieczeń tj. diody Zenera (obwody VDC i L), warystory (MOV) czy układy RC(D) podłączane równolegle do styków wyjściowych przekaźnika (przy napięciach 100-240V) lub obciążenia (przy napięciach 24-28V) zabezpieczających przed niepożądanymi zakłóceniami z sieci lub odbiornika np. szpilkowymi napięciami.
Odpowiednie dobranie zabezpieczeń zależy od charakteru obciążenia, natężenia prądu jak i typu napięcia przełączanego i powinno być dobrane indywidualnie.
Bardzo często układ gasikowy RC składa się z R=33-1000Ohm/1-5W, C=1nF-0,10µF - precyzyjne wartości RC dobiera się na podstawie nomogramów.
Warystor należy dobrać odpowiednio do rodzaju i wartości napięcia obwodu obciążenia. Przyjmuje się że jego napięcie to 1,6 - 1,9 wartości znamionowej napięcia przełączanego.
2.Na wejściu przekaźników SSR można stosować kondensator filtrujący np. C=0,10µF."

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 45.0
27 marzec 2016 - 03:10 Bytom

Myślę, że 2W rezystor powinien być OK - co do kondensatora to zapewne jakiś MKF >400V dla spokoju

Avatar 1
Rik Windows 7 / Safari 537.36
16 marzec 2016 - 20:20 Wejherowo

Mam pytanie co do optoizolacji, czy jest sens jej stosowania, jeżeli w obu przypadkach zasilanie pochodzi z tego samego źródła?
Pozdrawiam

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 45.0
27 marzec 2016 - 03:09 Bytom

Owszem :) zakładamy, że przełączasz znacznie większe napięcia na przekaźniku

Avatar 1
Mekada Windows / Safari 537.36
14 czerwiec 2016 - 20:35 Brak informacji

Witam, bardzo fajny post z tym że brakuje opisu jak dobrać poszczególne elementy w przedstawionym schemacie przekaźnika. Jestem początkujący w elektronice i chciałbym zapytać, czy aby na pewno ten schemat (4/11) jest poprawny. Moim zdaniem przy drugiej strzałce zamiast + 5V powinno być uziemienie (GND). Chciałbym zapytać, czy ktoś byłby tak uprzejmy i pomógł mi dobrać odpowiednie elementy do przekaźnika songle SRD-03VDC-SL. W datasheet nie potrafię odnaleźć prądu zwrotnego, tego przekaźnika nie wiem też jak dobrać odpowiedni optoizolator i tranzystor. Będę bardzo wdzięczny za pomoc zwłaszcza z opisem co i jak dobierać, jakich parametrów szukać w datasheet. Z góry dziękuję za wszelką pomoc.

Avatar 1
Dolc1 Android 5.0 / Safari 537.36
23 wrzesień 2016 - 11:44 Brak informacji

Tworze projekt w zasadzie jestem przy końcu sterowanie 6 urzadzen za pomocą modułu przekazników RM6 z izolacją optoelektroniczną 5V 10A/125VAC Przekazniki sterowane są przez arduino. Mam pytanie odnośnie zasilania. Czy jeśli arduino zasile powiedzmy 5V 2A i od pinu vin pociągne zasilanie do modułu przekazników takie połączenie bedzie ok?

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 49.0
23 wrzesień 2016 - 19:49 Bytom

Z tego co pamiętam przy wejście zasilania (wtyk) zabezpieczony jest diodą przed odwrotną polaryzcją, dlatego lepiej nie przepuszczać lepiej więcej niż 1A. Dlaczego nie podłączysz tych przekaźników pod linie zasialnia tylko koniecznie do Vin?

Avatar 1
ktoś Linux Ubuntu / Mozilla Firefox 48.0
06 październik 2016 - 16:23 Poznań

na schemacie jest tranzystor T1, zaś w tekście mowa o transystorze T2; czyli coś się nie zgadza - pytanie tylko co? schemat czy opis;

Avatar 2
Korneliusz Mac OS X / Safari 537.36
14 październik 2016 - 14:36 Brak informacji

zdecydowanie opis - dzięki

Avatar 2
Korneliusz Mac OS X / Safari 537.36
14 październik 2016 - 14:36 Brak informacji

zdecydowanie opis - dzięki

Avatar 1
qpaq1 Windows / Safari 537.36
13 październik 2016 - 20:58 Brak informacji

Witam mam spory problem z Arduino i już nie mam pomysłu. Proszę o pomoc.
Mianowicie Zrobiłem projekt kontroler Akwariowy oparty o Arduino Mega2560 klon. Moduł RTC3231 lcd 4x20 i2c i ośmiokanałowy moduł przekaźników RM10 5V z izolacją optoelektroniczną 10A/125VAC. Trzy przekaźniki sterują urządzeniami na 240V i kolejne trzy pompkami na 12V. Problem polega na tym że w momencie włączenia a czasem wyłączenia przekaźnika sterującego 12V (problem tylko z tymi na 12V) wysypuje się wyświetlacz wychodzą jakieś krzaki. Problem zdarza się raz na około 10 prób. Dodam że Arduino zasilam 9V 2A i jednocześnie pracują maksymalnie 4 przekaźniki w tym tylko jeden na 12V. Proszę o pomoc z góry dziękuje.

Avatar 2
Korneliusz Mac OS X / Safari 537.36
14 październik 2016 - 14:36 Brak informacji

może jakieś zakłócenia?

Avatar 1
qpaq1 Android 6.0 / Safari 537.36
14 październik 2016 - 15:09 Brak informacji

Przychodzi mi na myśl jedna rzecz. Na pompkach (silniczkach dc) nie ma kondensatora są podpięte bezpośrednio do zasilania. Czy brak kondensatora może powodować zakłócenia pomimo że moduł posiada zabezpieczenie? Jesli tak to czy kondensator 100nF bedzie ok?

Avatar 1
qpaq1 Windows / Safari 537.36
14 październik 2016 - 22:06 Brak informacji

wlutowałem po 2 kondensatory 100nF na każdą pompkę. Zrobiłem ponad 50 prób i wszystko śmiga jak w zegarku. Dzięki za odpowiedź.

Avatar 1
odroid Linux Ubuntu / Mozilla Firefox 49.0
27 październik 2016 - 18:41 Warszawa

Witam mam podłączony rwrobot4telay pod odroida c2 na pinach 2 11 13 15 16 20 wszystkie lampki na module świecą.
po wykonaniu
echo 236 > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio236/direction
echo "1" > /sys/class/gpio/gpio236/value
echo "0" > /sys/class/gpio/gpio236/value
lampka działa nadal co robię źle ?

Avatar 1
odroid Linux Ubuntu / Mozilla Firefox 49.0
27 październik 2016 - 18:47 Warszawa

ywrobot 4 relay

Avatar 1
Sylwek Mac OS X / Safari 602.1
17 styczeń 2017 - 11:30 Warszawa

Witam, mam takie pytanie jak podłączyć pod Arduino 16 przekaźników ?
Z tego co już zderzyłem zaobserwować Arduino pociągnie mąż 10 .

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 50.0
19 styczeń 2017 - 18:25 Bytom

możesz wykorzystać dowolny expander i/o

Avatar 1
kajmanxxl Linux Ubuntu / Mozilla Firefox 51.0
17 luty 2017 - 15:31 Żywiec

Ciekawy materiał BARDZO PROSTO WYŁOŻONY. Jestem laikiem w tej dziedzinie więc pytanie może być śmieszne z góry przepraszam. Jak pobrać sygnał 240v z innego urządzenia by arduino uruchomiło równocześnie z tym urządzeniem coś co będzie miało podpięte?
Przygotowuję się do zrobienia sterowania systemem grzewczo wentylacyjno chłodniczym, cały system jest prototypem. Pozdrawiam

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 51.0
23 luty 2017 - 22:13 Bytom

Jeśli dobrze zrozumiałem pytanie, chcesz zbadać na jakimś wejściu arduino wystąpienie napięcia sieciowego. Możesz skorzystać z czujnika prądu http://elty.pl/pl/p/Czujnik-pradu-50A-AC-DC-ACS758/1930 lub podobnego.

Skomentuj wpis