30 Ocak 2017 Pazartesi

ARDUINO UNO VE A4983 İLE STEP MOTOR KONTROLÜ

Bu projemizde 12V 330mA'lik bir bipolar step motoru A4983 step motor sürücü kullanarak kontrol edeceğiz. Kontrol ederken motor yönü için iki adet buton kullanacağız. Kısaca sistemin yapacağı butona basılı tutuldukça motoru döndürmek olacak. Diğer butona basıldığında da motor diğer yöne dönecek. Basit şekilde A4983 bağlantılarına bakacak olursak,


VMOT ve GND pinleri motor besleme pinleridir. Bizim motorumuz 12V olduğu için besleme olarak 12V kullanacağız. Motor çıkışları 1A,1B,2A,2B şeklinde gösterilmiş. Aşağıdaki şekil ile karşılaştıracak olursa ;
1A --> Faz A Kırmızı Kablo
1B --> Faz C Yeşil Kablo
2A --> Faz B Sarı Kablo
2B --> Faz D Mavi Kabloya bağlanacak.

Motor kablolarının altındaki GND pini de Arduino GND pinine bağlamamız gerekiyor. Bu şekilde Arduino, Motor Sürücü ve Besleme Kaynağı arasındaki GND birleştirmesi oluşmuş olacak. Bu motor sürücü üzerinde regülatör olduğundan A4983 ve Arduino için gerekli olan 5V beslemeyi motor sürücüden alabiliriz. Bununu için aşağıdaki resimde bulunan 5V besleme jumper'ını kısa devre etmemiz gerekiyor.


Şekildeki gibi kartın sol üst köşesindeki GND ve 5V pinlerini Arduino'nun 5V ve GND pinlerine bağlayarak Arduino için gerekli beslemeyi de sağlamış olduk. Enable pinini Arduino UNO'nun dijital 4. pinine, STEP pinini dijital 3. pine, DIR pinini de dijital 2. pine bağladıktan sonra motorumuzu sürmek için gerekli bağlantıları tamamlamış olduk. Micro step adımlama kullanmak isteyenler bu pinleri de dijital pinlere bağlamalılar. Motor kontrol için kullanacağımız iki adet butonu da Arduino UNO'nun dijital 7 ve 8. pinlerine bağlayarak bağlantılarımızı bitirmiş olduk.


Arduino Kodu : 

int yon = 2;  // DIR
int ste = 3; // STEP
int en = 4; // ENABLE
int button_up = 7; // BUTTON 1
int button_down = 8; // BUTTON 2

void setup(){
  pinMode(en,OUTPUT);
  pinMode(yon,OUTPUT);
  pinMode(ste,OUTPUT);
  pinMode(button_up,INPUT);
  pinMode(button_down,INPUT);
  digitalWrite(en,LOW); // ENABLE PINI LOW AKTIF
}

void loop(){
  // BUTTON 1 E BASILI TUTULDUGU SURECE ILERI DOGRU DON
  if(digitalRead(button_up) == HIGH){
    delay(50);
    if(digitalRead(button_up) == HIGH){
      digitalWrite(yon,HIGH);  // YON ILERI
      while(digitalRead(button_up) == HIGH){
        digitalWrite(ste,HIGH);
        delayMicroseconds(1000);  // BU DEGERLER DEGISTIRILEREK MOTOR HIZI AYARLANABILIR
        digitalWrite(ste,LOW);
        delayMicroseconds(1000);  // BU DEGERLER DEGISTIRILEREK MOTOR HIZI AYARLANABILIR
      } 
    }
  }
  // BUTTON 2 YE BASILI TUTULDUGU SURECE GERI DOGRU DON
  if(digitalRead(button_down) == HIGH){
    delay(50);
    if(digitalRead(button_down) == HIGH){
      digitalWrite(yon,LOW);  // YON GERI
      while(digitalRead(button_down) == HIGH){
        digitalWrite(ste,HIGH);
        delayMicroseconds(1000);  // BU DEGERLER DEGISTIRILEREK MOTOR HIZI AYARLANABILIR
        digitalWrite(ste,LOW);
        delayMicroseconds(1000);  // BU DEGERLER DEGISTIRILEREK MOTOR HIZI AYARLANABILIR
      }
    }
  }
}

Hiç yorum yok:

Yorum Gönder