📅 12 Nisan 2026, Pazar
📚 Ders Kitapları ✉ İletişim
@ydiner.gen.tr İlköğretim & Lise Düzeyi Kaynak Site "Bilgi paylaştıkça çoğalır"
🏠 Ana Sayfa
  • 🧊 3D Tasarım
  • Animasyon
  • ⚡ Arduino
  • 📌 Genel
  • 🎨 Grafik
  • Pardus
  • 💻 Programlama
  • Robotik ve Kodlama
  • 🗄️ SQL
  • 🌐 Web Tasarım
  • 🤖 Yapay Zeka
  • Arduino

    Arduino İle Step Motor Kullanımı

    Devre şeması aşağıdadır.  Motor sürücüdeki 4 adet IN girişini arduinoda 8 9 10 11 pinlerine aşağıdaki görüldüğü gibi bağlıyoruz. Daha sonra besleme için GND ve VCC bağlantılarını yapmamız gerekiyor. Kırmızı kablo VCC(+5V) , mavi kablo ise GND(-)’yi temsil etmektedir.

    Step motorlar, hassas hareket gerektiren projelerde sıkça kullanılan motor türlerindendir. CNC makineleri, 3D yazıcılar, robot kolları gibi birçok uygulamada karşımıza çıkar. Bu yazıda, Arduino kullanarak step motor sürmeyi öğreneceğiz.

    Step Motor Nedir?

    Step motorlar, elektrik sinyalleriyle adım adım hareket eden motorlardır. Diğer motor türlerinden farklı olarak, belirli bir açısal hassasiyetle dönebilirler. Bu özellikleri sayesinde pozisyon kontrolü gerektiren sistemlerde tercih edilirler.

    Step Motor Çeşitleri

    Unipolar Step Motorlar: Tek yönlü akım ile çalışan motorlardır. Daha basit sürücülerle kontrol edilebilirler.

    Bipolar Step Motorlar: İki yönlü akım gerektiren motorlardır. Daha güçlüdürler ancak sürülmesi daha karmaşıktır.

    Arduino ile Step Motor Kontrolü

    Arduino ile step motor kontrolü için genellikle ULN2003 veya A4988 gibi sürücü devreleri kullanılır. Bu devreler, motorun Bobinlerine doğru voltajı sağlayarak hareketi kontrol eder.

    Gerekli Malzemeler

    Arduino (Uno, Mega veya başka bir model)

    28BYJ-48 Step motor

    ULN2003 sürücü kartı

    Jumper kablolar

    5V güç kaynağı (USB veya adaptör)

    Bağlantılar

    Step motoru ve sürücüyü Arduino’ya bağlamak için aşağıdaki adımları takip edebilirsiniz:

    ULN2003

    Arduino

    IN1-8

    IN2-9

    IN3-10

    IN4-11

    VCC-5V

    GND-GND

    Arduino Kodu

    Aşağıdaki kod, step motorun ileri ve geri hareket etmesini sağlar:

    #include <Stepper.h>
    
    #define STEPS 2048 // Motorun tam tur için adım sayısı
    Stepper stepMotor(STEPS, 8, 10, 9, 11);
    
    void setup() {
        stepMotor.setSpeed(10); // Motorun hızını belirleyin (RPM cinsinden)
        Serial.begin(9600);
    }
    
    void loop() {
        Serial.println("İleri dönüyor...");
        stepMotor.step(2048); // 1 tam tur ileri
        delay(1000);
        
        Serial.println("Geri dönüyor...");
        stepMotor.step(-2048); // 1 tam tur geri
        delay(1000);
    }
    

    Sonuç

    Bu yazıda, Arduino ile step motorun nasıl sürüleceğini öğrendik. Daha karmaşık projelerde hız ve konum kontrolü için DRV8825 veya A4988 gibi daha gelişmiş sürücüler kullanılabilir. Umarım bu bilgiler projelerinizde faydalı olur!

    int sure = 3; //Her adımda bekleme süresi
    #define IN1 11 //Motor
    #define IN2 10 //Sürücü
    #define IN3 9  //Pin
    #define IN4 8  //Bağlantıları
    void setup() {
      pinMode(IN1, OUTPUT); //Pinleri
      pinMode(IN2, OUTPUT); //Çıkış
      pinMode(IN3, OUTPUT); //Olarak
      pinMode(IN4, OUTPUT); //Tanımladık
    }
    void loop() {
      // 512 Adım Tam Tur 360 Derecedir.
      SaatYonu(512); //Saat Yönü 512 Adım
      delay(1000);
      SaatTersYonu(512);//Saat Ters Yönü 512 Adım
      delay(1000);
    }
    void SaatYonu(int adimSayisi) {
      for (int i = 0; i < adimSayisi; i++) {
        digitalWrite(IN4, HIGH);
        delay(sure);
        digitalWrite(IN4, LOW);
        digitalWrite(IN3, HIGH);
        delay(sure);
        digitalWrite(IN3, LOW);
        digitalWrite(IN2, HIGH);
        delay(sure);
        digitalWrite(IN2, LOW);
        digitalWrite(IN1, HIGH);
        delay(sure);
        digitalWrite(IN1, LOW);
      }
    }
    void SaatTersYonu(int adimSayisi) {
      for (int i = 0; i < adimSayisi; i++) {
        digitalWrite(IN1, HIGH);
        delay(sure);
        digitalWrite(IN1, LOW);
        digitalWrite(IN2, HIGH);
        delay(sure);
        digitalWrite(IN2, LOW);
        digitalWrite(IN3, HIGH);
        delay(sure);
        digitalWrite(IN3, LOW);
        digitalWrite(IN4, HIGH);
        delay(sure);
        digitalWrite(IN4, LOW);
      }
    }