W świecie elektroniki mamy do czynienia nie tylko z urządzeniami nisko napięciowymi. Często zdarza się tak, że musimy sterować skomplikowanym urządzeniem, które jest zasilanie wysokim napięciem np. 230V. Niestety mikrokontroler nie jest w stanie wydać takiej energii ze swoich pinów, ponieważ jest zasilany napięciem 5V co jest maksymalnym napięciem na pinach. Dlatego używamy przekaźników. W dzisiejszej części poradnika przedstawię w jaki sposób sterować przekaźnikiem. Zapraszamy
Spis treści:
1.Co to jest przekaźnik. Zasada działania
2.Pierwszy program: Włączanie przekaźników
3.Drugi program: Przykład zastosowania przekaźnika #1
Co będziemy potrzebować:
- 1x Arduino
- 1x moduł 2-przekaźnikowy (ewentualnie dwa przekaźniki
- 1x zestaw przewodów połączeniowych
- 1x czujnik DS18B20
1.Co to jest przekaźnik. Zasada działania.
Przekaźnik jest to urządzenie elektryczne, przy pomocy którego możemy sterować urządzeniem bądź urządzeniami o wysokim napięciu. Jest to pewnego rodzaju „przełącznik”, gdzie wysyłający sygnały o niskim napięciu ( 5-12V ) sterujemy stanem załączenia obwodu o wysokim napięciu. Na potrzeby dzisiejszego poradnika omówimy sobie sposób działania przekaźnika elektromagnetycznego.
Przekaźnik elektromagnetyczny- jak sama nazwa wskazuje- działa na zasadzie elektromagnesu. Przedstawię na bazie poniższego obrazka:
Do zacisków zasilających cewkę, podłączamy napięcie (przeważnie jest ono podane na obudowie przekaźnika – 12V albo 24V). W ten sposób uruchamiamy elektromagnes, który przyciąga do siebie kotwicę. Kotwica natomiast odchyla ruchomy styk, przez co nasz układ podłączony do złącz przekaźnika jest uruchamiany. I to jest cała tajemnica dziania przekaźnika elektromagnetycznego. Złącza przekaźnika zrobione są z grubszego metalu, aby mogły przez siebie dostarczyć większą moc.
W dzisiejszym poradniku wykorzystam gotowy moduł przekaźnikowy. Jest on nie drogi bo kosztuje jakieś 7zł, a zapewnia nam optyczną izolację od strony mikrokontrolera, przez co w razie uszkodzenia przekaźnika, napięcie sterowane przez przekaźnik nie dostanie się do mikrokontrolera i go nie uszkodzi. Cena 7zł nie jest wygórowana w stosunku do bezpieczeństwa jakie zapewnia nam taki moduł.
Zatem zacznijmy programować ;)
2.Pierwszy program: Włączanie przekaźników
Przekaźniki te co zakupiłem wyzwalane są stanem niskim. Zatem stan wysoki (1) to wyłączony przekaźnik, a stan niski (0) to włączony przekaźnik. Zatem można powiedzieć, że sterowanie przekaźnikiem odbywa się jak sterowanie diodą, gdzie katoda podłączona jest Arduino, a anoda przez rezystor do +5V
Program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
int przekaznik1 = 10; //przekaznik1 podłączamy do pinu 10 int przekaznik2 = 11; //przekaznik2 podłączamy do pinu 11 int przycisk1 = 8; //przycisk1 podłączamy do pinu 8 int przycisk2 = 9; //przycisk2 podłączamy do pinu 9 bool sp1 = true; //zmienna boolowska sp1 do steowania stanem przekaznika1 bool sp2 = true; //zmienna boolowska sp2 do steowania stanem przekaznika2 void setup() { pinMode(przekaznik1, OUTPUT); //przekaznik1 jako wyjście pinMode(przekaznik2, OUTPUT); //przekaznik2 jako wyjście pinMode(przycisk1, INPUT_PULLUP); //przycisk1 jako wejście z programowym pull-upem pinMode(przycisk2, INPUT_PULLUP); //przycisk2 jako wejście z programowym pull-upem digitalWrite(przekaznik1, HIGH); //stan początkowy przekaznika1 wysoki digitalWrite(przekaznik2, HIGH); //stan początkowy przekaznika2 wysoki } void loop() { if(digitalRead(przycisk1) == 0) //jezeli przycisk1 zostal wcisniety: { sp1=!sp1; //zaneguj zmienną sp1 digitalWrite(przekaznik1, sp1); //stan przekaźnika ustaw taki jak jest stan sp1 delay(150); //odczekaj 150ms } if(digitalRead(przycisk2) == 0) //jezeli przycisk1 zostal wcisniety: { sp2=!sp2; //zaneguj zmienną sp2 digitalWrite(przekaznik2, sp2); //stan przekaźnika ustaw taki jak jest stan sp1 delay(150); //odczekaj 150ms } } |
Jesteśmy już na 11. kursie Arduino, także mogę stwierdzić, że tłumaczenie podstaw typu podłączanie peryferii do pinów oraz ustawianie ich jako I/O to możemy sobie już odpuścić. Będziemy tłumaczyć tylko przy trudniejszych programach.
Tworzymy dwie zmienne boolowskie sp1 odpowiadającą za stan przekaźnika 1. i sp2, za stan przekaźnika 2. Ich wstępne wartości ustawiamy na true czyli na 1 (dlatego że przekaźniki wyzwalane są 0 czyli false, a nie 1 true).
Wcześniej wspomniałem, że nie musimy wykorzystywać rezystorów podciągających przyciski do 5V, a teraz wytłumaczę dlaczego. Rezystory podciągające dajemy po to, aby drgania styków przycisków, przypadkowo nie wpływały na działanie naszego programu- żeby się nie „wciskały”. Dlatego możemy wyróżnić podciągnięcie sprzętowe, przez rezystor 10k ohm, albo podciągnięcie programowe. Podciągnięcie programowe wstawiamy przy pomocy INPUT_PULLUP, na przykładzie naszego programu:
1 |
pinMode(przycisk1, INPUT_PULLUP); |
Zamiast samego INPUT wpisujemy INPUT_PULLUP przez co funkcja programowego podciągnięcia zostaje uruchomiona. Przykład ten daję jako ciekawostkę, jako jedną z funkcji Arduino IDE, ale nie zalecam jej używać. Nie zalecam dlatego, ponieważ przy wykorzystaniu zasilania sieciowego przyciski stają się bardzo czułe, przez co samo dotknięcie przycisku wywołuje rozpoznanie go jako wciśniętego. Problemu takiego nie ma, jeżeli zasilamy Arduino np. z baterii.
Następnie ustawiamy stan początkowy przekaźników na 1 logiczne, aby przy uruchomieniu Arduino, zakłócenia nie spowodowały uruchomienia przekaźników. W pętli głównej programu wstawiamy dwa warunki, dla przycisku 1 i 2. Jeżeli przycisk1 zostanie wciśnięty to zaneguj stan zmiennej sp1, a następnie ten stan ustaw na przekaźniku 1. Ta sama pętla dzieje się dla przycisku2.
Efekt naszego programu: