Skip to Content
Motorlar ve SürücülerServo Motor Nedir?

Servo Motor Nedir?

Servo motor, mili belirli bir açıya götürüp orada tutabilen motordur. DC motordan farkı, bir geri bildirim mekanizması içermesidir: mevcut konumunu bilir ve istenen konuma ulaşana kadar kendini düzeltir.

Robot kolları, direksiyon mekanizmaları, kamera pan-tilt sistemleri ve sensör tarayıcılar servo motorla yapılır.

İçinde Ne Var?

Bir hobi servosunun gövdesinde dört parça bulunur:

  1. DC motor — asıl hareketi üretir
  2. Dişli kutusu — hızı düşürüp torku artırır
  3. Potansiyometre — çıkış miline bağlıdır, mevcut açıyı ölçer
  4. Kontrol devresi — istenen açı ile mevcut açıyı karşılaştırır

Çalışma döngüsü şudur: kontrol devresi gelen sinyalden hedef açıyı okur, potansiyometreden mevcut açıyı okur, aradaki farkı kapatacak yönde motoru sürer. Fark sıfırlandığında motor durur.

Buna kapalı çevrim (closed loop) kontrol denir ve servoyu DC motordan ayıran temel özelliktir.

Kontrol Sinyali

Servo, üç kablosundan sinyal kablosuna gelen PWM darbeleriyle kontrol edilir. Standart hobi servolarında:

  • Sinyal 20 ms’de bir (50 Hz) tekrarlanır
  • Darbenin genişliği hedef açıyı belirler
Darbe genişliğiAçı
~1,0 ms
~1,5 ms90° (orta)
~2,0 ms180°

Bu değerler markaya göre biraz kayabilir (0,5 – 2,5 ms). Servo tam 0° veya 180°‘ye ulaşamıyorsa bu aralığı ayarlamak gerekir.

Neyse ki Arduino’nun Servo kütüphanesi bu zamanlamayı sizin yerinize yönetir; siz sadece açı yazarsınız.

Kablo Renkleri

Renkİşlev
Kahverengi veya siyahGND
KırmızıVCC (4,8 – 6 V)
Turuncu, sarı veya beyazSinyal

Ortadaki kablo her zaman VCC’dir. Bu, servoları ters takma riskini azaltan yararlı bir standarttır.

Temel Kod

#include <Servo.h> Servo servo; const int SERVO_PIN = 9; void setup() { servo.attach(SERVO_PIN); } void loop() { servo.write(0); // 0 derece delay(1000); servo.write(90); // orta delay(1000); servo.write(180); // 180 derece delay(1000); }

Yumuşak hareket

servo.write(180) komutu servoyu tam hızla hedefe fırlatır. Bu hem sarsıntılı görünür hem de ani akım çekişine yol açar. Kademeli hareket daha doğrudur:

void yumusakGit(int hedef, int gecikme) { int mevcut = servo.read(); if (hedef > mevcut) { for (int a = mevcut; a <= hedef; a++) { servo.write(a); delay(gecikme); } } else { for (int a = mevcut; a >= hedef; a--) { servo.write(a); delay(gecikme); } } } void loop() { yumusakGit(180, 15); delay(500); yumusakGit(0, 15); delay(500); }

writeMicroseconds ile hassas kontrol

write() yalnızca tam sayı derece kabul eder. Daha ince kontrol için doğrudan darbe genişliği yazabilirsiniz:

servo.writeMicroseconds(1500); // orta konum servo.writeMicroseconds(1750); // yaklasik 135 derece

Servonun gerçek sınırlarını bulmak için attach() fonksiyonuna min/max verilebilir:

servo.attach(9, 600, 2400); // pin, min us, max us

Servo Türleri

Standart (konumlu) servo

0–180° arası döner ve o açıda durur. SG90, MG996R gibi.

Sürekli dönüşlü (continuous rotation) servo

Potansiyometre bağlantısı değiştirilmiş, açı geri bildirimi devre dışı bırakılmış servodur. Bu tipte write() değeri açı değil hız ve yön belirler:

DeğerDavranış
0Tam hızla bir yöne
90Dur
180Tam hızla ters yöne
servo.write(90); // dur servo.write(120); // yavas ileri servo.write(0); // tam hizla geri

Sürekli dönüşlü servolar, sürücü kartı gerektirmeden yön ve hız kontrolü sağladıkları için basit robotlarda pratiktir. Ancak konum bilgisi vermezler.

Servonuz write(90) dediğinizde durmuyor, yavaşça dönmeye devam ediyorsa gövdesindeki küçük ayar vidasıyla nötr noktası kalibre edilebilir.

Dijital ve analog servo

Analog servo kontrol sinyalini 50 Hz’de işler. Dijital servo içindeki mikrodenetleyici motoru çok daha yüksek frekansta sürer; daha hızlı tepki verir, daha kuvvetli tutar, ama daha çok akım çeker.

Metal ve plastik dişli

Plastik dişliler (SG90) ucuzdur ama darbe ve aşırı yükte kolayca sıyrılır. Yük taşıyan uygulamalarda metal dişli (MG90S, MG996R) tercih edin.

Yaygın Servo Modelleri

ModelTork (6V)DişliAğırlıkKullanım
SG90~1,8 kg·cmPlastik9 gHafif işler, sensör tarama
MG90S~2,2 kg·cmMetal13 gSG90’ın dayanıklı hali
MG996R~11 kg·cmMetal55 gRobot kolu, direksiyon
DS3218~20 kg·cmMetal60 gAğır yük, RC araç

Besleme — En Sık Yapılan Hata

Servoyu Arduino’nun 5V pininden beslemeyin.

Arduino Uno’nun kart üzerindeki regülatörü sınırlı akım verir ve USB beslemesi de tipik olarak 500 mA ile sınırlıdır. Oysa:

  • Bir SG90 hareket sırasında ~200–700 mA çeker
  • Bir MG996R 2,5 A’e kadar çıkabilir
  • Stall durumunda bu değerler daha da yükselir

Sonuç: gerilim çöker, Arduino resetlenir, servo titrer.

Doğru bağlantı:

  • Servo VCC → harici 5–6 V besleme (pil paketi veya adaptör)
  • Servo GND → harici besleme GND ve Arduino GND (ortak toprak zorunlu)
  • Servo sinyal → Arduino dijital pini

Ortak GND olmadan servo hiç çalışmaz veya rastgele davranır; sinyal seviyesinin bir referansı olmaz.

Besleme hattına 470–1000 µF elektrolitik kondansatör eklemek ani akım çekişlerini yumuşatır ve titremeyi belirgin şekilde azaltır.

Titreme (Jitter) Sorunu

Servo hedefe ulaştıktan sonra hafifçe titriyorsa nedenleri şunlardır:

Yetersiz besleme. En yaygın neden. Harici besleme ve kondansatör ekleyin.

Sinyal gürültüsü. Uzun sinyal kablosu gürültü toplar. Kısaltın veya sinyal hattına 220 Ω seri direnç ekleyin.

Potansiyometre aşınması. Eski servolarda geri bildirim potansiyometresi yıpranır; servo doğru konumu bulamaz ve sürekli düzeltmeye çalışır.

Ölü bant dışında hedef. Servo, ulaşamayacağı bir açıya (mekanik sınırın ötesi) zorlanıyorsa sürekli iter. Bu durumda servo ısınır ve zarar görür. Hareket aralığını yazılımda sınırlayın:

int guvenliAci(int aci) { return constrain(aci, 10, 170); // uc noktalardan kacin }

Sürekli sinyal göndermek. Servo hedefe ulaştıktan sonra detach() ile sinyali kesmek titremeyi tamamen durdurur (ama servo tutma kuvvetini kaybeder):

servo.write(90); delay(500); // hareket tamamlansin servo.detach(); // sinyali kes, titreme dursun

Servo Kütüphanesi ve PWM Çakışması

Arduino’nun Servo kütüphanesi Timer1 donanımını kullanır. Bunun sonucu:

  • Arduino Uno’da pin 9 ve 10’daki analogWrite() çalışmaz — kütüphane dahil edildiği anda.
  • En fazla 12 servo kontrol edilebilir (Uno’da).

Servo kullanan bir projede LED parlaklığı veya motor hızı için 3, 5, 6 veya 11 numaralı pinleri tercih edin.

Daha fazla servo gerekiyorsa PCA9685 kullanın: I2C üzerinden 16 servo sürer, ayrı bir besleme girişi vardır ve Arduino’nun timer’larını hiç meşgul etmez.

Servo Ne Zaman Yanlış Seçimdir?

İhtiyaçServo uygun mu?
Belirli bir açıya gitmek✔ İdeal
Sürekli dönmek✘ (sürekli dönüşlü tip hariç)
Yüksek hız✘ Yavaştır
Yüksek torkSınırlı
Hassas ve tekrarlanabilir konum✘ Step motor daha iyi
Tam tur konum kontrolü✘ Step motor

Bir 3D yazıcının kafasını hareket ettirmek için servo değil step motor kullanılır: step motor tam tur boyunca konum kontrolü sağlar ve tekrarlanabilirliği çok daha yüksektir.

Özet

Servo motor, dahili potansiyometre geri bildirimiyle mili belirli bir açıya götürüp orada tutan kapalı çevrim motordur. 20 ms periyotlu PWM darbelerinin genişliğiyle kontrol edilir.

Bu derste şunları öğrendik:

  • Servonun içindeki dört parçayı ve kapalı çevrim mantığını
  • 1,0 / 1,5 / 2,0 ms darbe – açı ilişkisini
  • Servo kütüphanesi ile write() ve writeMicroseconds() kullanımını
  • Sürekli dönüşlü servonun neden farklı çalıştığını
  • Servoyu Arduino 5V’undan beslememek gerektiğini
  • Titreme (jitter) nedenlerini ve çözümlerini
  • Timer1 çakışması yüzünden pin 9–10’da PWM’in bozulduğunu