Arduino Servo Motor Kontrolü

Arduino Servo Motor Kontrolü

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ı

Arduino ve Potansiyometre ile Adım Adım Servo Motor Devre Şeması
Potansiyometre Arayüz Kablolama Ş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ı

Arduino Sweep Otomatik Servo Dondurme Devre Şeması
Sweep Devre Kablolama Ş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

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.