
Bu yazımızda Arduino kullanarak servo motor kontrolünü öğreneceğiz. Özellikle yeni başlayanlar için temel bilgilerden başlayarak bağlantı, kodlama ve çalışma mantığını detaylı şekilde ele alacağız.
Servo Motor Nedir?
Servo motorlar, belirli bir açıya hassas şekilde konumlanabilen motorlardır. İç yapılarında bir DC motor, dişli sistemi ve pozisyon geri bildirimi sağlayan potansiyometre bulunur. Bu sayede servo motorlar genellikle 0 ile 180 derece arasında hassas konum kontrolü sağlar. Robotik projeler, RC araçlar ve otomasyon sistemlerinde yaygın olarak kullanılır.

PWM Sinyali Mantığı
Servo motorlar PWM (Pulse Width Modulation) sinyali ile kontrol edilir. Ancak bu sinyal klasik PWM’den farklıdır. Servo motorlar yaklaşık 20 ms periyotlu sinyaller alır ve darbe genişliğine göre konum belirler. Yaklaşık 1 ms darbe 0 dereceyi, 1.5 ms darbe 90 dereceyi, 2 ms darbe ise 180 dereceyi ifade eder. Bu mantık servo kontrolünün temelini oluşturur.
Gerekli Malzemeler :
• Arduino UNO
• SG90 9G Mini Servo Motor
• 10K Potansiyometre
• Erkek-Erkek Jumper Kablolar
Bağlantı Şeması ve Pin Açıklamaları
Servo motorlar genellikle 3 kablodan oluşur:
- Kırmızı: VCC (5V)
- Kahverengi/Siyah: GND
- Sarı/Turuncu: Sinyal (PWM)
Harici Güç Kullanımı Gerekliliği
Servo motorlar ani akım çekişi yapabilir. Bu nedenle doğrudan Arduino’nun 5V pininden beslemek bazı durumlarda karta zarar verebilir veya reset atmasına neden olabilir. Özellikle birden fazla servo kullanıldığında harici güç kaynağı tercih edilmelidir. Bu durumda Arduino ve güç kaynağının GND uçları ortaklanmalıdır.
Potansiyometre ve Analog Okuma Mantığı
Potansiyometre bir gerilim bölücü olarak çalışır. Orta bacak (wiper), 0 ile 5V arasında değişen bir voltaj üretir. Arduino bu voltajı analog girişten okuyarak 0 ile 1023 arasında dijital değere çevirir. Bu değer daha sonra servo motor açısına dönüştürülür.
Yazımızın başında servo motorların torkundan ve besleme akımından bahsetmiştik. Bu uygulamada servo motorumuz herhangi bir yük altında çalışmadığından bunlar çok önemli değil. Fakat yine de kısaca bir göz atmakta fayda var.
Servo motorumuzu seçtiğimize göre Arduino UNO kartımız ile bağlantıları yapmaya geldi sıra. Bağlantıları aşağıdaki şemaya göre yapıyoruz. Burada dikkat edilmesi gereken servo motorumuzun turuncu kablosu yani sinyal ucu Arduino UNO kartımızın PWM pinlerinden birine bağlı olmalı. Bu pinlerin yanında ~ işareti bulunur. Biz 11. PWM pinine bağlamayı seçtik. Siz 3,5,6,9,10. pinlerinden herhangi birine bağlayabilirsiniz.

Bağlantıları eksiksiz tamamladıktan sonra kod kısmına geçiyoruz.
/*
Türkiye'nin en büyük elektronik komponent, malzeme, takım, geliştirme kartları, modülleri, robotik ürünleri ve Arduino - Raspberry Pi resmi satış adresi.
www.direnc.net
*/
#include <Servo.h> // Servo kutuphanesini projemize dahil ettik
Servo servo1; // Servomuzu tanımladık
int pot_giris = A0; // Potansiyometrenin çıkış pinini Arduino üzerindeki hangi analog giriş pinine bağladığımızı tanımladık
int pot_deger; // Analog okuma yaptığımız değerleri değişkene atadık
void setup() {
servo1.attach(11); // Servo Arduino kartımızın 11. Pinine tanımlı
}
void loop() {
pot_deger = analogRead(pot_giris); // Potansiyometredeki değerleri okuyoruz
pot_deger = map(pot_deger, 0, 1023, 0, 180); // Potansiyometredeki okunan değerleri 0 - 180 arasına oranlıyoruz
servo1.write(pot_deger); // Servo motora okunan değerleri gönderip, servo motorun hareketini sağlıyoruz
delay(15); // ufak bir gecikme ekleyerek servomuzun daha stabil çalışmasını sağlıyoruz
}
Kodu karta yükledikten sonra potansiyometreyi çevirip servo motoru hareket ettirebilirsiniz.
Arduino Kodu Açıklaması
attach() fonksiyonu servo motorun hangi pine bağlandığını belirtir. analogRead() potansiyometreden veri okur. map() fonksiyonu analog değeri servo açısına dönüştürür. write() ise servo motorun istenen açıya gitmesini sağlar.
Servo Kütüphanesi (Servo.h) Nedir?
Servo.h kütüphanesi, Arduino ile servo motor kontrolünü kolaylaştırır. PWM sinyalini otomatik olarak uygun forma çevirir ve kullanıcıya basit fonksiyonlar sunar. Bu sayede karmaşık zamanlama işlemleriyle uğraşmadan servo kontrolü yapılabilir.
delay() Kullanımı ve Servo Stabilitesi
Kodda kullanılan delay(15), servo motorun fiziksel olarak hareket etmesi için zaman tanır. Eğer bu gecikme olmazsa servo sürekli yeni komut alır ve titreme (jitter) oluşabilir. Bu nedenle küçük gecikmeler sistemin stabil çalışmasını sağlar.
Servo Motor Sınırları ve Dikkat Edilmesi Gerekenler
Servo motorlar genellikle 0-180 derece arasında çalışır ancak bazı modeller bu sınırları desteklemeyebilir. Ayrıca fiziksel engeller motorun zorlanmasına ve dişlilerin zarar görmesine neden olabilir. Bu yüzden servo kullanırken mekanik sınırlar dikkate alınmalıdır.
Direnc.net Blog sayfamızda sürekli olarak yeni içerikler paylaşmaya devam edeceğiz. Lütfen sormak istediğiniz soruları yorum olarak bize gönderin!





Servoyu PWM yerine Analog girişlerden birine taksak olur mu?
Merhaba. Servo motorlar dijital sinyaller ile çok daha kararlı çalışmaktadır. Analog girişler ile servo motordan istediğiniz başarılı çalaışmayı bulmanız zor maalesef. İyi çalışmalar dilerim.
Merhaba paylaşımlarınız için çok teşekkür ederim
Arduino ya 3 adet servo motor bağlantısı yapsak pwm ile sinyalleri artı ve eksi uçları arduinonun 5volt undan paralel olarak bağlasak karta yada motorlara zarar verirmiyiz acaba
Merhaba. Kullanacağınız servo motorların çekeceği akım değeri, Arduino kartının max. akım değerinin üzerinde olmaması gerekmektedir. 3 servo motorun güç girişini tek bir Arduino kartı üzerinden almanız uzun vadede problem olabilir. İyi çalışmalar dilerim.