KKM: Servo motor Tower Pro SG90

TowerPro SG90

 
Zamislite servo motor kao (servo) volan kojim upravlja robot. Možemo mu odrediti tj zadati kut, brzinu okretanja i akceleraciju. TowerPro SG90 je vrlo mali, precizni i povoljni servo motorić na kojem ćemo učiti princip rada servo motora. Slobodno koristite ovaj tutorijal i za druge servo motore.
 
TowerPro SG90

Karakteristike: (pogledaj datasheet)  
Masa: 9g
Dimenzije: 23 x 12 x 29 mm
Moment (4.8V): 1.8kg/cm
Temperatura: 0℃ - 55℃
Napon: 3.5V-6V
Duljina kablića: 25cm
Konektor: JR
 
Što je zapravo taj moment?
Kada servo motor dobije naredbu za pokret okretati će se do zadane pozicije i zadržai ju. Ako vanjska sila djeluje na motor dok drži poziciju, servo motor će se odupirati pokušavajući zadržati istu. Maksimalna sila koju servo može podnijeti je zapravo moment iz datasheeta.
 
NAPOMENA: ne okrećite kotačiće servo motora rukama, mogli biste ga oštetiti.

Kako radi servo motor

 
Servo motori sastoje se od DC motora, potenciometra i kontrolne pločice. Kako se motor okreće, otpor na potenciometru se mijenja.Na taj način kontrolna pločica može precizno regulirati okret, brzinu, akceleraciju i smjer okreta.
 
Inside servo
 
Servo motore kontroliramo slanjem PWM signala preko kontrolne žice. Obavezno koristite neke od PWM pinova s Croduina (3, 5, 6, 9, 10 ili 11). Ovisno o duljini pulsa rotor se okreće na željenu poziciju. TowerPro, kao i večina servo motora, ima mogućnost okreta 90 stupnjeva u oba smjera ukupno 180 stupnjeva. Ukoliko imate potrebu za servo motor s punjim okretom pogledajte SM S4303R servo motor.

Spajanje motora i Croduina

 
Servo i Croduino

Arduino kod

 
ArduinoIDE dolazi sa servo libraryem, trebamo ga samo pozvati. Pogledajte reference libarya.

#include "Servo.h"
Servo servo; // kreiramo servo objekt za upravljanje motorom
// library podržava maksimalno 8 motora
int poz = 0; // varijabla u koju spremamo trenutnu poziciju motora
void setup()
{
servo.attach(9); // signalni PWM pin Croduina je 9
}
void loop()
{
for(poz = 0; poz < 180; poz += 1) // motor se okrece od 0 do 180 stupnjeva
{ // u koracima od 1 stupnja
servo.write(poz); // kazemo servo da provjeri varijablu poz za poziciju
delay(15); // cekamo 15ms da motor dode na zadanu poziciju
}
for(poz = 180; poz>=1; poz-=1) // vracamo motor na pocetnu poziciju
{
servo.write(poz);
delay(15);
}
}
Leave a Reply