Arduino ile Servo Motor Kontrolü Nasıl Yapılır?
Robotik dünyasında sadece ileri-geri sürekli dönen tekerlekler değil; belirli bir açıya milimetrik olarak giden ve o açıda sabit durabilen hassas motorlar gerekir. Robot kolların eklemleri, otopark bariyerleri, kamera yönlendirme sistemleri ve uzaktan kumandalı uçakların kanatçıkları hep bu mekanizmayla hareket eder. Bu görevi yerine getiren en popüler motor türü Servo Motordur.
Bu kapsamlı rehberde, yeni başlayanların en çok kullandığı TowerPro SG90 9g Mikro Servo Motorun çalışma mantığını, kablo renklerini, harici güç bağlantılarını, `Servo.h` kütüphanesini ve hem otomatik tarama hem de potansiyometre ile elle kontrol kodlarını inceliyoruz.
1. Servo Motor Nedir ve Standart DC Motordan Farkı Nedir?
Standart bir DC motora elektrik verdiğinizde son hızla sürekli döner; elektriği kestiğinizde ise ataletle bir süre sonra durur. Motorun tam olarak hangi açıda durduğunu bilemezsiniz.
Servo Motor ise içerisinde 4 temel yapıyı barındıran kapalı çevrimli akıllı bir pakettir:
Standart hobi servoları (SG90 gibi) genellikle 0 derece ile 180 derece arasında yarım tur hareket kabiliyetine sahiptir.
2. SG90 Servo Motor Kablo Renkleri ve Pinout
| Kablo Rengi | Görevi | Arduino Bağlantısı |
|---|---|---|
| Kahverengi (veya Siyah) | Toprak (GND / -) | Arduino GND pini |
| Kırmızı | Besleme Gerilimi (+5V) | Arduino 5V pini (veya Harici Pil +) |
| Turuncu (veya Sarı/Beyaz) | PWM Kontrol Sinyali | Arduino Dijital Pin (Örn: Pin 9) |
3. Çok Önemli Güç Uyarısı: Servolar Neden Harici Beslenmeli?
Tek bir SG90 servo motor boşta çalışırken 100-200 mA akım çeker ve Arduino'nun 5V pini bunu rahatlıkla karşılar. Ancak:
4. 1. Uygulama: Otomatik Açı Taraması (Sweep Kodu)
/* * RobotKodla.com - Servo Motor Kontrolü * Proje: Otomatik Açı Taraması (Sweep) */ #include <Servo.h> Servo motorum; void setup() { motorum.attach(9);
} void loop() { // 0 dereceden 180 dereceye 1'er derece artırarak git for (int aci = 0; aci <= 180; aci += 1) { motorum.write(aci); delay(15); } // 180 dereceden 0 dereceye geri dön for (int aci = 180; aci >= 0; aci -= 1) { motorum.write(aci); delay(15); }
}5. 2. Uygulama: Potansiyometre ile Manuel Açı Kontrolü
/* * Proje: Potansiyometre ile Servo Kontrolü */ #include <Servo.h> Servo motorum;
const int potPin = A0;
int potDeger;
int aci; void setup() { motorum.attach(9);
} void loop() { potDeger = analogRead(potPin); aci = map(potDeger, 0, 1023, 0, 180); motorum.write(aci); delay(15);
}6. Servo Motorlarda Titreme (Jitter) Sorunu ve Çözümleri
7. Sürekli Dönen (Continuous 360 Derece) Servo Motorlar
Standart servolar 0-180 derece arasında dönerken, piyasada 360 Derece Sürekli Dönen Servolar da bulunur:
8. Servo Motorlarda Titreme (Jitter) Neden Olur ve Nasıl Önlenir?
Servo motor projelerinde motor belirli bir açıda dururken vızıldaması veya titremesi çok sık karşılaşılan bir sorundur:
9. Sürekli Dönen (Continuous 360 Derece) Servo Motorlar
Standart servolar 0-180 derece arasında dönerken, piyasada 360 Derece Sürekli Dönen Servolar da bulunur:
10. Kapsamlı Sıkça Sorulan Sorular (SSS)
Servo motor neden durduğu yerde sürekli ses çıkarır ve ısınır?
Eğer servo kolu mekanik olarak bir engele takılmışsa ve gitmek istediği açıya (örneğin 180 dereceye) tam ulaşamıyorsa, dahili kontrol devresi sürekli motoru zorlar ve aşırı akım çeker. Bu durum motorun yanmasına yol açabilir. Çözüm, koddaki hedef açıyı mekanik sınırın 5-10 derece gerisine çekmektir.
Bir Arduino ile kaç adet servo motor kontrol edilebilir?
Standart `Servo.h` kütüphanesi Arduino Uno üzerinde 12 adede kadar, Arduino Mega üzerinde ise 48 adede kadar servo motoru kontrol edebilir. Ancak birden fazla servo motor bağlandığında kesinlikle harici bir 5V güç kaynağı kullanılmalı ve toprak hatları (GND) birleştirilmelidir.
Servonun dönüş hızını nasıl yavaşlatabilirim?
Doğrudan `motor.write(180);` dediğinizde motor maksimum hızla döner. Hareketi sinematik veya yumuşak yapmak için bir `for` döngüsü içinde açıyı 1'er derece artırıp her adım arasına `delay(20);` gibi küçük gecikmeler koyabilirsiniz.
Sonuç
Servo motorlar; akıllı bariyerlerden robot kollara, otomatik yemleme kaplarından güneş takip panellerine kadar mekanik hareket içeren her projenin omurgasıdır. Sitemizin [Projeler](/projeler) sekmesindeki "Akıllı Çöp Kutusu" ve "4 Eksenli Robot Kol" uygulamalarını inceleyerek servo motor bilginizi ileri seviyeye taşıyabilirsiniz!