Uvod u servo motore i njihova upotreba sa Arduino Uno pločom
Servo motor je posebna vrsta motora napravljena za precizno upravljanje položajem, uglom i brzinom. Za razliku od običnih DC motora koji se samo neprekidno okreću u jednom smeru, servo motor se može postaviti na tačno određeni ugao (npr. 0°, 90°, 180°). Zato je idealan za robotske ruke, mehanizme za skretanje, automatska vrata i modele aviona.
Kako radi servo motor
Servo motor se sastoji od:
- DC motora koji stvara okretanje,
- sistema zupčanika koji smanjuje brzinu i povećava obrtni moment,
- potenciometra koji meri trenutni ugao osovine,
- unutrašnjeg upravljačkog kola koje poredi željeni i stvarni položaj i prema tome koriguje okretanje.
Upravljanje pomoću Arduino Uno ploče
Arduino Uno upravlja servo motorom pomoću PWM signala (Pulse Width Modulation – impulsno-širinska modulacija), koji se najčešće pravi bibliotekom Servo.h. Standardni upravljački signal ima period od 20 ms (50 Hz), a širina impulsa određuje ugao:
- impuls od 1 ms → približno 0°
- impuls od 1,5 ms → približno 90° (srednji položaj)
- impuls od 2 ms → približno 180°
Napajanje i električne osobine
Većina malih servo motora (kao što su SG90 ili MG90S) radi na 5 V i troši oko 100 mA u mirovanju, a pod opterećenjem i do 500 mA. Zato se preporučuje da se servo ne napaja direktno sa 5V pina Arduina kada se koristi više servo motora – umesto toga koristi spoljašnji izvor napajanja (na primer regulisanu bateriju ili adapter od 5 V).
Povezivanje servo motora sa Arduinom
Servo obično ima tri žice:
- Crvena – +5V (napajanje)
- Braon ili crna – GND (masa)
- Žuta ili narandžasta – signal (PWM upravljanje sa Arduina, najčešće pin 9)
Primer koda
#include <Servo.h>
Servo motor;
void setup() {
motor.attach(9); // pin 9 za PWM signal
}
void loop() {
for (int angle = 0; angle <= 180; angle++) {
motor.write(angle);
delay(15);
}
for (int angle = 180; angle >= 0; angle--) {
motor.write(angle);
delay(15);
}
}
Objašnjenje koda
U ovom primeru servo se polako pomera od 0° do 180° i nazad. Naredba motor.write(angle) šalje PWM signal koji odgovara zadatom uglu. Funkcija delay(15) daje servo motoru dovoljno vremena da stigne do novog položaja pre sledećeg pomeranja.
Primena servo motora
Servo motori se koriste u mnogim projektima:
- robotske ruke i manipulatori
- pametne brave
- modeli aviona, automobila i dronovi
- automatski ventili i sistemi za upravljanje kretanjem
Zahvaljujući jednostavnosti i dobroj podršci u Arduino okruženju, servo motori su odličan početak za učenje mehatronike i upravljanja aktuatorima.
Vežba: Servo motor – Sweep
U ovoj vežbi koristimo osnovne delove iz početničkog kompleta (Starter Kit). Iako veći servo motori često traže spoljašnje napajanje da bi pri pokretanju dobili dovoljno struje, ovde koristimo mikro servo motor SG90.
Napajanje se dovodi direktno sa 5V pina na Arduino ploči i nisu potrebni dodatni otpornici.
Pin za upravljački signal mora biti povezan na PWM pin, jer se ugao servo motora zadaje PWM signalom (Pulse Width Modulation). Taj signal se lako pravi pomoću Arduino biblioteke Servo.h.
Cilj vežbe je da se servo motor neprekidno okreće do zadatih uglova u oba smera, kao osnovni prikaz kako radi postavljanje položaja servo motora.
Osobine servo motora SG90:
- Radni napon: 4,8 V – 6,0 V
- Opseg okretanja: 180°
- Obrtni moment: oko 1,8 kg·cm na 4,8 V
- Potrošnja struje: oko 100 mA u mirovanju, do 500 mA pri pokretanju
Servo motor SG90 koristi unutrašnji potenciometar i sistem zupčanika za precizno postavljanje položaja. Pošto traži mali napon i malo snage, idealan je za početničke Arduino projekte i ne zahteva dodatne komponente.
Kako servo radi
Servo motor ima tri žice:
- Crvena – napajanje (+5V)
- Braon ili crna – masa (GND)
- Narandžasta ili žuta – signal (PWM)
Arduino šalje niz impulsa čija širina određuje položaj servo motora. Impuls od 1 ms obično znači 0°, 1,5 ms znači 90°, a 2 ms znači 180°. Biblioteka Servo.h sama pravi ove impulse, pa korisnik zadaje samo željeni ugao.
U ovoj vežbi servo se ravnomerno pomera od 0° do 180°, zatim nazad od 180° do 0°, i to se ponavlja bez prestanka. Tako se vidi osnovna ideja upravljanja položajem pomoću PWM signala.
Napajanje i stabilan rad
Servo SG90 može da se napaja direktno sa Arduino ploče. Ako se koristi više servo motora ili veći model, preporučuje se spoljašnje napajanje od 5 V. Uvek poveži zajedničku masu (GND) Arduina i spoljašnjeg izvora napajanja.
Ako se Arduino resetuje ili servo podrhtava, uzrok je verovatno pad napona zbog naglog skoka struje pri pokretanju. Kondenzator od 100–470 µF između 5V i GND pomaže da napajanje bude stabilnije.
Najčešći problemi i rešenja
- Servo se ne pomera: proveri povezivanje PWM pina i žice.
- Servo podrhtava ili trza: napajanje je nestabilno – koristi kraće žice ili spoljašnje napajanje od 5 V.
- Arduino se resetuje kada se servo pokrene: struja pri pokretanju je prevelika – dodaj kondenzator ili spoljašnje napajanje.
Kada se program pokrene, servo se ravnomerno pomera levo-desno. Ovo jednostavno kretanje je osnova za složenije projekte kao što su robotske ruke, nosači senzora i automatski mehanizmi.
Šema povezivanja
Na Slici 1 je prikazana šema povezivanja. Servo motor ima tri priključka – za napajanje (VCC), masu (GND) i digitalni upravljački signal (PWM).
Pin za napajanje se crvenom žicom povezuje na 5V pin Arduino UNO ploče, koji daje potreban napon za servo.
Pin za masu (obično crna ili braon žica) se povezuje na jedan od GND pinova Arduina. Svi GND pinovi na Arduinu su unutra povezani, pa nije važno koji koristiš.
Upravljačka (signalna) žica, obično narandžasta ili žuta, povezuje se na digitalni pin 9 Arduina. Ovaj pin je označen znakom ~, što znači da podržava PWM (Pulse Width Modulation).
Šta je PWM?
PWM znači Pulse Width Modulation (impulsno-širinska modulacija) – tehnika kojom se digitalnim signalom oponaša analogno upravljanje. Arduino šalje niz impulsa, a širina (trajanje) svakog impulsa određuje željeni položaj osovine servo motora.
Na primer, impuls od oko 1 milisekunde postavlja servo na približno 0°, 1,5 milisekundi na 90°, a 2 milisekunde na 180°. Biblioteka Servo.h sama pravi ove impulse, pa se ugao servo motora zadaje jednom naredbom, na primer myservo.write(angle);.
Proveri znanje
Otvori kviz
Kviz: servo motor
1. Šta servo motor omogućava, za razliku od običnog DC motora?
2. Koja širina impulsa odgovara uglu od oko 90°?
3. Na koji pin Arduina se vezuje signalna žica u vežbi?
4. Šta pomaže kada se Arduino resetuje pri pokretanju servoa?
| Prethodno |< Arduino – ultrazvučni senzor |
Sledeće Senzor vlažnosti zemljišta >| |
