Servo Motor Nedir?
Servo, mekanizmalardaki açısal-doğrusal pozisyon, hız ve ivme kontrolünü hatasız bir şekilde yapan tahrik sistemi olarak tanımlanır. Servo motor, sağlanan akım ve voltaja bağlı olarak tork ve hız üreten bir elektromekanik cihazdır. Yüksek tork üretme kapasitesi onları ağır yüklerin hassas bir şekilde hareket ettirilmesi gereken uygulamalar için ideal kılar. Hassas konum kontrolü ve hız ayarı gerektiren uygulamalarda kullanılan özel bir motor türüdür. Servolar, istenilen pozisyonu alması ve yeni bir komut gelmediği sürece bulunduğu pozisyonu değiştirmemesi amacıyla tasarlanmıştır.
Servo motor, bir geri besleme sistemi ile çalışır ve genellikle bir sürücü veya kontrol devresi, bir motor, bir geri bildirim sensöründen oluşur. Bu bileşenler, servo motorun istenen konuma doğru hareket etmesini ve belirli bir hızda çalışmasını sağlar. Geri besleme cihazı; akım, hız veya pozisyon gibi bilgileri servo sürücüye sunar. Bu sürücü de komut verilen parametrelere göre motor eylemini gerçekleştirir.
Servo motor, birçok farklı alanda kullanılır. Örneğin, robotik uygulamalarda, robotun kollarını, bacaklarını veya diğer hareketli parçalarını hassas bir şekilde kontrol etmek için kullanılır. Model uçaklar, drone’lar ve diğer uzaktan kumandalı araçlarda da servo motorlar, yön ve hız kontrolü için kritik bir rol oynar. Endüstriyel otomasyonda, CNC makinelerinde, 3D yazıcılarda ve çeşitli otomatik sistemlerde servo motorlar yaygın olarak kullanılır.
Servo Motorun Yapısı
Motor; AC veya DC, fırçalı veya fırçasız, döner veya lineer, çekirdekli(mıknatıslı) veya çekirdeksiz(sargılı) veya herhangi bir çeşitte olabilir.
Geri bildirim cihazı; bir potansiyometre, Hall etkili cihaz, devir sayacı, çözücü, kodlayıcı, lineer transdüser veya uygun olan herhangi bir sensör olabilir.
Sürücü devre; motora güç veren ve servo motorun komut verildiği üzere çalıştığını doğrulamak için geribildirim verileri ile komut referansını karşılaştıran kontrol elektroniğidir. Yani aldığı geri bildirime göre, çıkışı ayarlayabilen ve böylece motorun konumunu, hızını ve genel hareketini kontrol etmede benzersiz bir doğruluk elde eden otomatik bir kontrol sistemini temsil eder.
Dişli sistemi, motorun torkunu artırmakta ve servo mili daha fazla yük kaldırabilmektedir. Servoların kaldırabileceği yük tork gücü üzerinden ifade edilir. Servo motorların torku, motor milinin tahrik edebileceği maksimum yük olarak tarif edilir. Bu işlem sırasında servonun dönüş hızı da yavaşlamış olur. Kullanılan dişli sistemine göre servo motorların kaldırabileceği yük değişir.
Klasik(RC) Servo Motorun Çalışma Prensibi

Servo motorların içerisinde motorun hareketini sağlayan bir DC motor bulunmaktadır. Bu motorun dışında bir dişli mekanizması, potansiyometre ve bir motor sürücü devresi bulunmaktadır. Potansiyometre, motor milinin dönüş miktarını ölçmektedir. Servo içerisindeki DC motor hareket ettikçe potansiyometre döner ve kontrol devresi motorun bulunduğu pozisyon ile istenilen pozisyonu karşılaştırarak motor sürme işlemi yapar. Yani, servolar diğer motorlar gibi harici bir motor sürücüye ihtiyaç duymadan çalışmaktadırlar. Genellikle çalışma açıları 0 - 180 derece arasında ve 1 derece hassasiyete sahiptir. Fakat 360 dereceye kadar çalışma açısına sahip veya sürekli dönen özel amaçlı servo motorlar da vardır. Servolar genellikle 4.8-6V gerilim ile çalışmaktadırlar. 7.4V ve daha yüksek gerilimle çalışan servolar da bulunmaktadır.
Endüstriyel Servo Motorların Çalışma Prensibi

Basit bir endüstriyel servo motor, hız ile orantılı çıkış voltajı sağlayan bir integral devir ölçer ve bir DC motordan oluşur. Hızın ne kadar olacağı kontrol devresinde ayarlanmıştır. Kontrol devresi, devir ölçerin geri bildirim voltajını alır ve gelen voltaja bağlı olarak motora gereken voltajı ve akımı verir.
Aşağıdaki gibi daha sofistike(özel, karmaşık) bir servo sistem hassas hareket kontrolü sağlamak amacıyla hassas geri besleme elemanları kullanır. Bunlar akım, hız ve pozisyon çevrimlerinden oluşur. Bu akım, hız ve pozisyon sensörlerinden gelen bilgilere göre sürücü devresi servo motoru daha hassas bir şekilde kontrol edebilir.

Konumuza klasik(RC) servo motorlar üzerinden devam edelim.
Servo Motor Kontrolü

Servo motorun üç adet bağlantı kablosu bulunmaktadır. Bu kablolar genellikle kırmızı, turuncu (bazen sarı) ve siyah (bazen kahverengi) olmaktadır. Bu renkler kabloların görevini göstermektedir. Kırmızı renk besleme (genellikle 5 volt) bağlantısını, siyah veya kahverengi renk de toprak bağlantısını göstermektedir. Geriye kalan turuncu kablo ise mikro denetleyiciden gönderilecek sinyal için kullanılır.
Servo motorlar PWM (Sinyal Genişlik Modülasyonu) sinyal ile çalışmaktadırlar. Bu PWM sinyaller bir mikrokontrolcüden veya uzaktan kumandadan sağlanabilmektedir. Servo, her 20 ms içerisinde bir pals değeri okumaktadır. Pals uzunluğu motorun dönüşünü belirlemektedir. Örnek olarak 1.5 ms’lik bir pals, motorun 90 derece pozisyonunu almasını sağlayacaktır (Nötr Pozisyon). Servolar, hareket etmeleri için bir komut aldıklarında önce istenilen pozisyona hareket ederler, sonrasında ise o pozisyonda kalırlar. Servolar bulundukları pozisyonu korurken kendilerine dışarıdan bir güç uygulandığında bu güce direnirler. Bulundukları konumu sonsuza kadar koruyamazlar. Pozisyonlarını koruyabilmeleri için palsin tekrar edilmesi gerekebilir. Hareket etmeleri için gereken pals genişliklerinin minimumları ve maksimumları vardır ve bu değerler değişkendir. Fakat genellikle minimum pals genişliği 0,5 ms, maksimum pals genişliği ise 2,5 ms’dir. Servo motorun kontrolü için ayarlanmış bu pals genişlikleri dışındaki PWM sinyalleri servo motoru düzgün çalıştıramaz.
Aşağıdaki şekilde genellikle servo motorların sahip oldukları PWM değerleri vardır. 0,5 ms duty cycle değerinde 0°, 2,5 ms değerinde ise 180° pozisyonunu almış olur(Daha önce anlatıldığı gibi bu limit bazen 360° de olabilmektedir).

Böylelikle servo motor, pals genişlikleri 0,5ms ile 2,5ms arasında değiştirilerek 0 ile 180 derece arasında bir konuma ayarlanabilir.
Servo Oransal Kontrol
Motora uygulanan güç hareket etme miktarıyla orantılıdır. Eğer mil büyük bir açı için hareket edecekse motor daha hızlı, mil küçük bir açı için hareket edecekse motor daha yavaş döner. Buna oransal kontrol denir.
Servo Motor Etiket Değeri Anlamları
0,15 sn / 60º : 0,15 sn’de 60 derece dönebilir anlamına gelmektedir.
40 kg / cm : Motor miline 1 cm uzunluğunda bir aparat takıldığında 40 kg yük kaldırabilir anlamına gelir. Bu da torkun = 40 x 1 = 40 kg/cm olduğu anlamına gelir. Eğer 2 cm uzunluğunda bir aparat takılırsa o zaman; F x 2 = 40 olacağı için F = 2 yani 20 kg kaldırabilir anlamına gelir.
Elektronik Yapılarına Göre Servo Motor Çeşitleri
Frekansı 50 Hz (PWM periyodu 20 ms) olan servo motorlara analog, frekansı 300 Hz (PWM periyodu 3,33 ms) olan servo motorlara dijital servo motorlar denir.
Analog servo motorlar; dinlenme modunda bulunurken gelen komuta hızlı reaksiyon veremez. Tabi ki torktaki mevcut bu gecikme gelişmiş uygulamalar için pek de uygun değildir.
Dijital servolar; analog servolara göre daha yüksek frekansta çalıştıkları için komutlara daha hızlı ve net tepki verirler. Hızları ve torkları daha yüksektir. Analog servolara göre yumuşak bir hızlanma özelliğine sahiptir. Tek dezavantajları yüksek enerji harcamalarıdır.
Arduino İle Servo Motor Kontrol
Servo motor kontrolü için Arduino’daki PWM çıkış pinlerini kullanmamız gerekiyor. PWM pin sayısı Arduino’nun türüne göre değişmektedir. Bu pinlerin yanında dalga (~) işareti bulunmaktadır. Arduino Uno’da 3, 5, 6, 9, 10, 11 nolu pinler PWM pinleridir. Servo motorun enerjisini Arduino üzerinden alacaksak, motoru fazla zorlayıp yüksek akım çekmesine izin vermemeliyiz. Arduino pinleri belli bir miktar akım verebildiği için, motorun yüksek akım çekmesi Arduino’ya zarar verebilir.
Servo motor kontrolü için öncelikle #include <Servo.h> kütüphanesini projemize eklemeliyiz. Servo kütüphanesi Timer1 zamanlayıcısını kullanmaktadır.
Servo servo_motor;
Servo motorun kütüphanesini çağırabilmek için değişkenleri tanımladığımız kısımda ismi “servo_motor” olan bir servo nesnesi oluşturduk.
servo_motor.attach(pin_no);
Yukarıda tanımladığımız servo nesnesini kullanarak, Arduino’nun, servo motoru kontrol edecek pini tanımlandı. Servo motorun kontrol pini bu pine bağlanır.
Örnek: servo_motor.attach(9); //servonun kontrol pini Arduino’nun 9 nolu pinine takıldı.
servo_motor.write(derece);
Yukarıda tanımladığımız servo nesnesini kullanarak, servo motorun kaç derece döneceğini belirler. Yani servo motora açı değerini gönderir. Bu komuttan delay(sure) komutu göndererek servo motorun dönüşünü tamamlamasına izin vermeliyiz. Bekleme süresinin ne kadar olacağını servo motorun etiket bilgilerinden öğrenebiliriz.
Örnek: servo_motor.write(90); //servo motor 90 derece dönsün.
Arduino servo motor uygulamalarımızda servo motorun enerjisini Arduino pinleri üzerinden aldığımız için Arduino’yu 12V harici bir güç kaynağı ile beslemek önem arz etmektedir.
Aslında olması gereken servo motorun harici güç kaynağı ile beslenmesidir ama uygulamalarımızda kullandığımız servo motor düşük güçlü olduğu için enerjiyi Arduino pinlerinden aldık. Arduino pinlerinin verebileceği akım değeri maksimum 40mA, tavsiye edilen 20mA’dir.