Standart servo motorlar, 0 ile 180 derece arasında (yarım tur) dönebilen ve 1 derece hassasiyete sahip motorlardır.
Servo motorun içinde bir DC motor ve motor miline bağlı dişli sistemi bulunur. Motorun birkaç tur dönüşü, dişli sistemi ile çıkış milindeki 1 derecelik harekete dönüştürülür. Servolarda kullanılan dişli sisteminin plastik veya metal olması servonun dayanıklılığı hakkında fikir verebilir.
Projede kullanılacak servoyu seçerken, servonun 4 önemli özelliğini dikkate almak gerekir;
- Hız: Uygulanan giriş gerilimine göre, servo milinin 0 dereceden 60 dereceye kaç milisaniyede döndüğünü belirtir. Örneğin; 6V gerilimde 0-60 dereceye 0,23 saniye gibi.
- Tork: Servonun milindeki dönme gücünü ifade eder. Servolarda tork ölçü birimi genellikle oz-in veya kg-cm olarak verilir. Örneğin 6V giriş geriliminde tork değeri 3,2kg/cm olan bir servo motor; miline bağlanmış 1cm uzunluğunda bir çubukla en fazla 3,2 kg kaldırabilir.
- Ağırlık: Servonun toplam ağırlığını ifade eder.
- Boyutlar: Servonun, en-boy-yükseklik değerlerini ifade eder. Servolar boyutlarına ve ağırlıklarına göre mini, mikro vb. şekilde sınıflandırılırlar.
Servo motorun 3 adet bağlantı kablosu bulunur. Bu kablolar genellikle sırasıyla Siyah-Kırmızı-Beyaz veya Kahverengi-Kırmızı-Turuncu renklerdedir. Siyah ve kahverengi renkler GND’ ye, kırmızı renk voltaj kaynağına, sarı ve beyaz renk kablolar ise servonun konumlanma bilgilerini alacağı I/O portuna bağlanır.
Malzemeler
- 1 adet Arduino
- 1 adet servo
Bağlantı şeması
Arduino UNO’ nun 3,5,6,9,10 ve 11 dijital pinlerinde ~ işareti bulunur. Bu pinler PWM pinleridir. PWM; Pulse With Modulation yani Darbe Genişliği Modülasyonu kelimelerinin kısaltmasıdır. Mikrodenetleyici ile çalışırken bir analog sinyal çıkışı almak mümkün olmadığı için, dijital sinyalin analog sinyal gibi modüle edilmesi gerekir. Yani 1 ve 0 çıkışı alınabilen bir dijital pinden 1 ve 0 arasında bir değer alınmak istenirse, sinyal bir süre 1 ve bir süre 0 verecek şekilde darbelere (Pulse width) bölünür. Bir periyotta okunan darbelerin uzunluğuna göre çıkış 0 ile 1 arasında (Duty cycle) bir değer olarak kabul edilir. Aşağıdaki şekilde mor renkte gösterilen örnek sinyal bir analog sinyal, siyah renkte gösterilen sinyal ise onun PWM modülasyonudur.
Bu derste yalnız bir servo motor kullanıldığı için, servonun voltajı Arduino üzerinden verilmiştir. Ancak yüksek torklu servo veya birden fazla servo kullanılıyorsa servolar ekstra bir güç kaynağı ile beslenmelidir. Ayrıca servo, zorlanması durumunda daha yüksek akım çekecektir. Bu nedenle Arduino kartından servoyu beslemek mikrodenetleyiciye zarar verebilir.
Kaynak kod
#include<Servo.h> Servo S1; // S1 adında bir servo nesnesi oluştur void setup() { S1.attach(5); // S1 adındaki servo nesnesini Arduinonun 5 numaralı IO pinine bağla S1.write(0); // Servo milini 0 dereceye getir } void loop() { S1.write(60); // Servo milini 60 dereceye getir delay(1000); // Bir saniye bekle S1.write(120); // Servo milini 120 dereceye getir delay(1000); // Bir saniye bekle S1.write(180); // Servo milini 180 dereceye getir delay(1000); // Bir saniye bekle S1.write(0); // Servo milini 0 dereceye getir delay(1000); // Bir saniye bekle }
İlk satırda #include<Servo.h>
komutu ile servonun çalışması için gerekli olan kütüphane programa eklenmiştir. Kütüphane dosyasını aşağıdaki linkten indirip bilgisayarınızın Belgelerim>Arduino>libraries klasörüne (zipli dosyadan çıkartarak) yükleyebilirsiniz.