Relej i pumpa za vodu sa Arduinom

Lekcija 9 od 17 · Arduino i ESP32

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čakStranaČemu služi
VCCupravljanjenapajanje modula (5 V sa Arduina)
GNDupravljanjemasa, zajednička sa Arduinom
INupravljanjesignal sa digitalnog pina (u primeru D7)
COMpumpazajednički (pokretni) kontakt
NOpumpanormalno otvoren – spaja se sa COM kada je relej uključen
NCpumpanormalno zatvoren – spojen sa COM kada je relej isključen
LOW ili HIGH? Mnogi jeftini relej moduli (posebno oni sa optokaplerom) se uključuju kada je IN na 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

  1. Dodaj LED na pin 13 koja svetli dok pumpa radi.
  2. Promeni program 1 tako da komanda 5 uključi pumpu na tačno 5 sekundi, pa je sama isključi.
  3. 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?