Servo Motor Kontrolü: Tam Rehber
Önemli Öğrenimler:
Servo Motor Kontrolü Tanımı: Servo motor kontrolü, elektronik sinyaller aracılığıyla motora pozisyon, hız ve ivme üzerinde hassas bir şekilde müdahale etmeyi sağlar.
Geri Besleme Mekanizması: Genellikle potansiyometre veya kodlayıcı olarak kullanılan geri besleme sistemi, motordan gelen çıktının kontrol girişine tam olarak uymasını sağlar.
PWM Sinyali: Genişlik modülasyonlu darbe (PWM), servonun pozisyonunu ayarlamak için elektriksel darbelerin süresini değiştirerek kritik önem taşır.
Arduino ve Servo Motorlar: Arduino kartını kullanmak, servo motorları programlamak ve kontrol etmek için popüler ve etkili bir yoldur. Bu, minimum donanım kurulumu gerektirir.
Servo Motorların Uygulamaları: Servo motorlar, robotik ve otomatik sistemler gibi hassas pozisyon kontrolü gerektiren projelerde vazgeçilmezdir.
Bir servo motor, döndürmede yüksek hassasiyet ve doğruluk için tasarlanmış motordur. Tipik bir DC motordan farklı olarak, sürekli dönme yerine belirli bir pozisyonda kalma yeteneği vardır. Bu özellik, servo motorları robotik, otomasyon ve hobiler için ideal hale getirir.
Bu makale, servo motor kontrolünün nasıl işlediğini, farklı servo motor türlerini, çeşitli kontrol yöntemlerini ve cihazlarını açıklar. Ayrıca servo motor uygulamaları ve projeleri örnekleri sunar.
Servo Motor Nedir?
Bir servo motor, pozisyon (açı), hız ve ivmenin hassas kontrolünü sağlayan bir aktüatör olarak tanımlanır. Tipik bir servo motor, üç ana bileşenden oluşur: bir DC motor, bir kontrol devresi ve bir geri besleme cihazı.
DC motor, servo'yu güçlendirir ve çıkış şaftındaki hızı azaltıp torku artırarak dişlilere bağlanır.

Çıkış şaftı, yükü hareket ettiren servo'nun dönen kısmıdır.
Kontrol devresi, dış bir kontrolcüden gelen giriş sinyallerini alıp işleme sorumludur. Bu sinyaller, servo'ya hangi pozisyona, hızda veya yönde gitmesi gerektiğini söyler. Kontrol devresi ayrıca DC motora güç göndererek onu sürer.
Geri besleme cihazı genellikle, çıkış şaftının mevcut pozisyonunu ölçen bir potansiyometre veya kodlayıcıdır.

Geri besleme cihazı, pozisyon verisini kontrol devresine geri ileterek, gerçek pozisyonun giriş sinyalinden gelen istenen pozisyonla uyumlu olacak şekilde DC motora güç ayarlar.
Kontrol devresi ve geri besleme ciharı arasındaki geri besleme döngüsü, servo'nun hareket aralığı içinde herhangi bir pozisyona doğru hareket edebilmesini ve bu pozisyonda kalmasını sağlar.
Bir Servo Motor Nasıl Kontrol Edilir?
Servo motorlar, servonun sinyal çizgisine genişlik modülasyonlu darbe (PWM) sinyali göndererek kontrol edilir. PWM, bir sinyali hızlıca açıp kapayarak değişken genişlikte darbeler oluşturmak için kullanılan bir tekniktir. Darbelerin genişliği, çıkış şaftının pozisyonunu belirler.
Örneğin, 1.5 milisaniye (ms) darbe genişliğine sahip bir PWM sinyali gönderdiğinizde, servo tarafsız pozisyona (90 derece) gider.

1 ms darbe genişliğine sahip bir PWM sinyali gönderdiğinizde, servo en düşük pozisyona (0 derece) gider. 2 ms darbe genişliğine sahip bir PWM sinyali gönderdiğinizde, servo en yüksek pozisyona (180 derece) gider.
PWM sinyalinin frekansı 50 Hz'dir, yani 20 ms'de bir tekrarlanır. Bu süre içinde darbe genişliği 1 ms ile 2 ms arasında değişebilir.
PWM sinyalleri üretip servo motorlara göndermek için birçok yolu vardır. En yaygın yöntemler şunlardır:
Bir Arduino kartı veya başka bir mikrodenetleyici kullanarak
Bir potansiyometre veya başka bir analog sensör kullanarak
Bir joystick veya başka bir dijital giriş cihazı kullanarak
Bir özel servo kontrolörü veya sürücü kullanarak
Aşağıdaki bölümlerde, bu yöntemlerin her birini daha ayrıntılı olarak inceleyeceğiz ve bunların nasıl çalıştığını göreceğiz.
Arduino ile Bir Servo Motoru Kontrol Etme
Arduino, servo motorları kontrol etmek için en popüler platformlardan biridir. Arduino kartları, servolara sinyal göndermek için kullanılabilen dahili PWM çıkışlarına sahiptir. Arduino ayrıca servo kontrolü için kolay bir kod yazmanıza olanak tanıyan bir Servo kütüphanesi sunar.
Bir servo motoru Arduino ile kontrol etmek için şunlara ihtiyacınız olacaktır:
Bir Arduino kartı (örneğin Arduino UNO)
Bir standart servo motor (örneğin SG90)
Jumper kabloları
Bir breadboard (isteğe bağlı)
Servodan gelen kırmızı kablo, Arduino kartındaki 5V'ye bağlanır. Servodan gelen siyah kablo, Arduino kartındaki GND'ye bağlanır. Servodan gelen beyaz kablo, Arduino kartındaki pin 9'a bağlanır.
Arduino kartınızı programlamak için, Arduino IDE'sini (online veya offline) kullanmanız gerekecektir. Servo kütüphanesinden bir örneği kullanabilir veya kendi kodunuzu yazabilirsiniz.
Aşağıdaki kod, bir for döngüsü kullanarak bir servo motoru 180 derece arasında düzgün bir şekilde hareket ettirmeyi gösterir:
#include <Servo.h> // Servo kütüphanesini ekle
Servo myservo; // Servo nesnesi oluştur
int pos = 0; // Pozisyon için değişken
void setup() {
myservo.attach(9); // Servo nesnesini pin 9'a bağla
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // 0'dan 180 dereceye kadar döngü
myservo.write(pos); // Pozisyonu Servo nesnesine yaz
delay(15); // 15 ms bekle
}
for (pos = 180; pos >= 0; pos -= 1) { // 180'den 0 dereceye kadar döngü
myservo.write(pos); // Pozisyonu Servo nesnesine yaz
delay(15); // 15 ms bekle
}
}
Bu kod, pozisyon değişkenini 0'dan 180 dereceye ve tersine arttıran iki döngü kullanır. Ardından bu değeri myservo.write(pos) fonksiyonu kullanarak Servo nesnesine yazar. Her adım arasında 15 ms bekleme ekler, böylece hareket yavaşlatılır.
Bu kodu IDE'nin Upload butonunu kullanarak Arduino kartınıza yükleyin ve servonuzun düzgün bir şekilde geri ve ileri hareket etmesini izleyin.
Potansiyometre ile Bir Servo Motoru Kontrol Etme
Bir potansiyometre, direncini ne kadar çevirdiğinize bağlı olarak değiştirebilen bir analog sensördür. Potansiyometreyi, bir servo motorunu kontrol etmek için bir giriş cihazı olarak kullanabilirsiniz.
Bir potansiyometre ile bir servo motoru kontrol etmek için şunlara ihtiyacınız olacaktır:
Bir Arduino kartı (örneğin Arduino UNO)
Bir standart servo motor (örneğin SG90)
Bir potansiyometre (10k Ohm)
Jumper kabloları
Bir breadboard
Bir potansiyometre ve bir servo motoru Arduino kartına bağlama için bağlantı diyagramı aşağıda gösterilmiştir:
Potansiyometreden gelen kırmızı kablo, Arduino kartındaki 5V'ye bağlanır. Potansiyometreden gelen siyah kablo, Arduino kartındaki GND'ye bağlanır. Potansiyometreden gelen yeşil kablo, Arduino kartındaki pin A0'a bağlanır.
Servodan gelen kırmızı kablo, breadboard'daki başka bir satırdaki 5V'ye bağlanır. Servodan gelen siyah kablo, breadboard'daki başka bir satırdaki GND'ye bağlanır. Servodan gelen beyaz kablo, breadboard'daki başka bir satırdaki pin D9'a bağlanır.
Arduino kartınızı programlamak için, önceki örnekteki aynı kodu kullanmanız gerekecek ancak birkaç satırı değiştirmeniz gerekecektir:
#include <Servo.h> // Servo kütüphanesini ekle
Servo myservo; // Servo nesnesi oluştur
int potpin = A0; // Potansiyometreyle bağlantılı pin
int val = 0; // Potansiyometre değerini okuma için değişken
void setup() {
myservo.attach(9); // Servo nesnesini pin D9'a bağla
}
void loop() {
val = analogRead(potpin); // Potansiyometreden değer oku (0 - 1023)
val = map(val, 0, 1023, 0, 180); // Değer aralığını (0 - 180) harita
myservo.write(val); // Haritalanan değeri Servo nesnesine yaz
delay(15); // 15 ms bekle
}
Bu kod, analogRead(potpin) fonksiyonunu kullanarak A0 pinine bağlı potansiyometreden değer okur. Ardından map(val, 0, 1023, 0, 180) fonksiyonunu kullanarak değer aralığını 0 - 1023'ten 0 - 180 dereceye haritalar. Sonra bu değeri myservo.write(val) fonksiyonu kullanarak Servo nesnesine yazar. Aynı zamanda önceki örnekte olduğu gibi 15 ms bekleme ekler.
Bu kodu IDE'nin Upload butonunu kullanarak Arduino kartınıza yükleyebilirsiniz. Potansiyometrenin knob'unun konumuna göre servonuzun hareket etmesini görmelisiniz.
Joystick ile Bir Servo Motoru Kontrol Etme
Joystick, iki eksen boyunca hareket yönünü ve büyüklüğünü algılayabilen bir dijital giriş cihazıdır. Joystick'i, joystick'in x-eksenini servo'nun açısına eşleştirerek bir servo motoru kontrol etmek için kullanabilirsiniz.
Bir joystick ile bir servo motoru kontrol etmek için aşağıdaki malzemelere ihtiyacınız olacaktır:
Bir Arduino kartı (örneğin Arduino UNO)
Bir standart servo motor (örneğin SG90)
Bir joystick modülü (örneğin KY-023)
Jumper kabloları
Bir breadboard
Bir joystick modülü ve bir servo motoru Arduino kartına bağlama için bağlantı diyagramı aşağıda gösterilmiştir:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Joystick modülünden gelen kırmızı kablo, Arduino kartındaki 5V'ye bağlanır. Joystick modülünden gelen siyah kablo, Arduino kartındaki GND'ye bağlanır. Joystick modülünden gelen yeşil kablo, Arduino kartındaki pin A0'a bağlanır.
Servodan gelen kırmızı kablo, breadboard'daki başka bir satırdaki 5V'ye bağlanır. Servodan gelen siyah kablo, breadboard'daki başka bir satırdaki GND'ye bağlanır. Servodan gelen beyaz kablo, breadboard'daki başka bir satırdaki pin D9'a bağlanır.
Arduino kartınızı programlamak için, önceki örnekteki aynı kodu kullanmanız gerekecek ancak birkaç satırı değiştirmeniz gerekecektir:
#include <Servo.h> // Servo kütüphanesini ekle
Servo myservo; // Servo nesnesi oluştur
int joyX = A0; // Joystick x-ekseniyle bağlantılı pin
int val = 0; // Joystick değerini okuma için değişken
void setup() {
myservo.attach(9); // Servo nesnesini pin 9'a bağla
}
void loop() {
val = analogRead(joyX); // Joystick x-ekseninden değer oku (0 - 1023)
val = map(val, 0, 1023, 0, 180); // Değer aralığını (0 - 180) harita