#12 Arduino ile Step Motor Kontrolü

Malzemeler:


1 Adet Arduino Uno (25 TL)
1 Adet 4 Fazlı Step Motor (10 TL)
1 Adet ULN2003A Motor Sürücü (1 TL)

Devre Kurulumu:

ULN2003A motor sürücüsünün datasheetinden motorun hangi pinlere bağlanacağını bulup ona göre devreyi kurmamız gerekmektedir. Devre kurulumunu aşağıdaki gibi yapalım.,

Programlama:

Programlama kısmında Arduino'nun kendi kütüphanelerinden olan Stepper kütüphanesini kullanacağız. Tüm kodu incelemeden önce Stepper kütüphanesini inceleyelim.
Stepper()

Stepper motor(steps, in1Pin, in2Pin, in3Pin, in4Pin)
İlk parametre olan steps kısmına motorun 360 dereceyi kaç stepde yapacağını yazıyoruz yani bir motoru bir dönüşte 1 derece döndürmek istiyorsak 360 yazıyoruz. Eğer 10 derece dönmesini istiyorsak 36 yazmamız gerekir. Bazı motorlarda bu derece sabit oluyor. Kullandığım MITSUMI M42SP-7  datasheetine göre bu motor bir stepde 7,5 derece döndüğü için steps kısmına 48 yazdım. Onu motorun datasheetinden bulup ona göre steps kısmını yazıyoruz.  in1Pin, in2Pin, in3Pin, in4Pin kısmına motor sürücüsünden arduinoya bağladığımız pinleri yazıyoruz. Eğer motor 2 fazlı ise sadece  in1Pin, in2Pin kısmını dolduruyoruz.

setSpeed()

setSpeed(rpm)
Bu komut motorun dönmesini sağlamaz sadece step komutunu uygularken motorun ne kadar hızlı döneceğini sağlar. Eğer setSpeed(200) yazar isek motor bir stepi uygularken 200 rpm hızla dönecektir.

step()
Bu kısma motorun kaç step dönmesi gerektiğini yazıyoruz. Yani buraya 2 yazarsak motor 2 step ilerleyecektir. Eğer -2 yazarsak diğer yönde 2 step ilerleyecektir.

Artık programımıza geçebiliriz. Program:

#include <Stepper.h> // Stepper kütüphanesini ekledik
int in1Pin = 12;          // Motor sürücüden gelen pinleri tanımladık
int in2Pin = 11;
int in3Pin = 10;
int in4Pin = 9;
Stepper motor(48, in1Pin, in2Pin, in3Pin, in4Pin);  //kaç derece döneceğini ve hangi pinlerin kullanılacağını gösterdik
void setup()
{
  Serial.begin(9600);    // Serial portdan veri gireceğimiz için seri haberleşmeyi başlattık
  
  pinMode(in1Pin, OUTPUT);   //Pinleri output olarak tanımladık
  pinMode(in2Pin, OUTPUT);
  pinMode(in3Pin, OUTPUT);
  pinMode(in4Pin, OUTPUT);
  
  motor.setSpeed(20);                // Motorların hızını 20 rpm ayarladık
}
void loop()
{
  if (Serial.available())      // Seri haberleşme uygunken
  {
    int steps = Serial.parseInt();   // Serial ekrandan veri istedik ve girilen veriyi parseInt komutuyla integer (tamsayı) ya çevirdik
    motor.step(steps);                  // girilen sayı kadar step motorumuz döndü
  }
}

Programı arduinoya atıp serial monitoru açıyoruz.Ve ardından bir step sayısını giriyoruz ve motor o step kadar dönüyor :)


Yorumlar

  1. Arduino ile bir adım motorunun (step motor) çalıştırılması için genellikle bir motor sürücüsü (örneğin A4988, DRV8825 gibi) kullanılır. Aşağıda, bir Arduino ve A4988 motor sürücüsü ile bir adım motorunun nasıl çalıştırılacağına dair temel bir rehber sunulmuştur:

    ### Malzemeler:
    - Arduino Uno
    - A4988 motor sürücüsü
    - Bipolar adım motor (NEMA 17 gibi)
    - Güç kaynağı (12V önerilir)
    - Breadboard ve jumper kablolar

    ### Bağlantılar:
    1. A4988 sürücüsünün `VDD` ve `GND` pinleri Arduino'nun `5V` ve `GND` pinlerine bağlanır.
    2. Sürücünün `1A` ve `1B` pinleri adım motorunun bir fazına, `2A` ve `2B` pinleri diğer fazına bağlanır.
    3. A4988 sürücüsünün `VMOT` ve `GND` pinleri harici güç kaynağına bağlanır.
    4. Sürücünün `STEP` pinine Arduino'nun bir dijital pinine (örn. D3) ve `DIR` pinine başka bir dijital pine (örn. D4) bağlanır.
    5. A4988 sürücüsünde uygun bir mikro adım çözünürlüğü ayarlamak için jumper ayarları yapılır (isteğe bağlı).

    ### Kod:
    ```c
    const int stepPin = 3; // STEP pinine bağlı Arduino pin numarası
    const int dirPin = 4; // DIR pinine bağlı Arduino pin numarası

    void setup() {
    pinMode(stepPin, OUTPUT);
    pinMode(dirPin, OUTPUT);

    digitalWrite(dirPin, HIGH); // Motorun dönüş yönünü ayarla: HIGH veya LOW
    }

    void loop() {
    for(int i = 0; i < 200; i++) { // Örnek olarak 200 adım atıyoruz
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000); // Adım hızını ayarla
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000);
    }
    delay(1000); // Bir saniye bekle

    // Dönüş yönünü değiştir
    digitalWrite(dirPin, !digitalRead(dirPin));
    }
    ```

    Bu basit örnek, adım motorun belirli bir adım sayısı kadar dönmesini ve ardından yönünü değiştirerek tekrar dönmesini sağlar. Fakat gerçek uygulamalarda motor sürücüsü ayarları, mikro adım çözünürlüğü ve diğer faktörler göz önünde bulundurularak daha kompleks kodlar yazabilirsiniz.

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

Sinyal Jeneratörü Nedir? (Function generator)

Arduino'dan Python'a veri aktarma