Arduino ile Nema 17 Step Motor Kontrolü

Arduino ile Nema 17 Step motor kontrolü nasıl yapılır, hangi malzemeler kullanılır. Arduino ile a4988 kullanarak, step motor nasıl sürülür, gerekli Arduino kodları nelerdir, sizler için bu bilgilerden bahsedeceğiz. 

Step Motor Nedir?

Step motor, hassas konumlandırma yaptığımız, genelde eksenel hareketler için kullandığımız bir motor türüdür. Step motorlar kare dalga sinyalleri ile çalışırlar ve bu yüzden step motor sürücüsü olmadan çalışmazlar. Sinyalleri sürücüden alırlar. 

Arduino ile Nema 17 Kontrolü Gerekli Malzemeler

  • Arduino Uno (Diğer modeller de olur)
  • Nema 17 Step Motor
  • A4988 Step Motor Sürücü
  • 47 µf Kondansatör
  • Potansiyometre

Potansiyometreyi yön kontrolü yapabilmek için kullanacağız. Seçtiğimiz malzemelerin özellikleri yazının en altında başlıklar halinde anlatılmaktadır.



 

Nema 17 Nedir?

nema 17 step motor

 

Nema 17 step motorlar isimlerini tabanlarının ölçülerinden almaktadırlar. Tabanları kare olarak 1,7 x 1,7 inch’tir. Yükseklikleri, adım sayıları, besleme voltajları ve çektikleri akımlar her modele göre değişiklik gösterebilir. En çok kullanılan modelleri, her projeye kolay entegre edilebildikleri için uzun düz milli olanlarıdır. Bizim kullandığımız motor 200 adımdır yani bir adımı 1.8 derecedir. Kablo bağlantı diyagramı aşağıda verilmiştir.

nema 17 kablo şeması

Görüldüğü gibi bu motor Unipolar altı telli bir düzeneğe sahiptir. Bu tel iki ayrık sargıda birleştirilmiştir. Siyah, Sarı, Yeşil teller, Siyah’ın orta kademe olduğu birinci sargının bir parçası, Sarı ve Yeşil bobin ucu iken, Kırmızı, Beyaz ve Mavi, Beyaz’ın orta kademe ve Kırmızı ve Mavi’nın sargılı olduğu ikinci sargının bobin uçlarıdır.  Beyaz ve siyah uçlar kullanılmadan da step motoru sürebilmekteyiz.

 

Nema 17 Özellikleri

  • Gerilimi: 12V DC
  • Adım Açısı: 1.8 derece.
  • Faz Sayısı: 4
  • Motor uzunluğu: 1.54 inç
  • 4 kablolu
  • Devir başına 200 adım, 1.8 derece
  • Çalışma Sıcaklığı: -10 – 40 ° C
  • Tek Kutuplu Tutma Torku: 22.2 oz-in

 

A4988 Nedir?

A4988, açık devre 16 bacaklı bir step motor sürücü kartıdır. Faz başına 2 amper destekleyen bir karttır. Potansiyometre ile birlikte kullanıldığında motora yön kontrolü yapabilme imkanı verir.

  • Özellikleria4988 nedir
  • Aşırı akım koruması
  • Farklı adım çözünürlükleri
  • Ters voltaj koruması
  • Aşırı sıcaklık koruması (kapanır)
  • Akım konrolü

A4988 Step motor sürücü modülünü kullanarak, step motoru sadece iki pin kullanarak kontrol edebilirsiniz. STEP ve DIRECTION pinleri ile motor kontrol edilir. STEP pimi adımları kontrol etmek için kullanılırken, DIRECTION pimi motorun yönünü kontrol etmek için kullanılır. A4988 sürücü modülü beş farklı adım çözünürlüğü sunar: tam adım, yarım adım, çeyrek adım, 1/8 adım ve 1/16 adım.

Çözünürlük seçici pinlerini ((MS1, MS2 ve MS3) kullanarak farklı adım çözünürlüklerini seçebilirsiniz.Bu pinlerin doğruluk tablosu aşağıda verilmiştir:

MS1 MS2 MS3 Çözünürlük
Low Low Low Tam Adım
High Low Low Yarım Adım
Low High Low Çeyrek Adım
High High Low 1/8 Adm
High High High 1/16 Adım

 

A4988 Teknik Özellikleri

  • Maks. Çalışma Gerilimi: 35V
  • Min. Çalışma Gerilimi: 8V
  • Maks. Faz Başına Akım: 2A
  • Mikro adım çözünürlüğü: Tam adım, ½ adım, ¼ adım, 1/8 ve 1/16 adım
  • Ters voltaj koruması: Hayır
  • Boyutlar: 15,5 × 20,5 mm (0,6 ″ × 0,8 ″)

 

Arduino Nema 17 Bağlantı Şeması

arduino ile step motor bağlantısı

 

Arduino ile Nema 17 step motorunu kontrol etmek için devre şeması yukarıdaki resimde verilmiştir. Sadece Step ve Yön pinlerini Arduino’ya bağlamamız yeterli diğer pinler şemadaki gibi bağlanır. Basamak pimi, basamakları kontrol etmek için kullanılırken, yön pimi yönü kontrol etmek için kullanılır. Step motor 12V güç kaynağı kullanılarak çalıştırılır ve A4988 modülü Arduino üzerinden çalıştırılır. Potansiyometre, motorun yönünü kontrol etmek için kullanılır.



Potansiyometreyi saat yönünde çevirirseniz, stepper saat yönünde döner ve potansiyometreyi saat yönünün tersine çevirirseniz, saat yönünün tersine döner. Kartı voltaj artışlarına karşı korumak için 47 µf kapasitör kullanılır. Bağlantısız bırakılan MS1, MS2 ve MS3 pinleri, sürücünün tam adım modunda çalışacağı anlamına gelir.

arduino ile step motor kullanımı

S.NO.

A4988 Pin

Bağlantı

1

VMOT

Besleme +

2

GND

Besleme –

3

VDD

Arduino 5v pini

4

GND

Arduino GND pini

5

STP

3 No’lu Pin

6

DIR

2 No’lu Pin

7

1A, 1B, 2A, 2B

Step Motora

Arduino ile Nema 17 Kontrol Kodları

Her şeyden önce, step motor kütüphanesini Arduino IDE’nize ekleyin. Step motor kütüphanesini buradan indirebilirsiniz.

Bundan sonra NEMA 17 için adım sayısını tanımlayın. NEMA 17 için devir başına adım sayısı 200’dür.

Bundan sonra, sürücü modülünün bağlı olduğu pimleri belirtin ve motor sürücü modülüne bağlı olduğundan motor arayüz tipini Type1 olarak tanımlayın.

Daha sonra step.setSpeed işlevini kullanarak step motor için hızı ayarlayın. NEMA 17’nin maksimum motor devri 4688 RPM’dir, ancak eğer 1000 RPM’den daha hızlı çalıştırırsak, tork hızla düşer.

Şimdi ana döngüde, potansiyometre değerini A0 piminden okuyacağız. Bu döngüde, biri potVal diğeri Pval olmak üzere iki fonksiyon vardır. Mevcut değer, yani potVal önceki değerden daha yüksekse, yani Pval, saat yönünde 10 adım ilerletirse ve mevcut değer, önceki değerden saat yönünde 10 adım ilerletirse .

Arduino’yu dizüstü bilgisayarınıza bağlayın ve kodu Arduino IDE’yi kullanarak Arduino UNO panonuza yükleyin, Yönetim Kurulu ve port no’yu seçin ve ardından yükleme düğmesine tıklayın. Şimdi potansiyometreyi kullanarak Nema17 step motorunun yönünü kontrol edebilirsiniz.

#include <Stepper.h> 
#define STEPS 200

// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver
Stepper stepper(STEPS, 2, 3); // Pin 2 connected to DIRECTION & Pin 3 connected to STEP Pin of Driver
#define motorInterfaceType 1
int Pval = 0;
int potVal = 0;

void setup() {
  // Set the maximum speed in steps per second:
  stepper.setSpeed(1000);
}
void loop() {
 
  potVal = map(analogRead(A0),0,1024,0,500);
  if (potVal>Pval)
      stepper.step(10);
  if (potVal<Pval)
      stepper.step(-10);

Pval = potVal;
  
}