Çeşitli torklarda ve boyutlarda pozisyon kontrolü yapabilen
motorlardır. Hobiciler için arduino ile birlikte kullanıldığında pozisyon
kontrolünü çok basit hale getirmiştir. Servo motor için yazdıkları kütüphane
sayesinde 0-180 ° arasında istediğiniz dereceye motoru çevirip sabit
tutabilirsiniz. Flex sensör ile robot kol veya el yapımıda bu aralar moda
olmuşken servo motor kontrolünü öğrenmeden olmaz. Servo motorlar PWM(Pulse Width Modulation) sinyalinin
duty cycle ını kontrol ederek pozisyon kontrolü yapılır.Pwm sinyali kare dalga
gönderilerek güç kontrolü yapabiliyor 0-5 Varası değerlerin çıktısını arduinodan alabiliyorduk.
Servo motor içinde pwm sinyali kullanacağız ve güç saykılını ayarlayarak 0-180
° arası kontrol yapabileceğiz.20 ms bir saykılda 1-2 ms lik güç saykılı
ayarlaması yaparak bu işlemi yapacağız.1ms de 0° 2ms de 180° oacak şekilde
orantılı olarak değişen bir grafik sergiler.Aşağıda gösterildiği gibi.
Bağlantı kısmı ies 3 bacaktan oluşan servo motorlarda
kırmızı, sarı ve siyah bacakları sırasıyla +, data,- olarak bağlantılarını
gerçekleştiriyoruz. Servo motorun nasıl çalıştığını anladıktan sonra artık
programı yazıp devreyi kurması kalıyor.Programı arduinonun örnekler kısmından
alıyoruz. Dosya/Örnekler/Servo/Knob örneğini açınız. Aşağıdaki program
karşınıza çıkacak. Şimdi satır satır ne yaptığımızı anlayalım.
#include <Servo.h>//Servo kütüphanesini kullanacağımız
belirtiyor ve kütüphaneyi çağırıyoruz.
Servo myservo; // bir
servo objesi oluşturuyoruz.
int potpin = 0; // potansiyometrenin
bağlanacağı bacaağı tutan değişkeni belirliyoruz.
int val; // servo
motora bilgi gönderecek değişkeni tanımlıyoruz.
void setup() {
myservo.attach(9); /* servo
motorun data bacağını hangi pine bağlayacağımızı belirliyoruz.Pwm bacağı olmak
zorunda buna dikkat ediniz yoksa pwm çıkışı alamazsınız ve servoyu kontrol
edemezsiniz.*/
}
void loop() {
val =
analogRead(potpin); // potansiyometredeki değeri okuyoruz.(0-1023)
arası değer gelecek
val = map(val, 0,
1023, 0, 180); /*0-1023 arası
okuduğumuz değeri 0-180arası skala ediyoruz.*/
myservo.write(val); /*Skala ettiğimiz değeri servo motora
gönderiyoruz.ve pozisyona gitmesini sağlıyoruz.*/
delay(15); // sevonun pozisyona gitmesi için belirli bir
süre bekletiyoruz.
}
Devre Şeması:
0 yorum