Kedves Blogolvasó!
Két csatornás relé vezérlése? Mire is használható? Ebben a példában megnézzük, hogy miként lehet vezérelni egy két csatornás relé modult, ami egyébként készen kapható az arudinohoz, csak illeszteni kell a kész modult. Az forráskód csak a relé vezérlésre terjed ki, de a kódot ha kiegészítjük, akkor szinte bármilyen modullal kombinálható. Vegyünk egy egyszerű hétköznapi példát. Szinte minden garázs kelléke a mozgásérzékelős lámpa, és ha csak ezt vesszük alapul akkor máris kombinálható a relé modul egy SR501-es mozgásérzékelővel, és ugyanezt a hatást érhetjük el. Vezérelhetünk vele világítást, szivattyút, garázskaput, és szinte bármit ami eszünkbe jut. Nyilván a relének is vannak határai mert maximum 250V és 10 A amit váltóáram esetében elbír, egyenáram esetében pedig 30V és 10 A a tűréshatára.
Akkor nézzünk egy egyszerű kapcsolást, amivel egy ledet kapcsolhatunk.
A kapcsolásban a nyomógomb megnyomásával együtt a relé meghúz és a kód miatt úgy is marad. A nyomógomb ismételt megnyomására a relé kienged. A relé meghúzásval egyidőben felvillan a 13-as kimenetre helyezett led is és a relére bekötött led is.
Két csatornás relé vezérlése – Arduino Forráskód:
#define LED 13 // led világítás
#define BUTTON 2 // nyomógomb
#define RELAY 11 // Relé vezérlés
int val=0; // val a nyomógomb beolvasott érték
int old_val=0; // az old_val az előzőleg beolvasott val érték
int state=0; // 0=kiold a relé 1=meghúz a relé
void setup(){
pinMode(LED, OUTPUT); // Led deklarálása kimenetként
pinMode(BUTTON, INPUT); // nyomógomb deklarálása bemenetként
pinMode(RELAY, OUTPUT); // relé kimenet deklarálása
}
void loop(){
val=digitalRead(BUTTON); // beolvassa a nyomógomb állapotát
// Nyomógomb állapotának és előző állapotának összevetése
if ((val==HIGH) && (old_val==LOW))
// Ha a nyomógomb nyomva van : 1-0 akkor state = 1-0=1 ---->
// következő gombnyomásra amikor a state már 1 akkor state = 1-1=0
{
state = 1 - state;
delay(10);
}
old_val=val; // Mivel a nyomógomb felengedett ezért nullázza a old_val változót
if (state == 1){
digitalWrite(LED,HIGH); // LED bekapcsolása
digitalWrite(RELAY,HIGH); // Relé bekapcsolása
}else{
digitalWrite(LED,LOW); // LED kikapcsolása
digitalWrite(RELAY,LOW); // Relé kikapcsolása
}
}
Abban az esetben, ha valakinek a relé duplán húzna meg akkor az azért van, mert a beolvasás utáni feltételvizsgálatban a state változó átállításánál a késleltetés rövid időre van állítva. Sok esetben a nyomógombot az ujjunkkal rövidre zárjuk véletlenül, amikor a próbapanelre van berakva. Ezt elkerülendő, a késleltetést ha 500-ra állítjuk akkor az érintést követő rövidre zárás miatti dupla jel nem fogja átállítani a „val” változó értékét. Ezzel fél másodpercre állítjuk a beolvasások közötti szünetet a 10 ms-os idő helyett. Ezt orvosolhatjuk azzal is hogy beillesztünk a kódba vagy az elejére vagy a végére késleltetést.



