Bu içeriğe 6 Mart 2024 tarihinde fotoğraf güncellemesi yapıldı.

Merhaba, bugün TB6560 step motor sürücünün nasıl kullanıldığını anlatacağım. Hemen başlıyoruz!

İlk önce, fotoğraf üzerinden giderek girişlerden ve çıkışlardan bahsedelim;

Sürücü kartını beslemek için +24V kısmına 24V, GND kısmına ise adaptörünüzün GND’sini bağlıyorsunuz. Bu şekilde karta ve motora güç vermiş oluyorsunuz.

A+, A-, B+ ve B- kısımlarına ise step motorunuzun kablolarını bağlıyorsunuz. Eğer 5 veya 6 kablolu ise 4 kabloya dönüştürme işlemi yapmanız gerekiyor. Ortak kabloları bulduktan sonra elinizde 4 tane kablo olduğunu göreceksiniz. Bu kabloları, bu kısma bağlamanız gerekiyor.

CLK-, CW- ve EN- pinlerini GND hattına bağlıyoruz.

CLK: Clock (Saat) kelimesinini kısaltılmasıdır. Clock pini ile adım ayarlaması yapacağız. Motorun dönüşüne etki eden pin, bu pindir.

CW: Clockwise (Saat yönü) kelimesinini kısaltılmasıdır. Bu pine 0 veya 1 yollanmasıyla step motorun yönü değişecektir. Kısacası saat yönünde veya saat yönünün tersinde dönecektir.

EN: Enable (Açıklık) kelimesinin kısaltılmasıdır. Bu pine 0 veya 1 yollanmasıyla step motorun çalışmasını veya çalışmamasını kontrol edebilirsiniz.

CLK+ pinini STEP, CW+ pinini DIR ve EN+ pinini ise EN olarak düşünebiliriz.

SW1, SW2, SW3 ve S1 pinleri motorun çalışma akımını ayarlar. Örneğin, elinizde 1.2A’lik çalışma akımına sahip motor olduğunu varsayalım. Bu durumda akımı 1.2A’ye ayarlamanız gerekiyor. Peki, bunun ayarını nasıl yapacağız?

ON ifadesi, 1, HIGH veya sinyalin açık olduğuna, OFF ifadesi ise, 0, LOW veya sinyalin kapalı olduğuna işarettir. Eğer sinyal yollamış olursanız 1, keserseniz 0 olacaktır. Tabloyu okurken ve uygularken bu konuya dikkat etmenizi şiddetle öneririm.

1.2A akım ayarı için;

  • SW1: ON
  • SW2: OFF
  • SW3: OFF
  • S1: ON şeklinde bir konfigürasyon yapmamız gerekiyor.

S2: Kesme akımı için kullanılır. Motor yük altına girer ve belirli bir akımı geçerse kesme yapsın diye kullanılır. Bu kesme değerini alttaki tablo üzerinden bulabilirsiniz. %20 ve %50 olmak üzere iki tane seçenek var.

Kesme akım değerinin, çalışma akım değerine olan oranını bulmanız gerekiyor. Mesela 2A çalışma akımında çalışan bir motor, maksimum 3A’ya dayanabilirse şöyle bir oran çıkıyor;

2 + 2 * (X / 100) = 3
Buradan da x = 50 çıkar.
Yani 2A’nın %50’si 1A yapar.
2A + 1A = 3A maksimum dayanacağı akım bu’dur.

Haliyle formül sağlamış oldu. Yani, kesme akımını %50 yaptığınızda veya buna en yakın değeri yaptığınızda kesme akımını ayarlamış ve uygulamış olacaksınız.

S3 ve S4: Step motor adımlarını ayarlar. Full, 1/2, 1/8 ve 1/16 gibi seçenekleri aşağıdaki tabloya bakarak ayarlayabilirsiniz.


Örneğin, step motoru 1/8 adım yapmak için;

S3: ON
S4: ON yapmamız yeterli olacaktır.

Motorun sarımlarına verilen veya çekilen anlık gerilimleri kontrol etmemizi sağlıyor. Anlık gerilim kesilmesi veya anlık gerilim verilmesi durumunda, motorun dönüşüne etki ediyor. Gerilimin kontrol edilerek verilmesi ve yavaş yavaş düşmesi durumunda, motor yavaş yavaş duracaktır.

%0 değeri, motorun yavaş yavaş durmasını, %100 ise anlık durmasını sağlayabiliyor. Bu değer arttıkça, motorun dönüş hızı azalıyor ve yavaş yavaş duruyor. Bu ikili, ters orantılıdır. Bu ayarı kurcalamak istemiyorsanız %0’da bırakmanızı öneririm. Ben bu şekilde kullanıyorum. Bu konuyla ilgili bir yazıyı okumak için şuraya tıklayabilirsiniz.

Örnek bir devre ve kod ile birlikte blogu sonlandıracağız. TB6560 step motor sürücüyü Arduino’ya şu şekilde bağlayacağız;

CLK+ pinini Arduino’nun 2.pinine,
CW+ pinini Arduino’nun 3.pinine,
EN+ pinini Arduino’nun 4.pinine,
CLK-, CW- ve EN- pinlerini ise GND hattına bağlıyoruz. GND’leri de ortak yapmamız gerekiyor.

Şimdi yazılım kısmına geçiyoruz.

const int stepPin = 2;
const int dirPin = 3;
const int enPin = 4;
const int adimDonusMiktari = 200;
int x = 0;
void setup()
{
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enPin, OUTPUT);
  digitalWrite(enPin, HIGH);
}
void loop()
{
  digitalWrite(dirPin, HIGH);
  for(x = 0; x < adimDonusMiktari; x++) 
  {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(2000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(2000);
  }
  
  delay(1000); 
  
  digitalWrite(dirPin, LOW);
  for(x = 0; x < adimDonusMiktari; x++) 
  {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000);
  }
  
  delay(1000); 
}

Bir blogun daha sonuna geldik. Hepinize iyi çalışmalar dilerim!