Bu rehberimizde, Arduino servo motor kontrolünü, çalışma mantığını, PWM (Darbe Genişlik Modülasyonu) sinyal zamanlamasını, resmi Arduino Servo Kütüphanesi referans sayfasına göre donanımsal kütüphane sınırlarını ve Arduino ile hem potansiyometre kontrollü hem de otomatik süpürme (sweep) devresini tüm teknik detaylarıyla inceleyeceğiz.
Robotik kollardan insansız hava araçlarının yön kontrol yüzeylerine (kanatçıklar), akıllı kilit mekanizmalarından RC (hobi) model araç yönlendirmelerine kadar hassas açısal konum kontrolü gerektiren her yerde servo motorlar kullanılır. Standart DC motorların aksine, üzerlerine uygulanan sinyale bağlı olarak şaftını belirli bir açıda (genellikle 0° – 180° arası) sabit tutabilen bu kapalı döngü (closed-loop) sistemlerin kontrolü, gömülü sistemlerin en temel alanlarındandır.
Servo motorların hassas kontrolü için iki temel gömülü sistem uygulaması gerçekleştireceğiz. İlk örneğimizde, Arduino’ya bağlı bir potansiyometre nedir ve nasıl çalışır rehberimizden yararlanarak elde edeceğimiz analog gerilim verileriyle servo şaftının konumunu gerçek zamanlı değiştireceğiz. İkinci örneğimizde ise servo şaftını otomatik olarak 0° ila 180° derece arasında sürekli ileri-geri döndüren bir süpürme (sweep) algoritması kuracağız. Kütüphanenin alt seviye C++ sınıflarını incelemek isterseniz resmi Arduino Servo Kütüphanesi GitHub deposunu da ziyaret edebilirsiniz.
Arduino Servo Motor Kontrolü: Hobi Tipi Servoların Donanımsal Yapısı ve PWM Zamanlama Parametreleri
Hobi tipi servo motorların (örneğin SG90 veya MG90S) gövdesi içerisinde bir DC motor, dişli kutusu, şaft konumunu geri bildiren bir potansiyometre ve dahili bir kontrol kartı yer alır. Çoğu servo motor standart 3 pinli kablo bağlantısına sahiptir:
- VCC (Güç Kablosu – Kırmızı): Motorun besleme hattıdır, Arduino kartındaki 5V pinine bağlanır.
- GND (Toprak Kablosu – Siyah veya Kahverengi): Şase hattıdır, Arduino kartındaki GND pinine bağlanır.
- PWM (Sinyal Kablosu – Sarı, Turuncu veya Beyaz): Konum bilgisini taşıyan kontrol pimidir. Arduino üzerindeki PWM çıkışlarından (örneğin Pin 9) sürülür. Kontrol sinyalinin mantığını Arduino PWM (Sinyal Genişlik Modülasyonu) çalışma prensipleri kılavuzumuzdan inceleyebilirsiniz.
Servo Kontrolünde Pulse Width (Darbe Genişliği) Zamanlama Standartları: Hobi servoları genellikle 50 Hz frekansta (20 ms periyoda sahip) bir PWM sinyali ile sürülür. Bu 20 ms’lik periyot içerisinde gönderilen mantıksal yüksek (Logic HIGH) darbesinin genişliği, servo şaftının açısını belirler:
- 1.0 ms (1000 µs) Darbe Genişliği: Servo şaftını tam olarak 0 derece konumuna getirir.
- 1.5 ms (1500 µs) Darbe Genişliği: Servo şaftını tam merkez olan 90 derece konumuna getirir.
- 2.0 ms (2000 µs) Darbe Genişliği: Servo şaftını tam olarak 180 derece konumuna getirir.
Arduino Servo kütüphanesi, bu mikrosaniyeler seviyesindeki hassas darbe zamanlamasını arka planda zamanlayıcı (Timer1) kesmelerini kullanarak donanımsal olarak otomatik yönetir; böylece geliştirici sadece servo.write(acik) komutuyla derece cinsinden kontrol sağlayabilir.
1. Uygulama: Potansiyometre ile Hassas Açısal Konum Kontrolü
Bu uygulamada, potansiyometrenin analog milini çevirdiğimizde elde edilen $0-1023$ analog voltaj değerini lineer olarak $0-180$ derece aralığına haritalandırarak servonun açısını kontrol edeceğiz.
Gerekli Malzemeler
- Arduino Geliştirme Kartı
- SG90 veya uyumlu bir Servo Motor
- 10 kΩ Potansiyometre
- Jumper Kablolar ve Breadboard
Potansiyometre ile Servo Kontrol Arduino Kodu
Devre Bağlantı Şeması

2. Uygulama: Servo Sweep (Otomatik Süpürme) Devresi
Bu devrede herhangi bir harici analog sensör kullanılmaz. Yazılım, servo motorun şaftını 0 dereceden 180 dereceye kadar 1 derecelik adımlarla yumuşak bir şekilde döndürür ve ardından tekrar geriye doğru süpürme işlemi gerçekleştirir. Mekanik tarama ve radar projelerinin temel yapısıdır.
Gerekli Malzemeler
- Arduino Geliştirme Kartı
- Servo Motor
- Jumper Kablolar
Servo Sweep Arduino Kodu
Devre Şeması

Mühendislik Notu: Çoğu AVR tabanlı standart Arduino kartında (örneğin Uno ve Nano), donanımsal zamanlayıcı kanalları (Timer1) kullanılarak tek bir kütüphane örneğinde **12 adede kadar** servo motor bağımsız olarak sürülebilir. Arduino Mega gibi daha büyük mikrodenetleyici kartlarında bu sınır **48 adet** servoya kadar çıkmaktadır.
Diğer Servo Motor ve Gömülü Kontrol İçerikleri
- 555 Zamanlayıcı Entegresi ile Servo Motor Kontrolü ve Test Cihazı projemizden yararlanarak tamamen analog bir test cihazı tasarlayabilirsiniz.
- Servo Motor Nedir? Çeşitleri ve Çalışma Yöntemleri makalemizden servoların iç mekanik dişli yapısını ve motor tiplerini inceleyebilirsiniz.
- mBlock ile Arduino ve Servo Motor Uygulaması görsel blok kodlama rehberimizi inceleyebilirsiniz.
- mBlock ile Joystick Kontrollü Servo Motor Uygulaması detaylarını görebilirsiniz.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.

