17
Bu yazıyı " < 1 " dakikadan kısa bir zamanda okuyabilirsiniz. 🙂

Merhabalar bu yazıda potansiyometre ile servo motor kontrolü uygulaması yapacağız. Potansiyometre’nin kullanımı ve çalışma prensibini hakkında daha önce #6 Potansiyometre ile LED Parlaklığını Ayarlamak yazısında detaylı bir şekilde ele almıştık. İlk yazılarda detaylı bir şekilde açıklamalarla ilerlerken sonraki yazılarda daha çok sensör ve modül uygulaması gerçekleştirmek adına direk uygulamaya geçeceğim. Dilerseniz Arduino kategorisinden diğer yazıları da inceleyebilirsiniz.

Potansiyometre İle Servo Motor Kontrolü Uygulaması

Gerekli Malzemeler

  • Arduino Uno
  • Breadboard
  • Potansiyometre
  • Servo Motor
  • Erkek – Erkek Jumper Kablolar
Potansiyometre İle Servo Motor Kontrolü Devresi

Kodlamaya Geçelim

Öcelikle servo kütüphanesini projemize import ediyoruz ve potansiyometreyi bağlayacağımız A0 pinine bir değişken atıyoruz. Servo motoru kütüphanesini çağırabilmek için servoM nesnesini oluşturuyoruz.

#include <Servo.h> 
int potPin = A0; 
Servo servoM;

setup içerisinde program çalıştığında ilk tanılamayı gerçekleştirebilmesi için Servo motoru 9 nolu pin’e bağladığımızı belirtiyoruz.

void setup() {
  servoM.attach(9); 
}
  • Potansiyometreden gelen değeri analogRead komutu ile okuyup pos değişkenine atıyoruz.
  • potansiyometreden gelen değerimiz 0 ile 1023 arasında olacağı için servo motorumuzun 0 ile 180 derece arasındaki açı değerine eşlememiz gerekiyordu. bunun için de map fonksiyonu kullanarak gelen değeri 0 ile 180 değeri arasında bir değere eşliyoruz.
  • Servo açı değeri olarak belirlediğimiz pos değişkenini servoya yazdırdık.
  • Servonun hedeflenen açıya gidebilmesi için 15 ms bekleme ekledik.
void loop() {
  pos = analogRead(potPin);
  pos = map(pos 

buy kamagra

, 0, 1023, 0, 180); servoM.write(pos); delay(15); // }

Potansiyometre İle Servo Motor Kontrolü Uygulaması Kodların Tamamı

#include <Servo.h>  
int potPin = A0; 
Servo servoM;  
int pos = 0;   

void setup() {
  servoM.attach(9);  
}

void loop() {
  pos = analogRead(potPin);
  pos = map(pos, 0, 1023, 0, 180);
  servoM.write(pos);              
  delay(15);    
}

Arduino’ya kodları nasıl yükleyeceğiniz konusunda bilgi almak için #2 – Arduino IDE Kurulumu ve Yapılandırma yazısını inceleyebilirsiniz.

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. :)

    #7 Arduino İle Servo Motor Kontrolü

    önceki yazı

    Twister OS ile Raspberry Pi’nizi Mac veya PC’ye Çevirin

    Sonraki Yazı

    Bu Yazılar da İlgini Çekebilir!

    17 Yorumlar

    1. hocam arduınoya bağlanmış değişken bir çıkışlı bir ürünü görsel olarak görmek istiyorum acaba bunu arduınoda nasıl yaparım?

      1. Merhabalar, serial port üzerinden gönderdiğin değeri grafik olarak mı göstermek istiyorsun? Tam olarak anlamadım.

    2. hocam bunu 2 potansiyometre ile 2 servo motoru kontrol ettirmek istersek kodları nasıl olmalıdır

      1. Basitçe şöyle bir kod kullanabilirsiniz. A1 pinine 2. Potansiyometreyi, 6. Dijital pine de 2. Servoyu bağlandığınız varsayıyorum.
        #include
        int potPin = A0;
        int potPin2 = A1;
        Servo servoM;
        Servo servoM2;
        int pos = 0;
        int pos2 = 0;

        void setup() {
        servoM.attach(9);
        servoM2.attach(6);
        }

        void loop() {
        pos = analogRead(potPin);
        pos = map(pos, 0, 1023, 0, 180);
        servoM.write(pos);
        pos2 = analogRead(potPin2);
        pos2 = map(pos2, 0, 1023, 0, 180);
        servoM2.write(pos2);
        delay(15);
        }

        1. allah razı olsun yarım saatir forum forum dolaşıyorum teşekkür edrim

    3. lütfen birde 5 servolu halini yapar mısınız

    4. Merhaba hocam, bu projeyi yapacağım da aklımda bir kaç soru var, bu projenin amacı ne, ve gerçek hayatta kullanılacak olsa nasıl kullanılır , konu ve kapsamı nedir bu projenin amacı için yardımcı olursanız sevinirim teşekkür ederim.

      1. potansiyometreyi bir düzenekle koluna bağlarsın.sen sola çevirince servo sola,sen sağa çevirince servo sağa çevirir.yani servolu robot kol seni taklit eder.uzaktan ameliyat larda kullanılan sistemle aynı

    5. Merhaba Ahmet bey, servo motorun dönüş hızını düşürmek için nasıl bir kod eklememiz lazım.

      1. for döngüsüyle delay değiştirince o açıya yavaş gelir.direk açıyı verirseniz kendi hızında gider.

      2. 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(300); // servonun hedeflenen açıya gidebilmesi için 15 ms bekleme ekledik.
        }

    6. İyi günler hocam. Potansiyometre ile servi motor kontrol edeceğim ancak potansiyometre tam tur atmayacak motor da 180’ dönmeyecek. Yani potansiyometre üçlerinde 110^ ilk bir dönüş için servomotor 110^ derece dönüş yapacak. Kodlar üzerinde bunu nasıl düzenleyebilirim.aracım traktör üzerinde mekanik bir kontrolü elektromekanik kontrole çevirmek. Teşekkür ederim.

      1. Merhaba,

        Potansiyometre ile servo motor kontrolü yapmak için genellikle potansiyometreden okunan değeri servo motorun açısı ile ilişkilendiren bir kod yazılır. Ancak, sizin durumunuzda potansiyometrenin tam tur atmayacak ve servo motorun da tam tur atmayacak olması nedeniyle biraz farklı bir yaklaşım gerekebilir.

        Öncelikle, potansiyometreden okunan değerin servo motorun açısını doğrudan belirlemesi yerine, aradaki ilişkiyi bir dönüşüm fonksiyonu ile belirleyebilirsiniz. Bu dönüşüm fonksiyonu, potansiyometrenin okuduğu değere göre servo motorun hangi açıda duracağını belirler.

        Ayrıca, servo motorun tam tur atmayacağı durumda, servo motorun dönüş aralığını 0-180 derece yerine 0-110 derece aralığına sınırlamak gerekebilir. Bunun için de servo motorun dönüş açısını sınırlandıran bir kod yazmanız gerekebilir.

        Aşağıdaki örnek kodlarda, potansiyometrenin okuduğu değer 0-1023 aralığında olduğu varsayılarak, bu değeri servo motorun dönüş açısı ile ilişkilendirerek servo motorun dönüş aralığı 0-110 dereceye sınırlandırılmıştır:

        “`
        #include

        Servo servoMotor;
        int servoPin = 9;
        int potPin = A0;

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

        void loop() {
        int potValue = analogRead(potPin); // Potansiyometreden okunan değer
        int servoAngle = map(potValue, 0, 1023, 0, 110); // Servo açısı
        servoMotor.write(servoAngle); // Servo motoru kontrol etmek için açıyı yaz
        }
        “`

        Bu örnekte, potansiyometreden okunan değer “potValue” değişkeni ile alınır ve “map” fonksiyonu ile 0-1023 aralığındaki değer, 0-110 aralığındaki bir açıya dönüştürülür. Daha sonra, “write” fonksiyonu ile servo motorun açısı belirlenir ve servo motor kontrol edilir.

        Bu örnekte kullanılan “map” fonksiyonu, girdi değeri ile çıktı değeri arasındaki bir dönüşüm işlemini yapar. Bu işlemde, potansiyometreden okunan değer 0-1023 aralığından 0-110 aralığına dönüştürülür. Eğer potansiyometrenin okuduğu değer farklı bir aralıkta ise, “map” fonksiyonunun girdi ve çıktı aralıklarını buna göre ayarlayabilirsiniz.

        Umarım yardımcı olabilmişimdir. İyi çalışmalar dilerim!

    7. Ahmet Kemal Bey, merhaba,

      Paylaşımınız için teşekkürler. Potansiyometrenin kaç Ohm olacağı önemli değil midir ?

      1. Merhabalar, teşekkürler Engin hocam. 10k Ohm veya 100k Ohm değerlerine sahip bir potansiyometre kullanmanız hızlı tepki alabilmeniz için yeterli olacaktır.

    8. hocam merhaba
      uzunluk genislik ve açi gibi durumlarda ne yapmam gerekiyor.
      örnek 1 metre ip kesmek istiyorum bunun icin ne yapmam gerekiyor.
      toplam 3 servo motor kullanacagim.
      adim , büküm ve sekil verme Z

      1. Malzemeleri Hazırlayın:

        Arduino kartı
        3 servo motor
        Potansiyometre (ip kesme uzunluğunu ayarlamak için)
        Kesici veya bıçak
        Servo motorlar için güç kaynağı
        Jumper kabloları
        Breadboard veya devre kartı
        Servo Motorları Bağlayın:
        Her servo motoru Arduino’ya bağlamak için potansiyometreleri kullanabilirsiniz. Servo motorların kontrol sinyallerini Arduino’ya bağlayın ve potansiyometrelerle servo motorların açılarını ayarlayın. Potansiyometrelerin çıkışlarını Arduino’nun analog girişlerine bağlayarak servo motorların konumunu ayarlayabilirsiniz.

        Arduino Kodunu Yazın:
        Arduino IDE kullanarak servo motorları kontrol etmek için bir program yazmalısınız. Bu program, her servo motorun açısını potansiyometrelerin değerlerine göre ayarlamalıdır. Ayrıca, ip kesme işlemini gerçekleştirecek servo motorun açısını belirlemelisiniz.
        Örnek olarak;
        Arduino ile 3 servo motor kullanarak bir ip kesme cihazı yapmak için geliştirebileceğiniz bir kod:

        #include Servo.h

        Servo servo1;
        Servo servo2;
        Servo servo3;

        int pot1Pin = A0; // Potansiyometre 1 için analog pin
        int pot2Pin = A1; // Potansiyometre 2 için analog pin
        int pot3Pin = A2; // Potansiyometre 3 için analog pin

        void setup() {
        servo1.attach(9); // Servo 1'i dijital pin 9'a bağlayın
        servo2.attach(10); // Servo 2'yi dijital pin 10'a bağlayın
        servo3.attach(11); // Servo 3'ü dijital pin 11'e bağlayın
        }

        void loop() {
        int angle1 = map(analogRead(pot1Pin), 0, 1023, 0, 180); // Potansiyometre 1'den gelen değeri açıya dönüştürün
        int angle2 = map(analogRead(pot2Pin), 0, 1023, 0, 180); // Potansiyometre 2'den gelen değeri açıya dönüştürün
        int angle3 = map(analogRead(pot3Pin), 0, 1023, 0, 180); // Potansiyometre 3'ten gelen değeri açıya dönüştürün

        servo1.write(angle1); // Servo 1'i belirtilen açıya ayarlayın
        servo2.write(angle2); // Servo 2'yi belirtilen açıya ayarlayın
        servo3.write(angle3); // Servo 3'ü belirtilen açıya ayarlayın

        delay(15); // Servo motorların tepki vermesi için bir gecikme ekleyin

        // İp kesme işlemi için servo 3'ü belirli bir açıda kullanabilirsiniz
        if (angle3 >= 90) {
        // İp kesme işlemi burada gerçekleştirilebilir, örneğin bir bıçak kullanarak
        }
        }

        Bu kod, üç servo motorun açılarını potansiyometrelerin değerlerine göre ayarlar. Servo 3, belirli bir açıya geldiğinde (örneğin 90 derece), ip kesme işlemi gerçekleştirilmesi gerektiği yerdir. İp kesme mekanizması, servo 3’ün belirli bir açıda olduğunda aktif hale getirilir.

        Dikkatli olun ve güvenlik önlemlerini unutmayın. İp kesme işlemi için uygun bir mekanizma kullanmalısınız.

        Bu kod, 3 servo motor kullanır ve her bir servo motorun açısını bir potansiyometre kullanarak ayarlar. İp kesme işlemi, belirli bir açıda olan bir servo motor tarafından gerçekleştirilir.

        Güvenlik Önlemleri Alın:
        Servo motorlarla çalışırken güvenlik önlemlerini göz ardı etmemelisiniz. Kesici veya bıçak kullanırken dikkatli olmalı ve yakınında bulunan kişilerin güvende olduğundan emin olmalısınız.

        Test ve Ayarlamaları Yapın:
        Programı yükledikten sonra servo motorların düzgün çalıştığından emin olun. Potansiyometreleri kullanarak ipin kesilme uzunluğunu ve servo motorların açılarını ayarlayabilirsiniz. Kesme işlemi öncesinde dikkatli bir şekilde ayar yapmalısınız.

        İp Kesme İşlemi:
        Servo motorların açılarına ve ayarlamalarınıza göre ip kesme işlemini gerçekleştirin. Servo motorlar, belirlediğiniz açıda çalışarak ipi kesmelidir.

        Bu işlemi gerçekleştirmek için kodlama, elektronik bağlantılar ve güvenlik önlemleri gereklidir. Her adımı dikkatlice planlayın ve işlem sırasında dikkatli olun. İp kesme işlemini gerçekleştirirken keskin nesneleri güvenli bir şekilde kullanmalı ve çevrenizdeki kişilere dikkat etmelisiniz.

    Yorum yap

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

    Daha Arduino