Relej i pumpa za vodu sa Arduinom
Mala pumpa za vodu je pravi „izvršni uređaj“: kada je uključimo, nešto se stvarno dešava – voda teče. Arduino ne može da je pokrene direktno, jer njegov pin daje samo 5 V i mnogo premalo struje. Zato između Arduina i pumpe stavljamo relej – prekidač kojim upravlja Arduino, a kroz koji teče struja za pumpu. Ova lekcija je priprema za automatsko zalivanje bašte.
Zašto pumpa ne može direktno na pin
- Digitalni pin Arduina Uno daje 5 V i bezbedno oko 20 mA (apsolutni maksimum je 40 mA).
- Mala potapajuća pumpa od 3–6 V troši oko 100–200 mA, a u trenutku pokretanja i više.
- Pumpa je motor – kada se isključi, stvara kratak napon suprotnog smera koji može da ošteti elektroniku.
Relej rešava sva tri problema: Arduino samo „pritisne prekidač“, a pumpa dobija struju iz svog izvora napajanja (baterije ili adaptera).
Kako radi relej modul
Relej je elektromehanički prekidač: kada kroz njegov kalem (elektromagnet) poteče struja, kalem privuče metalnu pločicu i ona spoji kontakte. Čuje se tiho „klik“. Relej modul za Arduino već ima sve potrebno: tranzistor, zaštitnu diodu kalema i LED koja pokazuje stanje.
| Priključak | Strana | Čemu služi |
|---|---|---|
| VCC | upravljanje | napajanje modula (5 V sa Arduina) |
| GND | upravljanje | masa, zajednička sa Arduinom |
| IN | upravljanje | signal sa digitalnog pina (u primeru D7) |
| COM | pumpa | zajednički (pokretni) kontakt |
| NO | pumpa | normalno otvoren – spaja se sa COM kada je relej uključen |
| NC | pumpa | normalno zatvoren – spojen sa COM kada je relej isključen |
LOW – to se zove LOW-trigger. Drugi se uključuju sa HIGH. Zato u programu stanja „uključeno“ i „isključeno“ držimo u dve konstante, pa ih lako zameniš ako tvoj modul radi obrnuto. Ako pumpa radi kada bi trebalo da miruje – zameni ih.Šema povezivanja
Pumpa se vezuje na NO kontakt, da bi bila isključena dok relej miruje (i kada Arduino nije uključen). Prekidamo plus (+) vod napajanja pumpe.
ARDUINO RELEJ MODUL
5V ---------------> VCC
GND ---------------> GND
D7 ---------------> IN
BATERIJA 4×AA (6 V) RELEJ PUMPA
+ ----------------> COM
NO ---------> + pumpe
- -----------------------------> - pumpe
- Pumpa ima svoje napajanje (4 baterije AA ili adapter 5–6 V). Ne napajaj je sa 5V pina Arduina – motor pravi smetnje i Arduino može da se resetuje.
- Kontakti releja su električno odvojeni od upravljačkog dela, pa minus baterije pumpe ne mora da se spaja sa GND Arduina.
- Preporuka: dioda 1N4007 paralelno sa pumpom (prsten diode na + pumpe) „guta“ napon koji motor stvara pri isključivanju i čuva kontakte releja.
Program 1: pumpa iz Serial Monitor-a
Otvori Serial Monitor (115200 bauda) i pošalji 1 ili 0. Pumpu probaj u posudi sa vodom – mnoge male pumpe ne smeju da rade „na suvo“.
// Upravljanje pumpom preko releja – komande iz Serial Monitor-a
const int RELEJ_PIN = 7; // digitalni pin povezan na IN pin relej modula
// Mnogi jeftini relej moduli se uključuju sa LOW (LOW-trigger).
// Ako se tvoj modul uključuje sa HIGH, zameni HIGH i LOW u ova dva reda.
const int RELEJ_UKLJ = LOW;
const int RELEJ_ISKLJ = HIGH;
void setup() {
Serial.begin(115200);
pinMode(RELEJ_PIN, OUTPUT);
digitalWrite(RELEJ_PIN, RELEJ_ISKLJ); // na početku je pumpa isključena
Serial.println("Posalji 1 za ukljucivanje, 0 za iskljucivanje pumpe.");
}
void loop() {
if (Serial.available() > 0) {
char komanda = Serial.read();
if (komanda == '1') {
digitalWrite(RELEJ_PIN, RELEJ_UKLJ);
Serial.println("Pumpa UKLJUCENA");
} else if (komanda == '0') {
digitalWrite(RELEJ_PIN, RELEJ_ISKLJ);
Serial.println("Pumpa ISKLJUCENA");
}
}
}
Naredba Serial.read() čita jedan po jedan znak. Znak za novi red koji Serial Monitor šalje posle broja nije ni '1' ni '0', pa ga program jednostavno preskoči.
Program 2: taster uključuje i isključuje pumpu
Taster povezujemo između pina D2 i GND. Sa INPUT_PULLUP pin je HIGH dok taster nije pritisnut, a LOW kada jeste – nije potreban spoljašnji otpornik.
// Taster uključuje i isključuje pumpu (svaki pritisak menja stanje)
const int RELEJ_PIN = 7;
const int TASTER_PIN = 2; // taster između pina 2 i GND
const int RELEJ_UKLJ = LOW; // za HIGH-trigger modul zameni LOW i HIGH
const int RELEJ_ISKLJ = HIGH;
bool pumpaRadi = false;
int prethodnoStanje = HIGH; // sa INPUT_PULLUP nepritisnut taster daje HIGH
void setup() {
pinMode(RELEJ_PIN, OUTPUT);
pinMode(TASTER_PIN, INPUT_PULLUP); // unutrašnji otpornik, nije potreban spoljašnji
digitalWrite(RELEJ_PIN, RELEJ_ISKLJ);
}
void loop() {
int stanje = digitalRead(TASTER_PIN);
// reagujemo samo u trenutku pritiska (prelaz sa HIGH na LOW)
if (prethodnoStanje == HIGH && stanje == LOW) {
pumpaRadi = !pumpaRadi;
digitalWrite(RELEJ_PIN, pumpaRadi ? RELEJ_UKLJ : RELEJ_ISKLJ);
delay(50); // kratka pauza protiv „treperenja“ kontakta tastera
}
prethodnoStanje = stanje;
}
Program pamti prethodno stanje tastera i reaguje samo na prelaz sa HIGH na LOW. Da smo proveravali samo „da li je pritisnut“, pumpa bi se uključivala i isključivala mnogo puta dok držimo taster.
Bezbednost
- Voda i elektronika ne idu zajedno: Arduino, relej i baterije drži iznad i dalje od posude sa vodom, a crevo učvrsti da ne prska.
- U ovim vežbama koristimo samo baterije i adaptere do 12 V. Nikada ne povezuj relej na mrežni napon od 230 V – to je posao za električara.
- Pumpa ne sme dugo da radi bez vode – pregreje se.
Umesto releja može da se koristi i MOSFET tranzistor (npr. IRLZ44N): tih je, nema pokretnih delova i omogućava PWM regulaciju brzine pumpe. Relej je ipak jednostavniji za početak i jasno odvaja dva strujna kola.
Zadaci za vežbu
- Dodaj LED na pin 13 koja svetli dok pumpa radi.
- Promeni program 1 tako da komanda
5uključi pumpu na tačno 5 sekundi, pa je sama isključi. - Izmeri štopericom koliko mililitara vode pumpa izbaci za 10 sekundi. Koliko sekundi treba da radi da bi zalila 100 ml?
Proveri znanje
Otvori kviz
Kviz: relej i pumpa
1. Zašto se pumpa ne vezuje direktno na pin Arduina?
2. Na koji kontakt releja se vezuje pumpa da bi bila isključena dok relej miruje?
3. Šta znači da je relej modul „LOW-trigger“?
4. Čemu služi INPUT_PULLUP kod tastera?
