Servo Motor Kontrolü
Kısa cevap Servo motor nasıl kontrol edilir?
Servo motor 20 ms periyotlu (50 Hz) PWM sinyaliyle kontrol edilir; darbe genişliği yaklaşık 1 ms'de 0°, 1,5 ms'de 90°, 2 ms'de 180° konumunu verir. Arduino'da Servo kütüphanesiyle write(açı) komutu kullanılır. Servolar Arduino'nun 5 V pininden değil, ortak GND'li ayrı bir 5 – 6 V kaynaktan beslenmelidir.
Servo motor, içindeki redüktör, potansiyometre ve kontrol devresi sayesinde kendisine söylenen açıya gidip orada duran küçük bir motordur. Robot kolları, kamera yönlendirme, RC modeller ve otomatik kapaklar için idealdir. Bu rehberde SG90, MG90S ve MG996R servoların farklarını, PWM kontrol sinyalini, Arduino ile bağlantıyı, besleme sorunlarını ve 360 derece servoların nasıl çalıştığını anlatıyoruz.
SG90, MG90S ve MG996R karşılaştırması
| Model | Dişli | Tork (tipik) | Ağırlık | Kullanım |
|---|---|---|---|---|
| SG90 | Plastik | ≈ 1,8 kg·cm (4,8 V) | 9 g | Hafif mekanizmalar, eğitim |
| MG90S | Metal | ≈ 2 – 2,2 kg·cm | 13 g | SG90 boyutunda daha dayanıklı |
| MG996R | Metal | ≈ 9 – 11 kg·cm (6 V) | 55 g | Robot kolu, direksiyon, yük taşıyan eklemler |
Kontrol sinyali: 50 Hz PWM
Standart servolar 20 ms periyotlu (50 Hz) bir darbe dizisi bekler. Açıyı darbenin genişliği belirler: yaklaşık 1 ms → 0°, 1,5 ms → 90°, 2 ms → 180°. Gerçekte birçok servo 0,5 – 2,5 ms aralığını kullanır; uç noktaları kendi servonuzla deneyerek bulun. Görev oranı olarak bu %5 – %10 aralığına denk gelir; PWM hesaplama aracıyla darbe sürelerini hesaplayabilirsiniz.
Arduino ile kullanım
Servo kabloları: kahverengi/siyah GND, kırmızı + besleme (4,8 – 6 V), turuncu/sarı sinyal.
#include <Servo.h>
Servo s;
void setup() {
s.attach(9, 500, 2400); // pin, en küçük ve en büyük darbe (µs)
}
void loop() {
for (int a = 0; a <= 180; a += 2) { s.write(a); delay(15); }
for (int a = 180; a >= 0; a -= 2) { s.write(a); delay(15); }
}ESP32'de "ESP32Servo" kütüphanesi aynı arayüzü sağlar.
Besleme: en sık yapılan hata
Bir SG90 hareket ederken birkaç yüz miliamper, zorlandığında 600 – 700 mA çekebilir; MG996R ise 1 – 2,5 A'e kadar çıkar. Servoları Arduino'nun 5 V pininden beslemek, kartın resetlenmesine, USB portunun kapanmasına veya servonun titremesine yol açar. Servoları ayrı bir 5 – 6 V kaynaktan (en az servo başına 1 A, MG996R için 2 – 3 A) besleyin ve kaynağın GND'sini Arduino'nun GND'sine bağlayın. Servo besleme hattına 470 – 1000 µF bir elektrolitik kondansatör koymak ani akım çekişlerini yumuşatır. Uzun kablolarda gerilim düşümünü kablo kesiti aracıyla kontrol edebilirsiniz.
360 derece (sürekli dönen) servolar
360° servolarda konum geri beslemesi yoktur; darbe genişliği açıyı değil dönüş hızını ve yönünü belirler. 1,5 ms civarında durur, 1 ms'ye doğru bir yöne, 2 ms'ye doğru diğer yöne hızlanır. Tam durma noktası servodan servoya biraz değişir; kodla (ör. s.write(90) yerine 88 – 92 arasında) ince ayar yapılır.
Bu yazıda kullanılan ürünler
Sıkça sorulan sorular
Servo titriyor veya vınlıyor, neden?
Yetersiz besleme, ortak GND eksikliği, sinyal kablosundaki gürültü veya servonun mekanik sınırına zorlanması en sık nedenlerdir. Uç açıları biraz içeride tutun ve beslemeyi ayırın.
Aynı anda kaç servo sürebilirim?
Arduino Uno'da Servo kütüphanesi 12 servoya kadar destekler. Çok sayıda servo için PCA9685 gibi 16 kanallı PWM sürücü kartları kullanılır; besleme akımını ayrıca hesaba katın.
Servo motor kaç derece döner?
Standart servolar yaklaşık 180°, bazı modeller 270° döner. 360° modeller sürekli döner ama açı kontrolü yoktur.
Direnç, kondansatör ve diğer komponentler için ürünlerimize göz atın.
Servo ve Motorlar