Uvod — upravljanje DC motorom sa Arduinom (školska upotreba)
U ovoj kratkoj uvodnoj sekciji predstavićemo osnovne koncepte i delove potrebne za upravljanje DC motorom pomoću Arduina kroz H-bridge drajver. Fokus je na školskoj upotrebi — jednostavno, sigurno i reproducibilno u učionici. Pre nego što izvedemo stvarnu vezu, prvo ćemo testirati i napraviti šemu u TinkerCAD (ili sličnom simulatoru), a tek onda prenositi istu na stvarni hardver.
Zašto H-bridge?
DC motor treba imati mogućnost promene smera vrtnje (napred / nazad) i regulacije brzine (PWM). H-bridge (H-most) omogućava obrnutu polarizaciju napajanja na motoru — to je osnovna funkcionalnost koju koristimo za upravljanje smerom.
U školskim projektima često se koriste dve popularne opcije:
- L293D — mali, jednostavni „quad half-H“ IC (ili gotova pločica bazirana na L293D). Pogodan za male DC motore (do ~600 mA po izlazu), lako ga je koristiti i ima ugrađene zaštitne diodne (varira po verziji). Idealno za učenje i male školske projekte.
- L298N — robustniji dual H-bridge (često u obliku modula sa priključcima i regulatorom). Može podneti veće struje (typ. do ~2 A kontinuirano uz odgovarajući hladnjak), obično se koristi za veće motore i za vozila sa većim opterećenjem. Modul L298N često dolazi sa dodatnim komponentama (srafni terminali, 5V regulator, diode) — pa je praktičan za prototipove vozila.
Ključne razlike (sažeto):
- Struja: L293D — pogodniji za male struje (školski motori), L298N — za veće struje (teža vozila / veći motori).
- Toplotno odvođenje: L298N bolje podnosi toplotu uz hladnjak; L293D može zahtevati pažljivo praćenje temperature.
- Moduli: L298N moduli često dolaze sa dodatnim priključcima i regulatorom 5V, što olakšava povezivanje, ali i zauzima više prostora.
Ova lekcija: šta ćemo raditi
- Prvo: napraviti jednostavnu šemu i test u TinkerCAD (simulacija), kako bi učenici bez rizika videli ponašanje motora i signala. - Kasnije: preneti istu šemu na stvarni hardver, objasniti bezbednost i detalje povezivanja. - U nastavku kursa: dodaćemo još jedan DC motor i integrisati oba u jednostavno vozilo sa upravljanjem (u toj lekciji ćemo razmotriti i upotrebu L298N modula za bolju snagu ako bude potrebno).
Lista osnovnih delova (školski set)
- Arduino (Uno / Nano / Mega) — generiše PWM i logičke signale (IN/EN).
- H-bridge drajver (npr. L293D modul ili L298N modul) — bira se prema strujnom zahtevu motora.
- DC motor — školski motori (npr. 130/200/370 tip) ili manji gear-motori za vozila.
- Spojna žica i breadboard — za prototipovanje (ili srafni priključci za trajno povezivanje).
- Eksterno napajanje za motor — baterija ili adapter (npr. 6–12 V, u zavisnosti od motora). Ne napajati motor iz Arduino 5V.
- Zajedničko uzemljenje (GND) — obavezno: GND napajanja motora i GND Arduina moraju biti spojeni.
- Kondenzator (100 µF ili više) — blizu priključka napajanja motora za smanjenje šiljaka napona.
- Zaštitna oprema — osigurači / termalni okviri ako su motori jači; hladnjak za L298N po potrebi.
- Opcionalno: enkoderi, prekidači, potenciometri (za regulaciju), LED indikatori, i mala pločica sa šrafnim priključcima za motorno napajanje.
Ključne napomene za učionicu (bezbednost i dobre prakse)
- Uvek testirajte prvo u simulatoru (TinkerCAD) — učenici će razumeti signale bez rizika od kratkog spoja.
- Ne napajajte motor iz Arduino 5V – upotrebite odvojen izvor (baterija / adapter) dovoljno jak za motor.
- Obavezno povežite GND između napajanja motora i Arduina.
- Proverite nazivnu struju motora i odaberite drajver koji može to izdržati (ili koristite manji motor za L293D).
- Kondenzator blizu Vmot i GND na drajveru smanjuje električne šiljke; dodati i male kondenzatore (0.1 µF) po potrebi.
- Koristite kratke žice za snagu i izbegavajte labave konektore u praktičnim radionicama.
Ispravljena ilustracija povezivanja (Arduino → L293D → DC motor)
Sledeća pojednostavljena šema zamišljena je za TinkerCAD i prikazuje osnovne veze koje će biti prvo simulirane: signalne žice (IN1/IN2, EN za PWM), napajanje motora (+V), i zajedničko GND. Ovu šemu koristiš kao referencu — u sledećem nastavku ćemo detaljno objasniti pinout modula koji koristiš i dati konkretan kod.
Detaljno objašnjenje povezivanja Arduino – L293D – DC motora
Na slici 1 prikazana je kompletna šema povezivanja između Arduina, L293D drajvera i DC motora. Ovaj kontroler omogućava da se motor pokreće u oba smera i da se kontroliše brzina korišćenjem PWM signala.
1. Povezivanje Arduina sa L293D – kontrolni pinovi
Prvi korak je povezivanje digitalnih pinova Arduina sa ulaznim pinovima L293D drajvera koji kontrolišu smer i brzinu motora:
- D7 (Arduino) → IN1 (L293D) – određuje smer rotacije (logička 0/1).
- D8 (Arduino) → IN2 (L293D) – određuje smer rotacije suprotno od IN1.
- D9 (Arduino, PWM) → EN1 (L293D) – koristi se za regulaciju brzine motora pomoću PWM signala.
Kada je IN1 = 1 i IN2 = 0, motor se okreće u jednom smeru. Kada je IN1 = 0 i IN2 = 1, motor se okreće u suprotnom smeru. Kada su oba pina niska ili visoka istovremeno, motor staje.
2. Napajanje logičkog dela L293D (Vcc1)
Logički deo kola L293D mora biti napajan sa stabilnih 5V, a taj napon se uzima sa Arduina. Ovo povezivanje izgleda ovako:
- Arduino 5V → Vcc1 (L293D)
- Arduino GND → GND (L293D)
Ovo napajanje služi samo za interne logičke operacije i interfejs sa Arduino mikrokontrolerom. Važno je da se GND Arduina i GND eksternog napajanja motora povežu zajedno. Ovo sprečava nestabilnosti i greške u radu.
3. Napajanje motora preko L293D (Vcc2)
Motori obično rade na naponima većim od 5V, na primer 6V, 9V ili 12V. Zbog toga se motor napaja iz posebne baterije ili ispravljača. Na šemi je to prikazano odvojenim blokom:
- +Vmotor (6–12V) → Vcc2 (L293D)
- GND baterije → GND (L293D)
Napon sa Vcc2 se ne povezuje direktno na Arduino, već samo na L293D jer bi viši napon mogao da ošteti Arduino ploču. Ponovo naglašavamo da se GND baterije i GND Arduina moraju povezati.
4. Izlazi sa L293D ka DC motoru (Out1 i Out2)
Drajver L293D ima dva izlaza (Out1 i Out2) koji se spajaju na terminale DC motora. U tvojoj šemi oni su predstavljeni kao kružići sa desne strane modula. Povezivanje izgleda ovako:
- Out1 → M+
- Out2 → M−
Ako motor ide u pogrešnom smeru, samo zameni žice M+ i M−.
5. Kondenzator na napajanju
Na šemi je prikazan elektrolitski kondenzator od 100µF, povezan blizu modula. On se nalazi između +Vmotor i GND, i služi za filtriranje šumova koje motor pravi pri startovanju i promeni brzine. Ovo pomaže stabilnom napajanju i smanjuje resetovanje Arduina usled naglih padova napona.
6. Kratko rezime povezivanja
Redosled povezivanja je sledeći:
- Poveži D7, D8 i PWM pin D9 sa IN1, IN2 i EN1.
- Poveži Arduino 5V i GND na Vcc1 i GND modula.
- Poveži bateriju na Vcc2 i GND modula.
- Poveži Out1 i Out2 na motor.
- Poveži kondenzator paralelno na napajanje motora.
Kada je sve povezano prema šemi, sistem je spreman za upravljanje DC motorom u oba smera uz kontrolu brzine pomoću PWM signala sa Arduina.
Kratka napomena o pinovima i signalu
U tipičnoj postavci: EN pin se povezuje na Arduino PWM pin (npr. D3) za speed control, a IN1/IN2 na digitalne pinove (npr. D4/D5) za smer. Kada je IN1=HIGH, IN2=LOW motor se okreće u jednom smeru; obrnuto za suprotan smer. Ako koristiš L298N modul, logika je slična, ali vodi računa o pinoutu i dodatnim priključcima na modulu.
Šta sledi u sledećem nastavku
U narednoj lekciji preći ćemo na:
- detaljnu šemu povezivanja u TinkerCAD-u i realnu šemu za L293D / L298N modul,
- prvi Arduino kod (PWM + smer),
- dodavanje drugog DC motora i osnove za kontrolu jednostavnog dvomotornog vozila.
Zaključak
Ovaj uvod pokriva samo potrebne delove i osnovne preporuke za školski eksperiment sa DC motorima i H-bridge drajverom. Ako želiš, odmah mogu prilagoditi šemu za konkretnu pločicu L293D ili za L298N modul koji poseduješ — pošalji model modula ili fotografiju i ja ću pripremiti tačnu šemu za TinkerCAD i stvarnu vezu.
Objašnjenje šeme povezivanja (Slika 2)
Šema prikazuje povezivanje Arduino UNO kontrolera sa L293D drajverom i jednosmernim (DC) motorom uz korišćenje spoljnog napajanja. Spoljno napajanje se koristi isključivo za motor, dok L293D dobija logičko napajanje sa Arduina.
1. Povezivanje napajanja
Baterijsko kućište (2×AA) daje oko 3 V i ono se dovodi na pin 8 L293D (napajanje motora). Minus pol baterija je povezan na GND L293D, a isti GND je spojen sa Arduinom i breadboardom kako bi svi uređaji delili zajedničku referencu napona.
2. Logičko napajanje L293D
Pin 16 L293D je povezan na 5V izlaz Arduina. Ovo je napajanje koje drajver koristi za logičke operacije, nezavisno od napona koji dobija motor.
3. Upravljanje motorom
DC motor je povezan na izlaze drajvera – pinove 3 i 6. Ovim pinovima upravlja L293D u zavisnosti od ulaznih signala sa Arduina.
4. Upravljanje iz Arduina
Arduino šalje upravljačke signale na pinove 2 i 7 L293D. Na osnovu toga
drajver određuje smer kretanja motora. Enable pin (pin 1) povezan je na
PWM pin Arduina (npr. digitalni pin 9), što omogućava kontrolu brzine
preko analogWrite() funkcije.
5. Zajednička masa (GND)
Svi GND vodovi (Arduino, baterije, L293D i breadboard) su povezani. Ovo je obavezno kako bi signali bili stabilni i kako bi drajver pravilno prepoznavao logičke nivoe sa Arduina.
Napomena
Napajanje od 6 V dobar izbor koji obezbeđuje stabilan rad bez rizika od pregrevanja motora ili L293D drajvera.
Dodatne komponente (opciono, ali preporučeno)
U osnovnoj šemi nisu dodati dodatni elementi poput kondenzatora i zaštitnih komponenti, ali oni se često koriste u realnim projektima da bi se poboljšala stabilnost i produžio vek motora i elektronike. Evo najvažnijih dodataka:
-
Bypass / decoupling kondenzatori (100nF – 1µF)
Postavljaju se između Vcc i GND na L293D čipu. Smanjuju šum u napajanju i sprečavaju resetovanje Arduina pri naglim promenama opterećenja motora. -
Elektrolitski kondenzator (47µF – 470µF)
Postavlja se blizu napajanja motora (između +6V i GND). Ublažava trzaje i padove napona kada motor naglo krene ili promeni smer. -
Kondenzatori direktno na motoru (3× 100nF)
Po jedan između svake priključnice motora i kućišta (ili GND), plus jedan direktno između terminala motora.
Smanjuju električni šum i varničenje četkica kod DC motora. -
Diodni most (flyback diode) – *nije potreban kod L293D*
L293D već ima ugrađene zaštitne diode za induktivni povratni napon motora, pa zato u ovoj šemi one nisu prikazane.
Kada je moguće koristiti šemu bez dodatnih komponenti?
Ova pojednostavljena šema (bez kondenzatora) najčešće radi sasvim dobro kada:
- koristiš motor male snage (tipični 3–6 V DC motori iz igračaka),
- motor ne menja često smer ili ne startuje pod velikim opterećenjem,
- napajanje je stabilno i izolovano od Arduina, kao u ovom slučaju (odvojene baterije),
- projektom upravlja jednostavan Arduino program bez tajming osetljivih operacija.
Međutim, ako primetiš treperenje LED-ica, reset Arduina, nestabilan rad motora, promene brzine ili šum u drugim komponentama, dodavanje navedenih kondenzatora gotovo uvek rešava problem.
Primer Arduino koda za upravljanje DC motorom preko L298N
Sledeći primer pokazuje kako se pomoću Arduino mikrokontrolera može upravljati pravcem okretanja i brzinom DC motora korišćenjem drajvera L298N. Program koristi PWM signal za kontrolu brzine i digitalne izlaze za određivanje smera.
// Pinovi povezani sa L298N drajverom
const int IN1 = 7; // kontrola smera 1
const int IN2 = 8; // kontrola smera 2
const int ENA = 9; // PWM izlaz za brzinu (0–255)
// Funkcija koja obezbeđuje da je brzina u ispravnom opsegu
int ogranicenjeBrzine(int vrednost) {
if (vrednost < 0) return 0;
if (vrednost > 255) return 255;
return vrednost;
}
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
}
// Pokretanje motora unapred
void motorNapred(int brzina) {
brzina = ogranicenjeBrzine(brzina);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, brzina);
}
// Pokretanje motora unazad
void motorNazad(int brzina) {
brzina = ogranicenjeBrzine(brzina);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, brzina);
}
// Zaustavljanje
void motorStop() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
analogWrite(ENA, 0);
}
void loop() {
motorNapred(200); // Motor radi napred 3 sekunde
delay(3000);
motorNazad(150); // Motor radi unazad 3 sekunde
delay(3000);
motorStop(); // Pauza 2 sekunde
delay(2000);
}
Kako radi ovaj kod?
Drajver L298N omogućava kontrolu dva signala smera (IN1 i IN2) i jednog
PWM signala (ENA) koji određuje brzinu. Kada Arduino postavi:
IN1 = HIGH,IN2 = LOW— motor se okreće u smeru napred.IN1 = LOW,IN2 = HIGH— motor se okreće u smeru nazad.IN1 = LOW,IN2 = LOW— motor je zaustavljen.
Brzina se kontroliše funkcijom analogWrite() koja na pin ENA šalje PWM signal
u opsegu 0–255. Kod u loop() funkciji samo demonstrira jednostavno kretanje:
3 sekunde napred, 3 nazad, zatim pauza.
Dodavanje drugog DC motora (proširenje vežbe)
U ovoj sekciji proširujemo dosadašnju vežbu sa jednim DC motorom na dve nezavisne pogonske jedinice. Cilj je da učenici razumeju kako da koriste drugi kanal H-bridge drajvera (L293D) za upravljanje drugim motorom — nezavisno ili u kombinaciji (npr. za jednostavno dvomotorno vozilo).
Šta je potrebno (dodatno u odnosu na vežbu sa jednim motorom)
- drugi DC motor (sličnih specifikacija kao prvi)
- dodatne žice za povezivanje izlaza L293D → drugi motor
- dovoljno snage u napajanju motora (ako dodavanje drugog motora povećava strujno opterećenje, možda je potreban jači adapter)
- dodatni kondenzatori i hladnjak ako se očekuje veće struje
Pin mapping koji ćemo koristiti (predlog za Arduino UNO + L293D modul)
Da bi vežba bila pregledna, koristimo sledeće rasporede pinova:
- Motor A (prvi motor): IN1 = D7, IN2 = D8, ENA = D9 (PWM)
- Motor B (drugi motor): IN3 = D5, IN4 = D6, ENB = D10 (PWM)
- Logika: 5V Arduino → Vcc1 (L293D)
- Napajanje motora: posebni adapter / baterija → Vcc2 (L293D)
- Zajednička masa: GND Arduino ↔ GND L293D ↔ GND baterije
Zadatak za učenike (jasno i merno)
*Cilj zadatka:* proširite svoj program i vezu tako da možete nezavisno upravljati dva DC motora. Implementirajte sledeće funkcionalnosti:
- Funkcije za svaki motor posebno:
motorAForward(speed),motorABackward(speed),motorAStop()motorBForward(speed),motorBBackward(speed),motorBStop()
- Funkcije za kombinovane pokrete (vozilo):
driveForward(speed)— oba motora napreddriveBackward(speed)— oba motora nazadturnLeft(speed)— npr. motor A stop ili unazad, motor B napredturnRight(speed)— obrnuto od prethodnog
- U glavnoj petlji napišite sekvencu testova: napred, levo, desno, nazad, stop (svaka radnja 2–3 s).
- Dodatno (opciono): kontrola brzine jednog ili oba motora pomoću potenciometra povezanog na analogni pin.
Kriterijumi uspeha: učenik treba da demonstrira sve osnovne funkcije, motor ne sme vući previše struje (ne pucketati), Arduino ne sme resetovati pri pokretanju motora, i svi GND moraju biti povezani.
Šema povezivanja (2 motora) – SVG (ubaci direktno u HTML)
Sledeći SVG je čist, skalabilan dijagram koji možeš direktno kopirati u svoju HTML stranicu. Označene su veze: kontrolni signali, logika 5V, napajanje motora i izlazi za oba motora.
Opis povezivanja (korak po korak)
Nakon umetanja šeme, poveži sledeće tačno kako je navedeno:
- Kontrolni signali (Arduino → L293D):
- D9 (PWM) → ENA (enable za motor A)
- D7 → IN1 (motor A smer)
- D8 → IN2 (motor A smer)
- D10 (PWM) → ENB (enable za motor B)
- D5 → IN3 (motor B smer)
- D6 → IN4 (motor B smer)
- Logika: Arduino 5V → Vcc1 (pin logike L293D).
- Napajanje motora: +Vmotor (npr. 6V) → Vcc2 (L293D). Obavezno spojiti i GND baterije na GND L293D.
- Zajednička masa: Spoji GND Arduina sa GND modula i sa negativnim polom baterije/PSU.
- Izlazi modula → motori:
- OUT1 → M_A+
- OUT2 → M_A−
- OUT3 → M_B+
- OUT4 → M_B−
- Kondenzatori i filter: preporučeno je postaviti elektrolitski kondenzator (npr. 100–470 µF) između +Vmotor i GND blizu modula, i male 0.1 µF keramike između Vcc i GND radi dekoplovanja. Ako motor stvara jake šiljke ili Arduino resetuje, dodajte kondenzatore.
- Provera: pre paljenja proveri sve veze, polaritet napajanja i da li su žice dobro učvršćene. Ako koristiš L293D bez dodatnog hladnjaka i motori su veći od ~1–2 A, ne koristi ga bez adekvatnog hlađenja.
Finalne napomene za učenike
- Kada testirate, krenite sa malim vrednostima PWM (npr. 120) da biste uočili ponašanje motora.
- Ako želite realizovati vozilo, koristite istu logiku: jedno točak = motor A, drugo točak = motor B. Kombinacijom smerova i brzina ostvarujete postavljene maneuvre.
- Obavezno vodite dnevnik testova: napon, brzina PWM, vreme i eventualne nepravilnosti (buk, grijanje, resetovi).
Objašnjenje povezivanja drugog DC motora sa L293D i Arduinom
Na slici je prikazano pravilno povezivanje dva DC motora na L293D drajver i Arduino UNO. Spoljno napajanje od 6V koristi se isključivo za motore, dok Arduino dobija napajanje preko USB kabla. Svi maseni vodovi su međusobno povezani kako bi sistem imao zajedničku referentnu tačku (GND).
1. Povezivanje napajanja
- 6V baterijsko napajanje ide na pin Vs čipa L293D (pin 8).
- Masa (−) iz baterija spaja se na:
- GND L293D (pinovi 4, 5, 12, 13)
- GND Arduino UNO
- GND red na breadboard-u
- 5V sa Arduina ide na Vss (pin 16) i napaja logičku stranu L293D integrisana kola.
2. Veze za Motor 1
- Motor 1 se povezuje na pinove 3 i 6 na L293D.
- Pin 2 (IN1) L293D ide na Arduino digitalni pin – vidi boju žice na slici.
- Pin 7 (IN2) L293D ide na drugi digitalni pin Arduina.
- Pin 1 (Enable 1) je povezan na Arduino PWM pin (npr. D5 ili D6).
3. Veze za Motor 2
- Motor 2 se povezuje na pinove 11 i 14 na L293D.
- Pin 10 (IN3) ide na Arduino digitalni pin.
- Pin 15 (IN4) ide takođe na neki digitalni pin.
- Pin 9 (Enable 2) povezan je na drugi PWM pin Arduina (npr. D9).
4. Funkcija Enable pinova
Enable pinovi (1 i 9) omogućavaju regulaciju brzine preko PWM signala.
Kada su povezani na Arduino PWM pinove, mogu se koristiti funkcijom
analogWrite() za kontrolu brzine oba motora nezavisno.
5. Da li nešto nedostaje?
Šema je ispravna, ali preporučuje se dodavanje tri kondenzatora po motoru:
- Jedan između + i − terminala motora (≈ 100 nF keramički)
- Dva kondenzatora od terminala motora do kućišta motora
Oni služe za smanjivanje smetnji (EMI) koje DC motori stvaraju zbog četkica. Sistem može da radi i bez njih, posebno pri manjim brzinama i opterećenju, ali za stabilniji rad i sprečavanje resetovanja Arduina – preporučuju se.