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 Motor**dur.
Bu kapsamlı rehberde, yeni başlayanların en çok kullandığı **TowerPro SG90 9g Mikro Servo Motor**un ç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:
1. **Küçük bir DC Motor:** Hareketi üreten minyatür motor.
2. **Dişli Kutusu (Redüktör):** Motorun yüksek devrini düşürerek torku (döndürme gücünü) onlarca kat artırır.
3. **Potansiyometre (Konum Geribildirimi):** Çıkış şaftının o an kaçıncı derecede durduğunu sürekli ölçer.
4. **Dahili Kontrol Devresi:** Arduino'dan gelen PWM sinyali ile potansiyometrenin ölçtüğü açıyı karşılaştırır; motor istenen dereceye ulaştığı anda pozisyonunu kilitler.
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
1. **Filtreleme Kondansatörü Eklenmesi:** Servo motorun besleme hattına paralel bağlanacak **100µF - 470µF elektrolitik kondansatör**, motorun ani hareketlerinde akım dalgalanmalarını sönümleyerek titremeyi tamamen keser.
2. **Kodu Tamamlayınca Servoyu Serbest Bırakma (Detach):** Sürekli yük altında kalması gerekmeyen durumlarda `motorum.detach();` komutu ile PWM sinyali kesilerek motor dinlenmeye alınabilir.
3. **Dişli Malzemesi Seçimi:** Ağır bir robot kol yapacaksanız plastik dişlili SG90 yerine pirinç dişlili **MG90S** modelini tercih edin.
---
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:
1. **Voltaj Dalgalanmaları:** Motor hareket ettiğinde hattan ani akım çeker ve 5V hattında geçici voltaj düşüşleri olur. Servo besleme bacakları arasına paralel bağlanacak **100µF ile 470µF elektrolitik bir kondansatör** bu dalgalanmaları emerek titremeyi tamamen yok eder.
2. **Kodu Tamamlayınca Servoyu Serbest Bırakma (Detach):** Sürekli yük altında durması gerekmeyen bir mekanizmada (örneğin kapağı açıp kapatan çöp kutusu), işlem bittikten sonra `motorum.detach();` komutu ile PWM sinyali kesilebilir; böylece motor aşırı ısınmaz ve enerji harcamaz.
3. **Plastik vs Metal Dişli:** SG90 servolar hafif projeler içindir. Eğer ağır bir robot kol yapıyorsanız, aynı boyutta pirinç dişlilere sahip **MG90S** veya yüksek torklu **MG996R** metal dişlili servoları tercih etmelisiniz.
---
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!