14
Bu yazıyı " 2 " dakikada okuyabilirsiniz. 🙂

Merhabalar, servo motorlar 0 ile 180 derece arasında bir açıda döndürebildiğimiz elektronik bileşenlerdir. İhtiyacımız olan güce göre çeşitli büyüklükte ve plastik ve metal dişlilere sahip modelleri bulunmaktadır. Bu yazıda Servo motorları Arduino ile nasıl bağlantı sağlayacağımızı ve istediğimiz açı değerinde servo motoru nasıl çevireceğimizi göreceğiz.

Arduino servo motor kontrolü için PWM pinlerinden yararlanıyoruz. Bu pinlerin yanında dalga (~) işaret bulunmaktadır. Servo motoru bu pinlerle kullanabilirsiniz. Servo motorun 3 adet bağlantı kablosu bulunmaktadır. Projelerde ve prototiplerde kullanılan hem yaygın hem de ekonomik olan SG-90 servo motorunda renkleri kahverengi, kırmızı ve turuncu olmaktadır. Bu kabloların özellikleri kahverengi (GND), kırmızı (5v), Turuncu (Dijital PWM Pin) sinyal pini olarak belirlenmiştir.

Nasıl Bağlantı Sağlarız?

Genelde kullanılan SG-90 servo motorun kablo renkleriyle devremizdeki servo motor temsili ile karşılaştırdığımızda sarı renkli kablo sg-90 da Turuncu, kırmızı renk yine kırmızı, siyah renk ise kahverengi kablo ile eşlenmiştir. Bağlantımızı yukarıdaki devreye göre sağladıktan sonra kodumuzu yazmadan Servo kütüphanesini Arduino IDE’ye eklememiz gerekiyor.

Arduino IDE’ye Kütüphane Ekleme

Arduino IDE’ye kütüphane ekleme işlemini 3 farklı yöntem ile gerçekleştirebiliriz. bu yöntemler;

  1. Arduino IDE kütüphane yükleme yöneticisi ile eklemek
  2. Arduino IDE içerisinden Zip dosyası olarak eklemek
  3. Doğrudan kütüphane klasörüne ekleme

Biz Arduino IDe kütüphane yükleme yöneticisi üzerinden servo kütüphanesini ekleyeceğiz. Diğer yöntemleri de Arduino ile uğraştıkça farklı sensör ve modüllerle çalışırken ihtiyaç duyduğunuzda deneyimleme şansını bulacaksınız.

Arduino IDE menüsünden TASLAKLAR / Library Ekle / Libraryleri Düzenle seçeneğini seçiyoruz.

Açılan penceyenin arama kısmına Servo yazarak servo kütüphanemizi kurabiliyoruz.

Arduino İle Servo Motor Kontrolü Uygulaması

#include <Servo.h>  // Servo kütüphanesini projemize ekledik.

Servo servoM;  // Servo nesnemizi oluşturduk  , ismini servoM yaptık.
int pos = 0;    // pos değişkenini oluşturup 0’a eşitledik.

void setup() {
  servoM.attach(9);  // Servoyu 9nolu pin’e bağladığımızı belirttik.
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // For döngüsü ile 0 ile 180 derece arası gitmesini sağladık.
                                        // her bir adımda 1 derece artacak şekilde ayarladık.
    servoM.write(pos);              // Servo açı değeri olarak belirlediğimiz pos değişkenini servoya yazdırdık.
    delay(15);                       // servonun hedeflenen açıya gidebilmesi için 15 ms bekleme ekledik.
  }
  for (pos = 180; pos >= 0; pos -= 1) { // for döngüsü ile 180 ile 0 derece arası gitmesini sağladık.
    servoM.write(pos);              // Servo açı değeri olan pos değişkenini servo’ya yazdırdık.
    delay(15);                       // Servonun açı değerine gidebilmesi için 15 ms. bekleme ekledik.
  }
}
Ahmet Kemal YILDIZ
Eskişehir Osmangazi Üniversitesi Bilgisayar ve Öğretim Teknolojileri Öğretmenliği mezunu bir Bilişim Teknolojileri ve Yazılım Dersi Öğretmeniyim. Bilişim Teknolojileri ve Yazılım dersi ile ilgili ders etkinlikleri, kaynak materyaller, örnek etkinlikler ve ilgi duyduğum birçok konu hakkında vakit buldukça buradan blogluyorum. :)

    #6 Potansiyometre ile LED Parlaklığını Ayarlamak

    önceki yazı

    #8 Potansiyometre İle Servo Motor Kontrolü

    Sonraki Yazı

    Bu Yazılar da İlgini Çekebilir!

    14 Yorumlar

    1. Hocam iyi günler. Bu devreyi ve kodları dört servo motora nasıl eşitleyebiliriz ? Teşekkürler.

      1. Her eklediğiniz servo motor için yeni bir servo tanımlamanız gerekiyor. https://www.ahmetkemalyildiz.com.tr/8-potansiyometre-ile-servo-motor-kontrolu/ bu yazıda 2 servo motor için bir örneği yorumda belirtmiştim, dilerseniz inceleyebilirsiniz.

        1. Hocam power HD r30 yüksek voltaj 333hz 3adet servo ile mh90s 50hz servoyu potansiyometre ile kontrol etmek istiyorum servolari frekansları farklı olmasındandır bilmiyorum ama karasizliklar ve titreşimler alıyorum bu sorun için bir çözüm yolu varmidir

      2. Potansiyometre 0-1023 de değil de 0-180değerinde döndüğünde servonun 120 derece açı yapabilmesi için nasıl bir kod yazılmalı dönüşünüzü atakanalpdosdogru@gmail.com mail olarak yapabilir misiniz

        1. https://www.ahmetkemalyildiz.com.tr/8-potansiyometre-ile-servo-motor-kontrolu/
          Potansiyometre ile Servo motor kontrolüyle ilgili yazımı inceleyebilirsiniz hocam. Koddaki “map(pos, 0, 1023, 0, 180);” şeklinde yazılmış olan map fonksiyonunu “map(pos, 0, 1023, 0, 120);” olarak kullanırsanız Servo motorunuzu o ile 120 derece arasında çevirebilirsiniz.

    2. iyi günler
      servo motorlari karşılıklı bir mile bağlayıp ortak güç oluşturmam gerekiyor yanı servo motorlar bir mil ile bir birine bağlı olacak ve dolayısı ile bir tanesi her zaman diğerine göre ters çalışacak. ne yaptıysam başta ters dönüp sonrasında düzelme olayını çözemedim yardımcı olursanız sevinirim

    3. selam servo motorun itiş gücünü nasıl arttıra bilirim kapı açma sistemi yaptım fakat itiş gücü yetersiz kaldı çok az daha gücü olsa başarılı olacak mümkünmüdür

      1. Selam hocam, en etkili ve uzun vadeli çözüm daha güçlü bir Servo kullanmak olacaktır hocam. Hangi modeli kullanıyorsunuz?

    4. Selamlar, DC motor ile bir proje yapıyorum, adım kaçırıyor , adım kaçırmasıni nasıl önlerim

      1. Merhaba! DC motor projenizde adım kaçırma sorunu yaşıyorsanız, aşağıdaki adımları izleyerek bunu önleyebilirsiniz:

        Güç Kaynağını Kontrol Edin: DC motorunuzun güç kaynağı doğru ve yeterli gücü sağlıyor mu? Motorunuz için gereken doğru gerilim ve akımı sağlamak önemlidir. Yanlış veya zayıf bir güç kaynağı, motorun düzgün çalışmasını engelleyebilir ve adım kaçırma sorununa neden olabilir. Motorunuzun teknik özelliklerine bakarak doğru güç kaynağını kullanmaya özen gösterin.
        Motor Sürücüsünü Kullanın: DC motorları sürmek için motor sürücü devreleri kullanmanız önemlidir. Motor sürücü devresi, motorun doğru bir şekilde çalışmasını sağlar ve adım kaymasını önleyebilir. Motor sürücüsü, motorun hızını ve yönünü kontrol etmek için PWM (Darbe Genişlik Modülasyonu) sinyallerini kullanır. Doğru bir motor sürücüsü seçerek ve uygun şekilde yapılandırarak adım kaçırma sorununu azaltabilirsiniz.
        Doğru Motor Kontrol Sinyalleri: Motor sürücüsü ile doğru motor kontrol sinyallerini sağlamak da önemlidir. PWM sinyalleri, motorun hassas bir şekilde hızını kontrol etmenizi sağlar. Motorunuzu sürdüğünüz programda, doğru PWM sinyallerini sağladığınızdan emin olun. Ayrıca, motorunuzu kontrol ederken hız artışı ve azalışı için doğru adımları uyguladığınızdan emin olun.
        Motorun Mekanik Bağlantılarını Kontrol Edin: Adım kaymasının mekanik nedenleri de olabilir. Motorunuzun dişli veya kasnakları, mil ve diğer mekanik bağlantıları doğru şekilde tutturulmalı ve sıkı olmalıdır. Gevşek veya bozulmuş bağlantılar adım kaymasına neden olabilir. Mekanik bileşenlerin doğru şekilde monte edildiğinden emin olun ve gerekirse kontroller yapın.
        Bu adımlar, DC motorunuzda adım kaçırma sorununu azaltmanıza yardımcı olabilir. Projede kullanılan motor, motor sürücüsü ve kontrol yöntemine bağlı olarak farklı önlemler gerekebilir.

    5. Ahmet Kemal Bey, merhaba,

      Paylaşımınız için teşekkürler. Internet’te gördüğüm bir çok Arduino- Servo şemasında, Servo’nun kontrol hattı Arduino’nun ~ işareti olmayan pinlerine bağlanmıştı. Servo çalışır mı ?

      1. Servo motorlar genellikle PWM (Pulse Width Modulation) sinyalleri ile kontrol edilirler. Arduino’nun bazı dijital çıkış pinleri PWM sinyalleri üretebilirler ve bu pinler genellikle ~ işareti ile işaretlenirler. Ancak, diğer dijital çıkış pinleri de PWM sinyalleri üretebilirler. Bu nedenle, servo motorların kontrol hattının ~ işareti olmayan dijital çıkış pinlerine bağlanması durumunda servo motorun çalışmaması kesin bir sonuç değildir.

        Ancak, ~ işareti olmayan bir dijital çıkış pini kullanarak servo motoru kontrol etmek, PWM sinyallerinin tam doğru frekansını üretmediği için servo motorun daha az hassas çalışmasına neden olabilir. Bu durum, servo motorun doğru konuma gitmesini engelleyebilir veya servo motorun titreşmesine neden olabilir.

        Sonuç olarak, mümkünse servo motoru Arduino’nun ~ işareti olan bir dijital çıkış pini ile kontrol etmek en iyi seçenektir. Ancak, ~ işareti olmayan bir dijital çıkış pini kullanarak servo motoru kontrol etmek de mümkündür, ancak servo motorun hassasiyeti düşebilir.

    6. hocam merhaba, servo pozisyonu yani açısal olarak arada bir yerde ise örneğin 50 derecede kalmış ise ve bunu okuyup pozisyonunu sıfıra getirmek için nasıl kodlamak gerekir.

      1. Merhabalar,

        Servo motorun açısını okumak için “read” fonksiyonu kullanabilirsiniz ve “write” fonksiyonu ile de servo motorun açısı belirleyebilirsiniz.

        Eğer servo motorun açısı 50 derecede kalmışsa, öncelikle “read” fonksiyonu ile bu açıyı okuyabilirsiniz. Daha sonra, “write” fonksiyonunu kullanarak servo motorun açısını sıfıra getirebilirsiniz. Aşağıdaki kod örneği inceleyebilirsiniz:

        “`
        #include

        Servo servoMotor;
        int servoPin = 9;

        void setup() {
        servoMotor.attach(servoPin);
        }

        void loop() {
        int servoPosition = servoMotor.read();

        if (servoPosition == 50) {
        servoMotor.write(0);
        }

        // Diğer işlemler
        }
        “`

        Bu örnekte, servo motorun bağlantısı “servoPin” değişkeni ile tanımlanır ve “attach” fonksiyonu ile yapılır. Daha sonra, “loop” fonksiyonu içinde “read” fonksiyonu ile servo motorun açısı okunur ve eğer açı 50 derece ise “write” fonksiyonu ile açı sıfıra getirilir.

        Not: Servo motorların açısı genellikle 0-180 derece arasında değişir. Bu nedenle, servo motorun açısını sıfıra getirmek yerine, örneğin 90 dereceye getirmek gibi bir değer belirlemeniz daha uygun olabilir.

    Yorum yap

    E-posta hesabınız yayımlanmayacak.

    Daha Arduino