Merhaba arkadaşlar. Bugün sizlerle Arduino UNO ile servo motor kontrol uygulaması yapacağız.

Gerekli malzemeler:

Servo motorlar, RC (radio controlled, uzaktan kumandalı) araba, helikopter ve uçak gibi araçlarda kullanılır. Bu motorlar, DC motorlardan farklı olmak üzere istediğimiz pozisyonda sabit kalacak şekilde tasarlanmıştır. Çoğunlukla 0-180 derece arası açılarda çalışırlar. RC arabamızın direksiyonunda, helikopterlerin pervanelerine açı vermede ve uçakların kontrol yüzeylerini hareket ettirmede kullanılırlar. PWM sinyal ile çalışırlar.

İlk uygulama örneklerimizde PWM’i analog voltaj çıkışı elde etmek için kullanmıştık. Fakat servo motorlarda PWM biraz daha farklı şekilde çalışmakta. Hatırlayacak olursak, Arduino’da analogWrite() komutu ile aldığımız PWM sinyalinin sadece 5V seviyesinde kaldığı süreyi (duty cycle) değiştirerek farklı analog sinyaller elde etmiştik. Servo motorlarda ise yine benzer şekilde 20 ms’lik sinyalin açık kaldığı periyodu 1 ms ile 2 ms arasında değiştirerek, servomuzu 0 dereceden 180 derece arasında istediğimiz konuma ayarlayabiliriz.

Bağlantılarımızı şekildeki gibi yapıyoruz:

Uygun koda Arduino programından

Dosya > Örnekler > Servo > Sweep

adımlarını takip ederek ulaşabilirsiniz. Bu kod, servomuzu önce 0 dereceden 180 dereceye adım adım ilerletecek; 180 dereceye ulaşınca da tekrardan 0 dereceye adım adım geri döndürecektir.

Farklı bir uygulama olarak servomuzun pozisyonunu Arduino’muza bağlayacağımız bir potansiyometre ile de kontrol etmemiz mümkün:

 

Bu devreye uygun koda da

Dosya > Örnekler > Servo > Knob

adımlarını takip ederek ulaşabilirsiniz.

 

18 Yorumlar

  1. bu güzel çalışma için teşekkürler
    bir sorum olacak
    servo motorun istenen açıya giderkenki hızını nasıl ayarlayabiliriz?
    (rampalanarak çalışmasını ve durmasını istiyorum)

    • Servonun istenen pozisyona giderkenki hızını koddaki delay() komutlarını değiştirerek ayarlayabilirsiniz fakat, maksimum konumlama hızı, servo motorun içinde kullanılan motor ile alakalı olduğundan buna pek müdahale şansımız bulunmamaktadır. Projenizde kullanacağınız servo motoru tercih ederken size uygun hıza sahip olanı sn/60 derece şeklinde verilen servo özelliklerine bakarak tercih edebilirsiniz. Ayrıca dijital servolar analog servolara göre daha hızlı ve kararlı çalışmaktadırlar.

  2. merhabalar. ben arduino ile 6 adet mg996r servo kontrol etmek istiyorum.motorlara breadboard üzerinde 5v 1a adaptör ile dışarıdan besledim.arduino’nun gnd ile board’a 1 bağlantı yaptım.ancak yeterli gücü aldığımı düşünmüyorum acaba yanlış mı kullanıyorum güç kaynağımı?ölçtüğümde 1motor 0.1a-0.3a gibi bir aralıkta çalışıyor ama datasheet’ine baktığımda 6v 0.8a çalışma değerleri görünüyor.lütfen bilginiz varsa yardımcı olunuz teşekkürler iyi günler dilerim.

  3. Merhaba,
    Bu uygulama ile motoru önceden belirlediğimiz 50-60 noktaya hafızalandırabilirmiyiz.
    Yani istediğimiz 50-60 nokta için memory uygulaması yapılabilirmi.

    Teşekkürler

    • Merhabalar. İstediğiniz konumların derece olarak karşılığını bildiğinizi varsayarsak, servo.write(derece) komutunu kullanarak sırayla istediğiniz konumlara servoyu hareket ettirebilirsiniz.

  4. Merhaba
    Ben basınç sensörü flex sensörü ve servo motor kullanarak robot kol yapmak istiyorum. Flex sensör ile servoyu hareket ettireceğim fakat robot kolun ucundaki basınç sensörüne belli bir kuvvet uygulandığında servo duracak. Bu uygulamayı nasıl yapabilirim. Yardımcı olursanız sevinirim

  5. Merhabalar; elimde tam tur atabilen bir servo motor var, ve mesafe sensörünün ölçtüğü uzaklık belli bir değerin altına indiği zaman durmasını istiyorum. Bunu nasıl sağlayabilirim?

  6. merhaba.ben hc -sr501 hareket sensörü ile mg 90s servo motor kontrolünü zaman ekleyerek nasıl yapabilirim? mesela sensör algıladığında servo motor sıfır konumundan 180 dereceye gidecek ve algılama devam ettiği sürece bekleyecek algılama bitince 3 sn bekleyip servoyu 180 dereceden sıfır konumuna alacak.kodun tamamını yazarsanız sevinirim.teşekkür ederim.

  7. Merhabalar;
    4 ad Mg996r ile yaptığım bir projede komut listesine ihtiyacım var.Butona basıldığında servolar 90*derece dönecek 1 sn bekleyip tekrar eski pozisyonuna dönmesini istiyorum.Bu işlemi butona bastığımızda 1 defa yapacak.Komut satırı hk.yardımcı olabilirseniz sevinirim.İyi çalışmalar,

  8. Engelden kaçan robot yapmaktayım. Bu robotun engeli gördüğünde durup sonra dönmesini istiyorum. Dönmesinde sıkıntı yok fakat durduramıyorum. Motoru kontrol eden bağlantıların hepsine yazılım kısmında HIGH verilince motor duruyor diye biliyorum. Fakat durmuyor. Yardımcı olurmusunuz?

    • Fırçasız DC motorlar ESC isimli sürücüler ile kullanıldığından tıpkı servo gibi kullanılabilir. Joystick kontrollü servo uygulamalarına bakabilirsiniz, size bir fikir verecektir.

  9. Iyi günler elimde iki adet Free tech fs90r pl 2820 servo motor var ben bu motorlarla android uzerinden almis oldugu sayisal degerler ile labirenti cozebilmesini istiyorum elimde birde hc 06 bluetooth var android bluetoothu görüyor ve baglaniyor ama mesaj alis verisi yapmiyor ve motorlar kodlari girmeme ragmen tam yani 360 derece dönüyor motorlarin bu dönüşünü telefondan kontrol edebilmek icin nasil bir kod girmem gerekiyor yardimci olursaniz cokkkkk sevinirim iyi günler iyi çalışmalar 🙂

  10. Analog olarak çalıştırdığım yağmur sensörü var ben yağmur miktarına göre servonun çalışmasını istiyorum sağanak yağmurda çalıştı ama normal yağmur yağarken çalıştoramadım iki kodu nasıl ayarlamalıyım

CEVAP VER