back to top

Arduino Temelleri 13: Servo Motor Kontrolü

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.

Son Çıkan Yazılar

163 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)

  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

  11. Merhabalar, Ben de yağmur sensörünün suyu algılaması durumunda servo motorun belli bir açı değeriyle çalışmasını istiyorum.Kodu nasıl yazabilirim.Şimdiden teşekkür ederim.

  12. Merhaba bir adet dc motor bir adet 180 derece servo motoru nrf24l01 smd ile birlikte kullanmak istiyorum diğer tarafta yine bir uno r3 üzerinde nrf24l01 ve joystick shield olacak bu şekilde rc araç ve kumandasını yapmam için uygun bir motor shield ya da çözüm bulamadım l293d motor shield alamayı düşündüm ama o zamanda nrf için gereken pinleri motor shield işgal ediyor lütfen yardımcı olur musunuz TSK…

  13. Merhabalar. Konuyu ve yourmları okudum fakat benim yapmak istediğim şey başka. Elimde AC bir servo motor ve o motora ait sürücüsü var. Ben bu servoyu arduino ile kontrol etmek istiyorum fakat forumlarda veya başka bir yerde bununla ilgili bir kaynak bulamadım. Bilginiz varsa eğer yardımcı olabilirseniz çok sevinirim.Teşekkürler

    • Merhabalar. Bahsetmiş olduğunu endüstriyel tipte servo drive’lar marka/modellerine göre PROFINET, PROFIBUS, CCLink gibi endüstriyel haberleşme protokolleri ile diğer otomasyon ekipmanları ile bağlantı kurabileceği gibi, PLC ile doğrudan kullanımı için Arduino üzerindekine benzer dijital giriş/çıkışlara da sahip olabilirler. Eğer bu tipte girişler sürücünüzde mevcut ise, Arduino veya benzer bir mikrokontrolcünün çıkışını PLC ile uyumlu 24V seviyesine getirebilen bir devre kartı ile (örnek) kullanabilirsiniz.

  14. Merhaba bu işlerde çok yeniyim ik adet servoyu aynı anda farklı hareketler ile nasıl çalıştırabilirim şu anda ikisinede aynı hareketi yaptırabiliyorum
    Bilg için tesekkurler

    • Arduino’ya aynı ikinci devredeki gibi bir potansiyometre daha bağlayın. Diğer potansiyometrenin orta pinini A1 pinine bağlayın. Aynı şekilde ikinci servoyu da, sinyal pini 10 numaralı dijital pine gelecek şekilde bağlayın. Aşağıdaki kodu kullanabilirsiniz:

      #include "Servo.h"

      Servo servo1;
      Servo servo2;

      int s1_val;
      int s2_val;

      void setup() {
      servo1.attach(9);
      servo1.attach(10);
      }

      void loop() {
      s1_val = analogRead(A0);
      s1_val = map(s1_val, 0, 1023, 0, 180);
      s2_val = analogRead(A1);
      s2_val = map(s2_val, 0, 1023, 0, 180);
      servo1.write(s1_val);
      servo2.write(s2_val);
      delay(15);
      }

  15. Merhaba.Otopark projesi için ultrasonik mesafe sensörüyle servo motor kontrol ediyorum.Bütün park yerlerinin dolu olduğu durumda giriş kapısı için kullandığım servo motorun konumunun değişmemesini istiyorum acaba yardımcı olabilir misiniz ? Teşekkürler.

    • RC araçlar için kullanılan uzaktan kumandalar doğrudan servo motorları kontrol edebilecek şekilde tasarlanmıştır. Kumandanın alıcısının uygun kanalına servo motoru takmanız ve 5V (çoğu servo motor 5V ile çalışır) ile beslemeniz yeterlidir.

  16. servo motor lcd ekran ve lm35 ısı sensörü kullanıyorum sorunum lm35 sensör veriyi servo motor durduktan sonra veri alabiliyorum lm35 sensör verisini 1 sn bir nasıl alabilirim
    #include
    #include
    #include

    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    Servo myservo;
    float T;
    int motor = 0;
    int i;
    void setup() {
    // set up the LCD’s number of columns and rows:
    Serial.begin(9600);
    lcd.begin(16, 2);
    lcd.setCursor(0,0);
    // Print a message to the LCD.
    lcd.print(“Temperature”);
    myservo.attach(9);

    }

    void loop() {
    T = 0.48828125 * analogRead(A0);

    // set the cursor to column 0, line 1
    // (note: line 1 is the second row, since counting begins with 0):
    lcd.setCursor(0, 1);
    // print the number of seconds since reset:
    lcd.print( T,1);
    lcd.print(” oC”);
    delay(1000);
    Serial.print(“TEMPRATURE = “);
    Serial.print(T);
    Serial.print(” oC”);
    Serial.println();
    delay(1000);

    for (motor = 90; motor 90; motor-= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(motor); // tell servo to go to position in variable ‘pos’
    delay(30); // waits 15ms for the servo to reach the position

    if( motor==91 ){

    myservo.write(motor); // tell servo to go to position in variable ‘pos’
    delay(3000);
    }
    else {
    myservo.write(motor);
    delay(30);
    }
    }

    for(motor=90; motor>45; motor-=1){
    myservo.write(motor);
    delay(30);
    if(motor==46){
    myservo.write(motor);
    delay (3000);
    }
    else{
    myservo.write(motor);
    delay(30);
    }
    }
    }

  17. Merhaba ben yağmur sensöründen okuduğum degerle servo motoru kontrol etmek istiyorum ikisinin çalısmasını bir türlü birleştiremedim yardımcı olabilir misiniz?

    • Standart servo motorlar 0-180 derece arasında çalışırlar. Öncelikle bu işlem için sürekli dönebilen tipte bir servo motora ihtiyacınız olduğunu hatırlatmak isterim. Sürekli dönebilen servo motorlarda ise motorun konumunu algılayamadığımız için bu işlemi ancak süreye bağlı olarak değiştirebiliriz. Motorun bir turu ne kadar sürede aldığını ölçebilir, bilgisayardan gireceğiniz tur sayısını bu değer ile çarparak motoru çalıştırdıktan sonra Arduino’nun bu süre kadar beklemesini sağlayabilirsiniz.

      • merhaba mg90s 180 derece bir servom var fakat konumlandırma yapmaya uğraşırken nasıl olduysa 360 derece dönmeye başladı. içindeki pot bozulmuş olabilir mi düzeltebilir veya bu şekilde konumlandırma yapabilir miyim öneriniz nedir

        • İnsansı Robot yapmayı düşünüyorum 32 tane servo motor kullanmak istiyorum kart olarakta Arduino mega bu mümkün mü acaba yardımınıza ihtiyacım var

  18. benim bir problemim var bir türlü çözemedim arduinoda servo ile lm 35 aynı anda çalıştırmak istiyorum. Yapmak istediğim servo motor 1 er saniye ile 0 45 90 180 beklemesi .lm35 ısı sensörü 1 sn de bir ölçüm yapması . sorunum şu servo motor 1er sn ile 0 45 90 180 derecede bekliyor ama lm 35 ısı sensörü servo motorum her sıfıra geldiğinden 1 sn sonra ölçüm yapıyor. yani ( delayleri toplayarak 5sn de bir ölçüm yapıyor). bu konuda yardımcı olurmusunuz.

  19. sa arkadaşlar servo motoru 45 derece çevirdikten sonra o açıda 1-2 saat bekletmem için hangi kodu yazmam gerek.bu kodu kullanıyorum ama beklemiyo.

    int sicaklikpin = A1; //Analog değer girişi
    float sicaklik; //Analog değeri dönüştüreceğimiz sıcaklık
    float analoggerilim; //Ölçeceğimiz analog değer
    #include
    #include
    Servo myservo;
    LiquidCrystal lcd(13, 12, 11, 7, 8, 9, 10);
    // RS,RW, EN, DB4,DB5,DB6,DB7 LCD BAGLANTISI

    #include // dht11 kütüphanesini ekliyoruz.
    #define DHT11PIN A2 // DHT11PIN olarak Dijital 2’yi belirliyoruz.
    dht11 DHT11;
    int pos = 45;

    int role=4;

    int sayac=0;
    void setup() {

    // set up the LCD’s number of columns and rows:
    myservo.attach(9);
    lcd.begin(16, 2);
    lcd.setCursor(0, 0);
    lcd.print(“SICAKLIK”);
    lcd.setCursor(0, 1);
    lcd.print(“NEM”);

    pinMode(role,OUTPUT);
    }

    void loop()
    {
    analoggerilim= analogRead(sicaklikpin); //A0’den değeri ölç
    analoggerilim=(analoggerilim/1023)*5000; //değeri mV’a dönüştr
    sicaklik=analoggerilim /10,0; //mV’u sicakliğa dönüştür

    for(pos = 0; pos =39)
    {
    digitalWrite(role,LOW);
    }
    else if(sicaklik=0; pos-=1) // Servo 1’den 0 pozisyonuna 180 derece dönecek.
    {
    myservo.write(pos); // Belirlenen pozisyona gitmesi isteniyor.

    delay(50); // Pozisyona 5 ms de ulaşıyor
    }

    }

    • Döngülerinizde hata var. Ayrıca servoyu berlirli bir konuma adım adım getirmek zorunda değilsiniz, myservo.write(45) gibi bir komut ile doğrudan 45 dereceye gitmesini sağlayabilirsiniz.

  20. 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 🙂

  21. sa arkadaşlar servo motoru 45 derece çevirdikten sonra o açıda 1-2 saat bekletmem için hangi kodu yazmam gerek.bu kodu kullanıyorum ama beklemiyo.

    int sicaklikpin = A1; //Analog değer girişi
    float sicaklik; //Analog değeri dönüştüreceğimiz sıcaklık
    float analoggerilim; //Ölçeceğimiz analog değer
    #include
    #include
    Servo myservo;
    LiquidCrystal lcd(13, 12, 11, 7, 8, 9, 10);
    // RS,RW, EN, DB4,DB5,DB6,DB7 LCD BAGLANTISI

    #include // dht11 kütüphanesini ekliyoruz.
    #define DHT11PIN A2 // DHT11PIN olarak Dijital 2’yi belirliyoruz.
    dht11 DHT11;
    int pos = 45;

    int role=4;

    int sayac=0;
    void setup() {

    // set up the LCD’s number of columns and rows:
    myservo.attach(9);
    lcd.begin(16, 2);
    lcd.setCursor(0, 0);
    lcd.print(“SICAKLIK”);
    lcd.setCursor(0, 1);
    lcd.print(“NEM”);

    pinMode(role,OUTPUT);
    }

    void loop()
    {
    analoggerilim= analogRead(sicaklikpin); //A0’den değeri ölç
    analoggerilim=(analoggerilim/1023)*5000; //değeri mV’a dönüştr
    sicaklik=analoggerilim /10,0; //mV’u sicakliğa dönüştür

    for(pos = 0; pos =39)
    {
    digitalWrite(role,LOW);
    }
    else if(sicaklik=0; pos-=1) // Servo 1’den 0 pozisyonuna 180 derece dönecek.
    {
    myservo.write(pos); // Belirlenen pozisyona gitmesi isteniyor.

    delay(50); // Pozisyona 5 ms de ulaşıyor
    }

    }
    Yanıtla

  22. İyi günler. 2 adet servo mg995 i arduino uno ile çalıştırıyorum yalnız biraz çalışıp reset atıyor kendine. Güç sorunu mu var acaba. Yardımcı olur musunuz.

    • Eğer gücü Arduino üzerindeki 5V pininden sağlıyorsanız yetmeyecektir. Servoları beslemek için harici bir 5V güç kaynağı kullanın ve bu güç kaynağının eksi ucunu Arduino’nun GND hattıyla birleştirin.

  23. Merhaba alev söndüren robot yapıyorum sensör alevi algılıyor su püskürtmek için servo motoru alevin olduğu yöne kilitliyemiyorum yardımcı olursanız sevinirim

    • Hangi alev sensörünü kullanıyorsunuz? Eğer buradaki gibi bir sensör kullanıyorsanız yalnızca alevin varlığını algılamada kullanabilirsiniz. Yönünü algılamak için bu sensörden birden çok sayıda kullanmanız gerekecektir.

  24. ARDUINO UNO İLE BİR MÜHİMMAT MAGAZİNİ YAPMAK İSTİYORUM. BİR MONİTÖRDEN KONTROLÜNÜN SAĞLANIP İSTENİLEN MÜHİMMATIN MÜHİMMAT YUVASINA DENK GELECEK ŞEKİLDE SERVO MOTORUN DÖNEREK ÇALIŞMASINI İSTİYORUM. NASIL YAPABİLİRİM?

  25. hocam ben servo motoru joyistik ile kontorl edicem ama hiç yaazılım bilgim yok ve hazır kodları kullanarak öğrenmeye çalışıyotum ve herseferinde kol hareket ettiği yönden geri geliyor bunu nasıl çözerim kodunu nasıl yazmam gerek ? yadım ederseniz sevinirim 😉

  26. Merhaba. Ben de bir proje yapıyorum. Benim de bir sorum var. Üç adet servo motor kullanmak istiyorum projemde. Bu servo motorların ardunio ile birlikte gerçek zamana göre çalışmasını istiyorum. Mesala saat 3 oldugunda bu motorlardan birincisinin bir tur dönmesini saat 4 olduğunca ikincisinin bir tur dönmesini ve saat 5 olduğunda üçüncü motorun tam bir tur dönmesini istiyorum. Bunun için 360 derece dönen servo motor mu kullanmalıyım? Eğer bu servo motoru kullanırsam zamana göre sadece bir tur nasıl attırabilirim?

    • Bahsettiğiniz projede 360 derece dönebilen servo motor yerine enkoderli DC motor veya step motor kullanmanız hassas derece kontrolü için daha uygun bir seçim olacaktır.

      • Cevap yazdığınızdan beri araştırıyorum ama karar veremedim hangi step motoru alacağıma. Step motorun üzerine çok fazla yük yüklemeyeceğim. Daire şeklinde kesilmiş bir kartonu ve üzerinde bulunan az miktarda ufak ilaçlarla birlikte döndürmek istiyorum. Sizde hangi step motoru satın almalıyım?

  27. Merhaba; arduıno uno ve servo motor aldım bu konuda pek bilgim yok servoyu arduınoya bağladım youtube deki videolardan bakarak ve sıra komut vermeye geldi komutu şu sekilde verdim
    libarry-servo
    ınclude:servoh
    attach 9
    write 180
    yapıyorum hata veriyor yardımcı olabilirmisiniz

  28. Merhaba ben bu kodu kullanarak bir proje yaptim ve bunu pille calistirmam gerekiyor. Prominiyi ve servoyu 4 er adet ayri pille besliyorum fakat yinede piller cok cabuk bitiyor. Bu koda kesme ve uyku modu uygulayarak pille uzun sure nasil calistirabilirim yardim ederseniz sevinirim. Teşekkürler. Ayrica guc tasarrufu olsun diye atmegayi ciplakta kullandim ama yinede pil omrunu tatmin edici duzeyde artiramadim. Teşekkürler

  29. Selamlar, ben VHDL ile FPGA kullarank servo motoru kontrol etmeye çalışıyorum o yüzden kod üzerinden değilde genel mantık üzerinde sorum olacak: 1 ms duty gönderirsem sola 2 ms duty gönderirsem sağa gideceğini biliyorum ama servo motor hangi hızla döneceğini nasıl anlıyor? Acaba PWM aralığını artırmam servoyu yavaşlatır mı?

    • Servo motorların hızını malesef bu şekilde kontrol edemezsiniz. Sizin de belirttiğiniz gibi sadece servo kolunun konumunu vereceğiniz PWM dalganın duty cycle’ını değiştirerek kontrol edebilirsiniz. Ne kadar hızlı şekilde o konuma gideceği ise tamamen servo içerisinde kullanılan motor ile alakalıdır. Bu değer servonun özellikleri arasında “Hızı: 0.16sn/60°” gibi bir ifade ile belirtilir.

    • Yazıda da belirttiğim gibi Arduino IDE’yi açtıktan sonra Dosya > Örnekler > Servo > Knob menü sırasını takip ederek koda ulaşabilirsiniz.

    • Merhabalar, doğru anladıysam şuna benzer bir proje yapmak istiyorsunuz: https://www.youtube.com/watch?v=QNlG-Zp_zwM

      Bunun için birden fazla seçeneğiniz var. Örnek olarak videoda verilen şekilde bir araca ait gösterge panelini CAN BUS haberleşme kullanarak kontrol edebilmeniz mümkün. Fakat maliyeti ve karmaşıklığından dolayı daha basit bir yöntem de tercih edebilirsiniz. Buna örnek olarak ise bir servo motor kullanıp, oyundan alacağınız hız bilgisine göre servonun açısının değiştiği bir hız saati yapabilmeniz mümkün. Burada karşılaşacağınız en büyük zorluk, bilgisayarınızda çalışmakta olan oyundan aracın hız bilgisini Arduino’ya aktarmak olacaktır. Arduino kısmındaki servo kontrolünü ise bu dersimizdeki bilgileri kullanarak gerçekleştirebilirsiniz.

  30. sorumu biraz detaylandırayım. potansiyo metre ile servo motoru hareket ettirip, potansiyo metreden gelen sinyal kesildiğinde motorun en son bulunduğu konumda kalmasını, tekrar potansiyo metre ile ileri yada gere hareket ettirdiğimde servo motorun en son kaldığı yerden hareketine devam etmesini istiyorum. yukarıdaki kodları kullandığımda potansiyometreden sinyal kesildiğinde motor sıfır noktasına dönüyor. bilmem anlatabildim mi? teşekkürler.

    • Merhabalar, öncelikle Arduino Dersleri serimizin ilk yazısını okumanızı tavsiye ederiz. Arduino kartınızı programlamak için gerekli olacak Arduino IDE yazılımını ve sürücülerin kurulumunu bu yazımızı takip ederek gerçekleştirebilirsiniz.

  31. Arduino ve elektronik konuları ile ilgili tecrübe kazanıyorum. İlk adımlar hep zor olur, bu yüzden basit konularda takılıyorum. Yardımlarınızı rica eder teşekkür ederim.

    Yeni aldığım Powerhd 1160A’ ı harici enerji kaynağı ile kullanmaya çalışırken hep problem ile karşılaştım. Kimisinde sanırım voltaj yetersiz geldi, fevri hızlarda hareket etti motor. Yani hızlı hareket etti, sonra durdu. Kimisinde sola döndü, sonra sağa bir müddet dönmedi. Kimisinde olduğu yerde sesler çıkardı ama hareket olmadı. Bunların hepsinin voltaj ve akımdan kaynaklı olduğunu düşündüm. Öncelikle bu düşüncem doğru mu sormak isterim.

    Sonrasında 6V bir voltaj düzenleyici kart aldım ve bunu 12V 2A olan bir adaptör ile besledim. Yani giriş 12V çıkış 6V olarak ayarladım. Artık oldu herhalde derken baktım Servo motor’ da hiç bir tepki ve en ufak bir ses yok. Acaba Servo’ yu mu bozdum diye içini açtım. Multimetre ile girişinde ki voltajı 6V olarak ölçtüm. Servo’ nun içinde bir adet DC motor vardı. Onunda bacaklarında ki voltaja bakayım dedim ve 0V ölçtüm. O sırada yanlış bir yere mi dokundum bilmiyorum, hafif bir duman çıktı lambadan cin çıkar misali. Sonuç olarak nerede hata yaptım sormak isterim. Acaba adaptör çıkışında 2A yazıyordu, bu akım servoya ulaştı ve servoyu mu bozdu?

    Şimdiden teşekkürler.

    • Adaptörünüzün çıkışının 2A olması, en fazla 2A verebileceğini gösterir. Akımın herhangi bir yere sizin dediğiniz gibi ulaşması ancak kısa devre yaptığınızda mümkün olur. Sizin servonuzun bozulma sebebi, büyük ihtimalle içini açtığınız esnada yapmış olduğunuz bir kısa devreden kaynaklı olmuştur.

  32. Merhaba, arduino kodlama programının içerisindeki servo> swep örneğini küçük servo ile denedim sorun çıkmadı. Ancak mg945 360 derece dönebilen servoda denediğimde servo sürekli dönüyor kodları algılamıyor sanki ne yapmalıyım. Güçle ilgili olma ihtimali var mı?

    • 360 derece dönebilen servo motorlar adlarından da anlaşılacağı üzere sürekli dönmeleri için tasarlanmıştır. DC motor kullanmak yerine sürücüye ihtiyaç duymadan ve basit bir şekilde mikrokontrolcünün tek bir PWM çıkışını kullanmaları için tasarlanmıştır. Bu sebepten dolayı açı kontrol mekanizması barındırmazlar.

  33. merhabalar ben servoyu istediğim açıya geldiğinde bir süre bekletmek ve daha sonra bir diğer açıya gidip orada da bekletmek istiyorum bu konuda yardımcı olabilirseniz sevinirim

    • servo.write(açıdeğeri) komutu ve hemen ardından yazacağınız bir delay() komutu ile istediğiniz açı değerinde istediğiniz süre boyunca servonun sabit kalmasını sağlayabilirsiniz.

  34. selam yardımcı olursanız sevinirim ARDUİNO İLE SERVO MOTOR VE LCD İLE MOTORU SAG SOL HAREKET ETTİRDİM FAKAT LCDDE EKRANA SAGA BASILDIGINDA 5 DERECE DÖNÜP EKRANADA O MESAJI İLETMESİ LAZIM EKRANDA MOTOR 5 DERECE SOLA İLERLEDİ DİGER BUTONA BASILDIGINDA MOTOR 5 DERECE SAGA İLERLEDİ VE HER BASTIGIMIZDA 5 10 15 ARTMASINI İSTİYORUM BUNU NASIL YAPARIM YARDIMCI OLURSANIZ SEVİNİRM

    • switch() ve case ile butonların işlevlerini oluşturabilirsiniz. Bir değişken ile servo motorun derecesini hafızada tutup bir butonun bu değere 5 eklemesini, diğer butonun 5 çıkartmasını sağlayabilirsiniz. Tabi ki bu değerlerin 0-180 arasında olması gerekecek. Her bir butona basıldıktan sonra servo.write(konum_degiskeni) komutunu verip altına da lcd.print() ile ekrana da bu değeri yazdırmanız mümkündür.

  35. Merhabalar ben ses kartı kulanarak servo motorun sesin geldiği tarafa döndürmem gerek ama hep aynı tarafa dönemez belli bi miktar döndükten sonra 0 konumuna gelip kablolarım kopmasını önlemem lazım nasıl yapabilirim ?

    • Servo motorlar yazıda da belirtildiği gibi 0-180 derece arasında çalışırlar. Sürekli dönebilen servorlar bulunsa da, genellikle projelerde servo motor kullanılmasının amacı belirli açı limitlerinde hareket sağlamasıdır. İstediğiniz açı değerini deneyerek bulduktan sonra yazdığınız programda belirtirseniz sorunsuz bir şekilde kullanabilirsiniz.

      • Merhabalar bütün yorumları tek tek okudum fakat kendi projemde yaşadığım soruna çare bulamadım.Benim bitirme tezimde arduino megayı MPU6050 sensör ile servo motor kontrolü yapmak istiyorum. Sensörün hareket hızına göre motor hzımı kontrol etmek istiyorum.(sensörü aşağı ve yukarı hareket ettirmek istiyoruz.Yürüyüş adımlarına benzer.)LÜTFEN YARDIMCI OLUNNN..

  36. Merhabalar elimde (sg90) Servo Motor var. Akıllı çöp tenekesi projesi yapmaya çalışıyorum ama kapağı açtırmayı bir türlü başaramadım.Motorun kapağı açmaya gücü yetmiyor önereniz nedir. Bu motorun gücünü nasıl attırabilirim yardımlarınız için şimdiden çok teşekkür ederim.

  37. merhabalar,
    elimde 360 derece sürekli dönebilen bir servo var.servoyu mikrofon sensörüne bağlayıp alkış ile kontrolünü sağlamaya çalışıyorum herşey normal alkış çalınca istediğim yöne dönüyor ancak servo yu alkış çaldığımda belirli açılarda dönüp servo dursun istiyorum ancak servo durmuyor bunu durdurma kodu vs bişey varmı yardımcı olursanız sevinirim.

  38. merhabalar hocam , arduino parmak izi okuyucu ile servo motoru aynı projede nasıl kullanabilirim ?
    parmak izini okuyunca servo konum değiştirecek .

      • Aliexpresden aldım hocam fiyatı baya uygundu, Türkiye’dekilerden farklı biraz kablo yapısı.rx tx vcc gnd yi buldum tanıttım. Parmak izini okutup servo ile kilidi açıcam.
        Prmak izi okuyucunun kendi kütüphanesinde örneklerde fingerprint var . Fingerprint ile parmağı okutuyorum , kodun son kısmına doğru parmak eşleşmesinden sonra servoyu hareket ettirecek kodu yazamadım malesef .

  39. Merhaba,
    Bir soru sormak istiyorum. Sistemimde Aktüatör kullanmak istiyorum.
    “24 V DC 100 mm Lineer Aktüatör” Arduino ile servo motor kontrolünde olduğu gibi kontroll etmek istiyorum. Sitenizde satılan Aktüatör ün giriş kablolarını göremedim ama genel olarak 2 tane kablo girişi mevcut “volt” ve “ground”. Bunu Arduino ile kontrol edebilir miyim ? ve bunun için herhangi bir shield var mı bildiğiniz ?
    Yardımlarınız için şimdiden teşekkür ederim.
    Kolay gelsin ve iyi çalışmalar.

    • Lineer aktüatörün çalıştığı gerilim ve akımı karşılayabilecek bir motor sürücü kartı veya shield’ı kullanabilirsiniz.

  40. hocam sağol verdiğin cevap için ancak şöyleki
    myservo.write(360);
    delay(15);
    servo ya bu komutu verdikten sonra myservo.write(0); bu kodu nereye nasıl yazmalıyım ki servo dursun ?
    ayrıca bu komutu yazdığım zaman servo yu ters yöne döndüremiyorum.
    veya bu 360 derece servo için mesela 10 sn dönüp sonra durması için nasıl birsey yazmalıyım yardımcı olurmusunuz rica etsem.

    • myservo.write() komutunu 360 derece parametresiyle kullanamazsınız. 180 derece vermeyi deneyin. 10 sn dönüp sonra durması için de

      myservo.write(180);
      delay(10);
      myservo.write(0);

      komutlarını kullanabilirsiniz.

  41. merhaba benim lise son proje ödevi olarak servo motorlu şifreli kapı kilidi uygulaması yapacagız uygulamanın program yazma kısmı bitti ama bana bunun devresini board üzerinde yapamadım bana yardımcı olurmusunuz

    • Arduino’dan gelen sinyal pinini servonun sarı ya da beyaz renkli kablosuna, 5V gerilimi kırmızı renkli kablosuna, GND pinlerinden herhangi birini de siyah renkli kablosuna takmanız gereklidir.

  42. hocam işe yaramadı bu kodu kullanırken servo 10 sn sonra sekiyor ve aynı yöne tekrar dönüyor neden böyle olduğu hakkında fikriniz nedir?

  43. Ben potansiyometre ile ayarlanan hareketleri kayıt eden 2 eksenli bir robot kol yapmayı düşünüyorum.
    Tek potansiyometre kullanarak bunu yapmak istiyorum ama başarısız oldum.

    projenin orijinali;https://create.arduino.cc/projecthub/ChanR19/simple-programmable-robotic-arm-bd28a0?f=
    kodum;

    #include

    Servo servo1; //Servos
    Servo servo2;

    const int LED1 = 2; //LEDs
    const int LED2 = 3;
    const int LED3 = 4;
    const int LED4 = 7;
    const int LED5 = 8;

    const int button1 = 12; //Buttons
    const int button2 = 13;

    int button1Presses = 0; //Button values
    boolean button2Pressed = false;

    const int pot1 = A0; //Potentimeters
    const int pot2 = A1;

    int pot1Val; //Potentimeter values
    int pot2Val;

    int pot1Angle;
    int pot2Angle;

    int servo1PosSaves[] = {1,1,1,1,1};
    int servo2PosSaves[] = {1,1,1,1,1};

    void setup() {
    servo1.attach(5);
    servo2.attach(6);

    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
    pinMode(LED4, OUTPUT);
    pinMode(LED5, OUTPUT);
    pinMode(button1, INPUT);
    pinMode(button2, INPUT);

    Serial.begin(9600);
    }

    void loop() {

    pot1Val = analogRead(pot1); .
    pot1Angle = map(pot1Val, 0, 1023, 0, 179);
    pot2Val = analogRead(pot2);
    pot2Angle = map(pot2Val, 0, 1023, 0, 179);

    servo1.write(pot1Angle);
    servo2.write(pot2Angle);

    if(digitalRead(button1) == HIGH){ // This will check how many times button1 is pressed and save the positions to an array depending on how many times it is pressed; switch/case works like a if statement
    button1Presses++;
    switch(button1Presses){
    case 1:
    servo1PosSaves[0] = pot1Angle;
    servo2PosSaves[0] = pot2Angle;

    digitalWrite(LED1, HIGH);
    Serial.println(“Pos 1 Saved”);
    break;
    case 2:
    servo1PosSaves[1] = pot1Angle;
    servo2PosSaves[1] = pot2Angle;

    digitalWrite(LED2, HIGH);
    Serial.println(“Pos 2 Saved”);
    break;
    case 3:
    servo1PosSaves[2] = pot1Angle;
    servo2PosSaves[2] = pot2Angle;

    digitalWrite(LED3, HIGH);
    Serial.println(“Pos 3 Saved”);
    break;
    case 4:
    servo1PosSaves[3] = pot1Angle;
    servo2PosSaves[3] = pot2Angle;

    digitalWrite(LED4, HIGH);
    Serial.println(“Pos 4 Saved”);
    break;
    case 5:
    servo1PosSaves[4] = pot1Angle;
    servo2PosSaves[4] = pot2Angle;

    digitalWrite(LED5, HIGH);
    Serial.println(“Pos 5 Saved”);
    break;
    }
    }

    if(digitalRead(button2) == HIGH){ // Pretty self-explnatory here
    button2Pressed = true;
    }

    if(button2Pressed){ // if the boolean button2Press is true, then the servos will run though all their saved positions
    for(int i = 0; i < 5; i++){
    servo1.write(servo1PosSaves[i]);
    servo2.write(servo2PosSaves[i]);

    Serial.println(" potentimeter Angles: ");
    Serial.println(servo1PosSaves[i]);
    Serial.println(servo2PosSaves[i]);

    delay(1050);
    }
    }
    delay(300);
    }

    • Yazıda da anlattığımız gibi,

      Uygun koda Arduino programından

      Dosya > Örnekler > Servo > Sweep

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

  44. Bir sorum var ben bir proje yaptım fakat servo motor sg90 olanlarından 180 derece döne bilirken benimki 360 derece dönüyor ce tek yön saat yönünde sizce bozulmuş mu ?

  45. merhaba, arduino ile çalışmak istiyırum fakat programı bilgisayarıma indirdiğimde kod yazamıyorum, program hiçbir şey yapmama izin vermiyor. Bu sorunu nasıl çözerim?

  46. Merhaba
    Nrf24l01 ile servo motor surmek istiyorum
    Alici devre sinde sg90
    Verici devresinde 10k pot kullanıyorum fakat
    Potansiyometre yi bi yerden sonra cevirince servo motor calismiyor
    Bu arada bilgisayar uzerinden besliyorum arduino lari

    • Sorununuz yazılımsal gibi görünüyor, ayrıca harici bir 5V güç kaynağı ile beslemeyi de deneyebilirsiniz. USB üzerinden gelen akım yetersiz kalıyor olabilir.

  47. Merhaba elimde sg90 servo motor var.Basit robot kol denemesi yapıyorum ama butona basılınca servonun açı değerinin artmasını yapamıyorum yardımcı olabilir misiniz?

  48. Merhabalar. Elimde hediye gelmiş olan 5 mg996r servo motor bulunan bir robot kolu bulunmaktadır.
    5 ini birden arduinoya bağlayıp çalıştırdığım zaman bir kaç defa kod ile çalıştırabiliyorum daha sonrasında kendi kendine sapıtıyor ve arduinonun kablosunu çekmek zorunda kalıyorum. Bunları yaparken farkettimki arduino nun üzerindeki 50bY yazan bir modül çok ısınıyor. İnternette biraz araştırdım ve sanırsam regülator. Direk kablo bağlantısı yaptığımdan dolayı nasıl o kadar ısındığını anlayamadım yardımcı olursanız sevinirim.

  49. Merhaba,
    Ben bitirme projemde sürekli dönebilen servo motorları yaylara bağladım ve gerekli if koşulu sağlandığında bu yaylar belli ürünler düşürecek ama benim servo motorum sürekli dönüyor bir ürün düşürmesi gerekirken durmadığı için bütün ürünler düşüyor ve ben motorları hiç bir şekilde durduramıyorum
    for(int i=0;i<=180;i++)
    {
    servo1. write(i) ;
    delay(15);
    servo1. write(0);
    delay(15);

    }
    Bu şekilde yazdım ama hiç bir sekilde durmuyor loop sadece bir kere çalışsın diye while(1); bile kullandım, arduino konusunda çok yeni olduğum için yanlışın nerde olduğunu anlayamıyorum bir yorumda dönüş süresine bakın bir tur için sonrada kaç tur dönmesini istiyorsanız o sayıyla çarpıp delay e ekleyin o süre kadar bekler, (bir turunu 0.84 saniyede tamamlıyor yaklaşık olarak) 0.84 saniye kısa bir süre delay in içine çok büyük sayılarda yazdım , servo motorlar mı bozuk yoksa ben bir seyi yanlış mı yapıyorum durmuyor bu motorlar, sadece bir kere if komutu sağlanıyorsa mesela 2 saniye çalışışsın ve dursun bana örnek bir kod gösterip yada nasıl yapacağımı anlatırsanız çok sevinirim…

  50. Hallettim teşekürler ama ardiuno kabloyu cıkarıp takınca calısıyor sadece yada cok gec calısıyor hangı kodu degıstırmlıyım 5snde bir çalıssın istiyorum

  51. merhaba ben doğrusal bir hareketi kaydedip servoda aynı hareketi tekrar etmesi için kaydetmek istiyorum bunun için ne yapmam gerekiyor. (örnek: tornada x çapta bir şey çıkaracağım. önce onun çapını tarayıp sonra tornada aynı şekli çıkaracağım :))

  52. ben asma kilit ile bir kutu kapağını açtıracağım. yalnız kutu tavana monte ve kapak aşağı doğru açmasını planlıyorum, kapak üzerinde 1,5- 2 kg ağırlığında malzeme var. nasıl bir servo motor tercih etmeliyim.

  53. Merhaba elimde FS5106R motor var ve bu motor sürekli dönüyor arduino örneklerdeki kodu (180 e git gel ) yüklememe rağmen sadece ileri doğru dönüyor. Açı değerlerini değiştirince de sadece hızı değişiyor. Ben bu motoru belirli açı değerlerinde nasıl değiştiririm?

  54. Merhaba,
    Potansiyometre kullanarak servonun konumunu belirliyorum, EEPROM ile servo konumunu 1.Butona basarak kaydedip 2.Butona basarak kaydettiğim konuma dönüyorum. Burda 1.konum ile 2. konum arasındaki hızı 2.bir potansiyometre ile nasıl belirlerim. Yardımcı olursanız sevinirim.

    #include
    #include

    Servo sg90;

    const byte pot_pin = A1;
    int pot_speed = A2;
    int pozisyon ;

    int pot_deger;

    int butonPin = 2;
    int butonPin2 = 3;
    int butonPin3 = 5;
    int butonDurum = 0;
    int butonDurum2 = 0;
    int butonDurum3 = 0;
    int a;
    int c;
    void setup() {
    sg90.attach(4);
    Serial.begin(9600);
    pinMode(butonPin, INPUT);
    pinMode(butonPin2, INPUT);
    pinMode(butonPin3, INPUT);
    }

    void loop() {
    butonDurum = digitalRead(butonPin);
    butonDurum2 = digitalRead(butonPin2);
    pozisyon = map(analogRead(pot_speed), 0, 1023, 0, 181);

    pot_deger = map(analogRead(pot_pin), 0, 1023, 0, 181);
    sg90.write(pot_deger);
    delay(50);
    Serial.println(pot_deger);

    if (butonDurum == HIGH) {
    EEPROM.write(a, pot_deger);
    }

    if (butonDurum2 == HIGH) {
    while(1){
    c = EEPROM.read(a) ;

    sg90.write(c);
    Serial.println(c);
    butonDurum3 = digitalRead(butonPin3);
    if (butonDurum3 == HIGH){

    break;
    }
    }
    }
    }

  55. Merhabalar benim bir projem var. RFID kullanarak servo motor döndürmek istiyorum ancak servo motoru RFID okunduktan sonra 45 derece döndürüp ,tekrar RFID okunana kadar beklemesini istiyorum. RFID 2. defa okunduğunda, kaldığı yerden devam edip bir 45 derece daha dönmesini istiyorum ancak bu olayı çözemedim. Yardımcı olursanız sevinirim.

  56. Ben bu projeyi VNH2SP30 14A calıştıra bilirmiyim peki 12v silecek motorlarında yardımvı olursanız size mşnnetterkar kalacagım saygılar…

    • VNH2SP30 sürücüsü standart bir DC motor sürücü kartıdır. Malesef servo kütüphanesi ile bu sürücü kartı kullanamazsınız.

  57. Mikro servo motor ile bıldırcın kuluçka makinası yaptım. Servo motoru kapatıp yeniden açtığımda servo başlangıç konumuna hızla gidiyor ve yumurtaları savuruyor. Servonun en son kaldığı yerden başlamasını sağlayabilirmiyim? Ya da kapattığımda beslemeyi hemen kesmesin, servo başlangıç konumuna yavaşça gitsin ve orada beslemeyi kessin. Böyle bir şey mümkün mü acaba? Saygılar.

  58. Benim bir sorum var.Servo motorlarlarını 150 dereceye çekip sonra bir tuşa basıp 180 dereceye çevirmek istiyorum bunu nasıl yapabilirim ?

  59. Merhaba Kerem bey
    Birinc sorum robotik kolda İlk 3 eksen için 360 derece mi 180 derece mi servo iyi olur
    İkinci sorum gripper yakaladığı anda LED yanması işlemi nasıl yapılabilir teşekkürler

  60. Merhaba benim bir sorum olacak. bitirme projemde arduinolarda kullanılan atmega328p-pu işlemcisi ile atmel studio üzerinden robot kol yapmam gerekiyor bu konuda yardımcı olabilecek arkadaş var mı

  61. Merhabalar 4 servo 4 pot ile robot kol yapıyorum potların 4ünüde bağladığımda herhangi bir tepki vermiyor fakat tek veya 2 tane bağladigimda çalışıyor sorun ne olabilir

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz