Bu yazımızda hoby olarak kullanılan Servo Motor Kontrolü uygulamasından bahsedeceğiz ve arduino ile bir uygulama gerçekleştireceğiz. Piyasada satılan robotların yapılışının ne kadar kolay olduğunu göreceksiniz. Hoby servo motorlar dışında endüstriyel servo motorlarda vardır. Bunların çalışma mantıkları arasında bir fark yoktur sadece daha yüksek voltaj, tork ve hassasiyetlere sahiptir.
Yukarıdaki resimde hoby servo motoru içinde asında çok ufak bir dc motor vardır. Dolayısıyla servo motor değil servo sistemli dc motor demek daha doğru olur ama halk dilinde kısaltmaları çok sevdiğimiz için servo motor olarak geçer. DC motor bir redüktöre bağlıdır bu redüktör dc motorun hızını düşürüp torkunu arttırır. Çıkış şaftında bulunan ufak bir trimpot(rotary resistor-açısal direnç) açı değiştinde içindeki elektronik devreye geri besleme yapmaktadır. Bu sayede absolute encoder görevi görererek hassas konumlama yapması için çok önamelidir.
Hoby servo motorların 3 pini bulunur. Besleme, Toprak ve Sinyal. Sinyal pinine gönderdiğimiz pwm sinyali ile konum kontrolü yapabilmekteyiz. Yukarıdaki diagramda görülen pwm sinyalinin duty cycle ve periyod sürelerine göre servonun hangi konumlarda olacağını görmekteyiz. Endüstriyel servolarda ise encoder kablosu vardır. Başka bir yazıda değiniriz.
Servo Motor Pin Bağlantıları
Genelde 3 pin olup çeşitli renklerde olabilir. Ama fonksiyon sıralaması hepsinde aynı olur. Ters bağlamanız durumunda hem cihazınız hem de servo motorunuz zarar görebilir. Aşağıdaki çeşitli firmaların çeşitli tiplerdeki soketlerine ait renk ve bağlantı şekillerini görmektesiniz.
Şimdi gelelim Arduino ile servo motorumuzu kontrol etmeye. Arduino Ide’ nin kurarken kendi örnekler sekmesinde 2 çeşit servo kontrol uygulaması vardır. Sweep ve Knob. Sweep tarama yapıyor, Knob ise potansiyometreden gelen veriler ile servoyu kontrol etmemize yarıyor. File>Examples(Örnekler)>Servo>Sweep uygulamasını açın.
Arduino Servo Motor Bağlantısı
Aşağıdaki gibi Servo motoru Arduino’ ya bağlayın. Burada dikkat etmeniz gereken servonun beslemesi. Eğer Arduino’yu usb den besliyorsanız usb beslemeniz hem arduino hem de servo motor için yeterli olmayabilir. Dolayısıyla dış kaynaktan besleme verip servo motorunuzu 5V ile beslemeniz gerekebilir.
Aşağıdaki kendi uygulmamda +12VDC ile breadboard üzerinde bulunan power modülünü besledim ve oradan çıkan +5VDC ile servo motor beslemesini yaptım. Motorunuz ufak ise Arduino kaldırabilir ama büyük motorlar için harici besleme yapmak zorunda kalabilirsiniz.
Arduino Servo Motor Kontrolü Programı
Aşağıdaki programı file>örnekler sekmesinden direk açabilir ve servonuzu hangi pine ve hangi boardu kullandıysanız ayarlarını yaparak yükleyebilir ve servonun çalıştığını anlamak için ucuna bir tel bağlayabilirsiniz.
// www.kaizen40.com /* Sweep by BARRAGAN <http://barraganstudio.com> This example code is in the public domain. modified 8 Nov 2013 by Scott Fitzgerald http://www.arduino.cc/en/Tutorial/Sweep */ #include <Servo.h> Servo myservo; // 12 adet servo motora kadar desteklenebilir int pos = 0; // servo motor pozisyonu void setup() { myservo.attach(9); // servonun bağlı olduğu pin } void loop() { // 0' dan 180 dereceye kadar servoyu döndür for (pos = 0; pos <= 180; pos += 1) { myservo.write(pos); // servoya gideceği pozisyonu söyle delay(15); // 15 ms bekle } // 180' den 0 dereceye kadar servoyu döndür for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } }
Arduino Servo Motor Kontrolü Uygulama Videosu
0 yorum