@wtFAQ
◀ LED matrica 8 x 83. Arduino programiranje ▶

Motori

Što su motori?

Motori su uređaji koji pretvaraju električnu energiju u mehaničko gibanje, najčešće rotaciju osovine, kako bi pokretali razne strojeve, kotače, pumpe ili robote. Koriste se u svemu, od igračaka i malih ventilatora do industrijskih strojeva i električnih automobila.

Glavne vrste motora

  • DC motori (istosmjerni): napajaju se istosmjernim naponom (baterije, adapteri), jednostavni su za upravljanje i često se koriste u malim uređajima i igračkama.​
    DC motor
  • AC motori (izmjenični): napajaju se iz mreže (npr. 230 V), koriste se u kućanskim aparatima, pumpama, ventilatorima i industriji.​
  • Koračni motori (stepperi): okreću se u malim “koracima” i omogućuju jako precizno pozicioniranje bez dodatnog senzora položaja, pa se koriste u 3D printerima i CNC strojevima.​
  • Servo motori: kombinacija DC motora, zupčanika i senzora položaja u jednom kućištu, dizajnirani za precizno postavljanje na određeni kut.​
    servo motor

Koje vrste ćemo koristiti s Arduinom

U tipičnim Arduino projektima koriste se ove vrste motora:

  • Mali DC motori: za vozila na kotačima, ventilatore, pužnice, razne rotacijske mehanizme; njima upravljamo brzinom (PWM) i smjerom (H‑bridge driveri poput L298N).​
  • Hobi servo motori (SG90, MG90 i sl.): za podizanje/spuštanje rampi, upravljanje robot‑rukom, upravljanje skretnicama, radar mehanizmima i svim zadacima gdje treba precizan kut.​

Na radionici s Arduinom fokus je na razumijevanju razlike između slobodne rotacije DC motora (brzina i smjer) i preciznog pozicioniranja servo motora (kut), te kako se oba tipa ispravno spoje i programiraju u praktičnim projektima.

Kako rade DC motori

  • DC motor pretvara električnu energiju (istosmjernu struju) u mehaničku rotaciju pomoću magnetskog polja i vodiča kroz koji teče struja.
  • Unutra se nalazi rotor s namotajima (zavojnicama) i stator (trajni magneti ili elektromagneti); interakcija njihova magnetskog polja stvara silu (moment) koja okreće osovinu.​​
  • Komutator i četkice mijenjaju smjer struje u zavojnicama tako da sila vrtnje uvijek “gura” u istom smjeru, pa se motor kontinuirano okreće.

Kako rade servo motori

  • Hobi servo je mali DC motor s reduktorom, potenciometrom na osovini i elektroničkim sklopom za upravljanje u jednoj kutiji.

  • Servo ne vrti u krug beskonačno, nego se postavlja na određeni kut (tipično 0–180°) prema širini PWM impulsa (npr. 1 ms ≈ 0°, 1,5 ms ≈ 90°, 2 ms ≈ 180°).

    Elektronika u servu uspoređuje zadani položaj (iz PWM signala) i stvarni položaj (s potenciometra) te pokreće motor preko H‑bridgea dok se greška ne “poništi”, pa servo drži traženi kut.

PWM

PWM (Pulse Width Modulation, modulacija širinom impulsa) je tehnika kojom digitalni izlaz (koji može biti samo 0 ili 1, 0 V ili 5 V) glumi analogni napon tako što se vrlo brzo pali i gasi, a mijenja se samo koliko dugo je uključen u jednom periodu. Ako je signal većinu vremena uključen, prosječni napon je veći; ako je većinu vremena isključen, prosječni napon je manji, i tako dobijemo efekt “između” 0 V i 5 V.

PWM princip

Osnovni pojam kod PWM‑a je duty ciklus (radni ciklus), koji se izražava u postotku i definira se kao omjer vremena kada je signal HIGH (uključen) i ukupnog trajanja perioda (T): duty = (t_ON / T) · 100%. Na primjer, pri 5 V: 0% duty znači efektivno 0 V, 50% duty osjeća se kao oko 2,5 V, a 100% duty kao punih 5 V na opterećenju (LED, motor...)

PWM signali

Drugi važan pojam je frekvencija PWM signala, tj. koliko puta u sekundi se ponavlja period uključeno/isključeno (tipično stotine ili tisuće puta u sekundi na mikrokontrolerima). Kod Arduina se za LED‑ice i DC motore koriste frekvencije dovoljno visoke da oko ne vidi treperenje, pa se promjena duty ciklusa doživljava kao glatka promjena svjetline ili brzine.

Prednost PWM‑a je što omogućava finu kontrolu snage bez gubitaka na velikim serijskim otpornicima: tranzistor ili MOSFET radi ili potpuno uključen (mali gubici), ili potpuno isključen (nema struje), pa je sustav učinkovit. Zbog toga se PWM koristi za upravljanje svjetlinom LED‑ova, brzinom DC motora, položajem servo motora (kod njih se informacija prenosi u širini impulsa) i u mnogim naponskim pretvaračima i regulatorima.

Vježba sa servo motorom: radar koji skenira prostor

Ideja:

Servo se polako njiše lijevo–desno (kao radar), učenici vide precizno pozicioniranje, a kasnije se na njega može staviti senzor (npr. ultrazvučni).

Potrebno:

  • Arduino Uno
  • 1× hobi servo (SG90 ili slično)
  • Vanjsko napajanje 5 V za servo (preporučeno)
  • Kondenzator 470 µF–1000 µF paralelno na napajanju serva (za stabilniji rad, opcionalno)
  • Breadboard i žice

Spojevi serva (s vanjskim napajanjem):

Pretpostavimo da servo ima:

  • Crvena žica: +5 V
  • Smeđa/crna žica: GND
  • Žuta/narančasta žica: signal

Spoj:

  • Crvena na +5 V vanjskog napajanja (ne direktno na 5 V Arduina ako je jači servo).
  • Smeđa/crna na GND vanjskog napajanja.
  • GND Arduina na isti GND vanjskog napajanja (zajednička masa).
  • Žuta/narančasta (signal) na Arduino pin 9 (ili drugi PWM pin prema primjeru).

Opcionalno:

  • Veliki elektrolitski kondenzator između +5 V i GND napajanja serva (pazi polaritet).
shema

Programska logika (sweep):

  • uključi Servo biblioteku (#include <Servo.h>),
  • napravi objekt Servo myservo;.
  • u setup() pozvati myservo.attach(9);.
  • u loop() koristiti dvije for petlje:
    • prva: kut od 0 do 180, svaki korak myservo.write(kut); delay(15);.
    • druga: kut od 180 do 0, svaki korak myservo.write(kut); delay(15);.

Promjenom argumenta write() se zapravo zadaje kut, a ne brzinu, a servo uvijek traži zadanu poziciju.

// C++
#include <Servo.h> 
 
Servo myservo;  // napravi objekt za kontrolu servo motora
                // do 12 servo objekata se može stvoriti na većini Arduino mikrokontrolera

void setup() 
{ 
  myservo.attach(9);  // dodijeli servo motor digitalnom pinu 9
} 

void loop() 
{ 
  int pos;
  for(pos = 0; pos <= 180; pos += 1) // kreće se od 0 do 180 stupnjeva po 1 stupanj
  {
    myservo.write(pos);              // odi na trenutni stupanj (pos)
    delay(15);                       // čekaj 15 ms da dostigne poziciju
  } 
  for(pos = 180; pos>=0; pos-=1)     // kreće se od 180 do 0 stupnjeva po 1 stupanj
  {                                
    myservo.write(pos);              // odi na trenutni stupanj (pos)
    delay(15);                       // čekaj 15 ms da dostigne poziciju
  } 
} 

ligtbulb Što smo naučili?

  • DC motor pretvara istosmjernu električnu energiju u kontinuiranu rotaciju, kojom možemo upravljati brzinom (PWM) i smjerom (H‑bridge).
  • Servo motor koristi DC motor, zupčanike, potenciometar i elektroniku kako bi se precizno postavio na zadani kut na temelju PWM impulsa i povratne sprege.
  • Kako se DC motor i servo motor fizički spajaju na Arduino i kako programom mijenjamo brzinu, smjer ili položaj, što je osnova za robote, vozila i razne automatizirane mehanizme.
◀ LED matrica 8 x 83. Arduino programiranje ▶