Arduino Servo Motor Kullanımı ve Servo Kütüphanesi

Merhaba arkadaşlar,
Mobilhanem.com için hazırladığımız Arduino derslerine Servo Motor Kullanımı ile devam ediyoruz. Bu dersimizde Servo Motorları ve Arduino ile Servo Motorları kontrol edebileceğimiz Servo kütüphanesini inceleyeceğiz.

Arduino ile Servo Motor Kullanımı

Arduino ile Servo Motor kullanımı için Arduino’nun Servo.h kütüphanesini yararlanılabilmektedir. Servo kütüphanesini kullanmak bizler için kolaylıklar sağlamaktadır ancak bu bir gereklilik değildir. Servo Motorların kontrolü için ihtiyaç duyulan sinyali Arduino üzerinden bulunan PWM destekli pinler kullanılarakta üretebilir ve Servo Motor kontrolünü sağlayabilir. Biz bu dersimizde Servo kütüphanesini kullanarak nasıl Servo motorlarımızı kontrol edebileceğimizi inceleyeceğiz.

Dikkat

Servo Kütüphanesini kullanırken dikkat etmemiz gereken bazı durumlar vardır. Bu durumlardan ilki Arduino 0016 ve daha eski sürümlerde, Servo kütüphanesi sadece 9 ve 10 numaralı pinleri desteklemektedir. Eğer Arduino 0016 veya daha eski bir sürüm kullanmıyorsak Servo motorumuzu her hangi bir PWM pimine bağlayarak kullanabiliriz. Dikkat etmemiz gereken ikinci durum ise Servo kütüphanesini kullanırken 9 ve 10 numaralı PWM pinlerin analogWrite özelliğinin bir Servo bağlı olsun yada olmasın devre dışı kalmasıdır. Bu nedenle Servo kütüphanesi ile çalışırken bu durumu dikkate alarak mümkünse 9 ve 10 numaralı pinlere öncelik vermemizde fayda vardır.

Arduino Servo Motor Bağlantıları

"Arduino

Servo motorların güç, toprak ve kontrol sinyali için üç bağlantı noktası bulunmaktadır. Bu bağlantılar için kullanılan kabloların renkleri çeşitlilik gösterebililmektedir. Topraklama kablosu siyah veya kahverengi, güç kablosu kırmızı, kontrol sinyali için kullanılan kablo ise sarı, turuncu veya beyaz olabilmektedir.

Kullandığınız Servo’nun güç ihtiyacına göre Arduino kartınıza veya harici bir besleme kaynağına bağlayabilirsiniz. Biz bu dersimizde 5V gerilim ile çalışabilen bir Servo ile örneklerimizi gerçekleştireceğimiz için güç kaynağı olarak Arduino kartımızı kullanacağız.

Arduino Servo Kütüphanesi ve Fonksiyonları

Bu kütüphane Arduino kartları ile Servo motorların kontrolünün kolaylıkla sağlanabilmesi için geliştirilmiştir.

"Arduino

Arduino IDE’de bu kütüphanenin kullanımını gösteren iki örnek bulunmaktadır. Bu örneklere Arduino IDE’nizi kullanarak

Dosya -> Örnekler -> Servo

yolunu takip ederek ulaşabilirsiniz.

Dersimizin geri kalan kısmında bu örnekler hazırlanırken kullanılan fonksiyonları ve Servo kütüphanesinin diğer fonksiyonlarını incelemeye çalışacağız.

Servo Kütüphanesi Fonksiyonları

Servo kütüphanesini kullanabilmemiz için yukarıdaki kod satırında olduğu gibi kütüphaneyi projemize eklememiz ve kontrol için bu kütüphaneden en az bir nesne oluşturmamız gerekmektedir. Bu işlemleri yaptıktan sonra aşağıdaki fonksiyonları kullanabiliriz.

 

  • attach(pinNo) – Kütüphaneyi kullanarak oluşturduğumuz nesneye hangi pini kullanarak motorumuzu kullanacağımızı belirtmek için kullanılır.
  • attach(pinNo,min,max) – Kabaca Servo motorlar kontrol girişine gelen sinyalin uzunluğuna göre motorun açı değerini değiştirirler ve belirli sinyal uzunluğu aralıklarında çalışırlar. Standart servolarda 1000 mikrosaniyelik bir sinyal için motorumuz 0 derecede, 1500 mikrosaniyelik bir sinyal için 90 derecede ve 2000 mikrosaniyelik bir sinyal için 180 derecede konumlanacaktır. attach fonksiyonunun 3 parametreli kullanımı olan bu fonksiyon ise Servo motorumuzun özelliklerine göre bu aralığı değiştirebilmek için kullanılır. Varsayılan olarak min için 544, max için 2400’dür. Bu değerler kullanılacak olan motorun özelliklerine göre değiştirilerek hassas bir kullanım sağlanabilir.
  • attached() – Oluşturmuş olduğumuz nesnenin motor kontrolü için bir pine bağlı olup olmadığını kontrol etmek için kullanılır. Bağlı ise true, değil ise false değerini döndürür.
  • detach() – Oluşturulan ve attach() fonksiyonu ile bir pin ile ilişkilendirilen nesnenin pin ile ilişkisini kesmek için kullanılır. İlişki kesme işleminden sonra attach() fonksiyonu kullanılarak oluşturulan servo nesnemiz başka bir pin ile veya daha önce bağlı olduğu pin ile ilişkilendirilerek tekrar kullanılabilir.
    • Ayrıca bu fonksiyon için Arduino’nun resmi sitesinde aşağıdaki bilgi bulunmaktadır.
      Arduino - detach
      Arduino – detach
    • Yukarıda da görülebildiği gibi bu fonksiyonu kullandıktan sonra 9 ve 10 pinleri PWM çıkış sinyali için analogWrite() fonksiyonu ile kullanabileceğimiz belirtilmiştir. Ancak bu bilgi resmi sitede bulunmasına rağmen uygulama esnasında malesef söylenen işi gerçekleştirememektedir. Bu konu hakkında Arduino’ya yapılan Bug bildirimleri bulunmaktadır. Arduino tarafında bir güncelleme gerçekleştiği zaman yazımızdaki ilgili kısım güncellenecektir.
  • read() – Oluşturduğumuz nesne ile kontrol ettiğimiz motorun o anki açı değerini öğrenmek için kullanılır.
  • write(aciDegeri) – Bu fonksiyon ile daha önceden bağlanmış olan motorumuzun açı değeri ayarlanır. 0 ile 180 aralığında bir değer alır.
  • writeMicroseconds(mikrosaniye) – Bu fonksiyon Servo motora gönderilecek olan sinyalin uzunluğunu değiştirerek istenilen açı değerine ulaşmak için kullanılır.

 

Örnek

Aşağıdaki örnekte yukarıdaki bahsedilen fonksiyonların kullanımı gösterilmeye çalışılmıştır. Örnek kodlarının altında bulunan simülasyon eklentisinde bulunan Start Simulation butonuna kullanarak örneği çalıştırabilirsiniz.

 

Bu dersimizde Arduino Servo kullanımını incelemeye çalıştık. Servo kütüphanesinin nasıl kullanılabileceğini, fonksiyonlarının neler ve hangi işlevlere sahip olduklarını anlatmaya çalıştık. Konuyla ilgili yorumlarınızı konu altından yapabilir, sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz. Bir sonraki içeriğimizde Mobilhanem.com‘da görüşmek üzere.

Tüm Arduino Dersleri için tıklayınız..

Muhammed Enes Ateş

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?