Arduino Dersleri | Arduino IDE Kurulumu | Arduino Programlama Dersleri
Servo motorlar, RC (radio controlled, uzaktan kumandalı) araba, helikopter ve uçak gibi araçlarda kullanılır. Bu motorlar, DC motorlardan farklı olmak üzere istediğimiz pozisyonda sabit kalacak şekilde tasarlanmıştır. Çoğunlukla 0-180 derece arası açılarda çalışırlar. RC arabamızın direksiyonunda, helikopterlerin pervanelerine açı vermede ve uçakların kontrol yüzeylerini hareket ettirmede kullanılırlar. PWM sinyal ile çalışırlar.
İlk uygulama örneklerimizde PWM’i analog voltaj çıkışı elde etmek için kullanmıştık. Fakat servo motorlarda PWM biraz daha farklı şekilde çalışmakta. Hatırlayacak olursak, Arduino’da analogWrite() komutu ile aldığımız PWM sinyalinin sadece 5V seviyesinde kaldığı süreyi (duty cycle) değiştirerek farklı analog sinyaller elde etmiştik. Servo motorlarda ise yine benzer şekilde 20 ms’lik sinyalin açık kaldığı periyodu 1 ms ile 2 ms arasında değiştirerek, servomuzu 0 dereceden 180 derece arasında istediğimiz konuma ayarlayabiliriz.
Bağlantılarımızı şekildeki gibi yapıyoruz:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}