Merhaba arkadaşlar ,bu yazımda arduino ile step motor kullanımını göstereceğim. Step motor hakkında daha detaylı bilgiye ulaşmak için daha önce yazmış olduğumuz bu yazımıza bakabilirsiniz.

Malzeme Listesi

Devre Şeması

   Devre şeması aşağıdadır ve oldukça basittir. Ben breadboard kullanmadan yaptım. Siz kullanabilirsiniz veya kullanmadan da yapabilirsiniz. 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.

Arduino ile Step Motor Kullanımı Kodları

   Kodlara aşağıdan ulaşabilirsiniz. Kodların kısaca açıklamaları yan taraflarında verilmiştir. Sure adında bir değişkenimiz var ve bu değişkenle motor her bir adım attığında ne kadar süre beklemesi gerektiğini ayarlıyoruz. Süreyi azaltmanızı tavsiye etmem ama arttırarak step motorun daha yavaş çalışmasını sağlayabilirsiniz. Define komutu ile motor sürücü kartındaki girişlerin arduinoda hangi pinlere bağlı olduğu tanımlanmıştır. Setup kısmında bu pinler output yani çıkış olarak tanımlanmıştır.

    Loop kısmında 2 adet yazmış olduğum fonksiyonları çalıştırıyoruz. Bu fonksiyonlara parametre olarak verdiğimiz kadar adim sayısı ile motoru çalıştırıyor. Birisi saat yönünde diğeri ise saatin dönme yönünün tersinde o kadar adım attırıyor. 512 Adım 360 dereceye denk gelmektedir. Loop kısmında kısaca 360 derece saat yönünde hareket ediyor daha sonra 1 saniye bekliyor ve saatin tersi yönünde 360 derece hareket yapıyordur. Kodumuz bu şekilde sonsuza dek devam ediyordur.

    Saat yönü ve saatin ters yönü adındaki fonksiyonlarımız parametre alıyordur. Bu parametreye göre adım atıyordur. Mesela 256 adım attırırsak 180 derecelik bir hareket yapmış olur. For döngüsünün içindeki kodlar 256 kez çalışmış olur. Motor sürücü devresindeki IN girişlerine verilen enerjinin yönüne göre motor saat veya ters yönde adım atmaktadır.

    Motoru hareket ettirme kodlarını kendim yazdım. Siz isterseniz daha farklı olarak step motor kütüphanelerini kullanarak da step motorunuzu kontrol edebilirsiniz. Mantığını anlamak için bu şekilde yazmak bence daha mantıklı.

    Not: Kullandığımız step motor aslında 2048 adım atınca 360 derece dönmektedir. Bizim yazdığımız kodda for döngüsünde 4 adet aşama olduğu için aslında 1 kere çalışınca 4 adım atıyor gibi düşünebiliriz. Biz 1 adım attırdığımızda 4 kere ufak hareket yaptığı ve farklı girişlere voltaj verip kestiği için 512 adım atınca tam tur oluyor. Yani kısaca 512 adım attırınca her adımda 4 kez hareket ediyor ve çarpınca 2048 adım elde ediyoruz. 

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);
  }
}

Uygulama Videosu

Step motor kullanımı uygulamamız hakkında merak ettiklerinizi veya anlamadığınız şeyleri yorum olarak sorabilirsiniz. İyi çalışmalar dilerim 🙂

CEVAP VER

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