Cara Kontrol Motor Stepper dengan Driver TB6600 / TB6500 Arduino

Assalamu’alaikum sahabat teknik Indonesia, pada kesempatan kali ini kita akan belajar cara mengendalikan motor stepper menggunakan Arduino menggunakan modul driver TB6600 / TB6500, sebenarnya kita bisa saja menggunakan modul driver motor yang lain seperti modul driver motor L293D atau L298N atau yang lain, namun keistimewaan dari modul driver TB6600 / TB6500 ini adalah kemampuanya yang dapat menangani motor stepper yang berukuran besar seperti motor driver nema 23, kalau kita menggunakan motor driver l293d untuk menangani motor stepper nema 23 tentu tidak akan kuat

Oke langsung saja, untuk contoh pada tutorial nanti saya akan fokuskan ke penggunaan modul driver TB6600, untuk modul motor driver seri TB6500 hampir sama penggunaannya, hanya berbeda di spesifikasi (kemampuan) yang dapat dilihat pada tabel berikut

Spesifikasi Motor Driver TB6600 / TB6500

TB6560 TB6600
Operating voltage 10 – 35 VDC, 24 VDC recommended 9 – 42 VDC, 36 VDC recommended
Max output current 3 A per phase, 3.5 A peak 3.5 A per phase, 4 A peak
# Current settings 14 8
Microstep resolution full, 1/2, 1/8 and 1/16 full, 1/2, 1/4, 1/8, 1/16 and 1/32*
Clock frequency 15 kHz 200 kHz

Wiring / Schematic

Pertama buat wiring seperti gambar berikut ini, Baik menggunakan modul driver TB6600 atau 6500 wiringnya sama

Setting Microstep dan Peak Current

Kemudian kita setting microstep dan peak current pada modul motor drivernya, apa itu microstep dan peak current? Mari kita bahas dulu satu persatu

Apa itu microstep?

Untuk menghasilkan 1 kali putaran / 360 derajat pada motor stepper umumnya motor stepper memerlukan 200 pulsa digital (ON-OFF).  Sehingga ketika diberi 1 pulsa maka motor stepper agan bergerak 1.8 derajat (gerak per pulsa = 360/200 = 1.8 derajat). Nah, istimewanya driver motor TB6600 / TB6500 ini mampu membuat gerak dari motor stepper ini lebih lembut lagi, bagaimana caranya? caranya adalah dengan membagi 360 putaran dengan jumlah pulsa yang lebih banyak (lebih dari 200 pulsa). contoh pada motor driver TB6600 ini maksimal mampu memberikan 6400 pulsa untuk 1 kali putaran. dengan kata lain berarti gerak per pulsanya adalah 360/6400 = 0.05625 derajat

Nah, bagaimana cara mengaturnya? cara mengaturnya adalah dengan mengatur posisi saklar pada SW1,SW2,SW3 dengan konfigurasi seperti yang tertulis pada cassing modul motor drivernya

Tabel Microstep dan Peak Current

Sebagai contoh pada gambar dibawah ini, dengan posisi switch SW1(ON), SW2(OFF),SW3(OFF) seperti gambar di bawah ini maka settingan microstep di set pada angka 800 (standart) sehingga untuk menghasilkan putaran 360 derajat nantinya kita harus memberikan sinyal digital sebanyak 800 kali

Settinggan microstep 800
Apa itu peakcurrent?

Peak current adalah arus maksimal yang akan kita berikan ke motor stepper, namun saran saya gunakan arus paling rendah terlebih dahulu agar motor stepper menjadi awet. untuk mengatur arus motor stepper caranya sama seperti saat mengatur microstep, yaitu dengan mengatur posisi switch (SW4,SW5 dan SW6) dengan pedoman tabel pada box cassing modul motor driver (lihat atas).

Sebagai contoh pada gambar dibawah ini, dengan posisi switch SW3(ON), SW4(ON),SW5(ON) seperti gambar di bawah ini maka arus yang mengalir ke motor stepper kita batasi pada angka 4 ampere (maksimal)

Settingan arus maksimal 4 ampere

Coding Arduino ( Tanpa Library)

Pada coding berikut ini kita akan coba memutar motor stepper sejauh 360 derajat (1 kali putaran). Karena kita tadi mengatur microstep pada modul motor drivernya di angka 800 maka untuk untuk menghasilkan putaran 360 derajat maka kita harus memberi sinyal ke motor modul motor driver sebanyak 800 kali. berikut coding yang dapat dicoba

Berputar 360 derajat (Mode Lambat)
#define dirPin 2 
#define stepPin 3
#define stepsPerRevolution 800 // sesuaikan dengan settingan SW1-SW3 pada modul motor driver
void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);

    digitalWrite(dirPin, HIGH); // putar searah jarum jam
  for (int i = 0; i < stepsPerRevolution; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000); // ganti delay untuk mempercepat motor
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000); // ganti delay untuk mempercepat motor
  }
}
void loop() {
 
}
Berputar 360 derajat (lebih cepat dan berbalik arah)

Pada coding kedua ini kita akan memutar motor sejauh 360 derajat namun dengan pergerakan yang lebih cepat, pada coding kedua ini kita akan mengganti di delay setiap sinyal yang semula delaynya 1000 milisecods (1 detik) menjadi 500 milisecods (0.5 detik)

#define dirPin 2 
#define stepPin 3
#define stepsPerRevolution 800 // sesuaikan dengan settingan SW1-SW3 pada modul motor driver
void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);

    digitalWrite(dirPin, LOW); // putar berlawanan jarum jam
  for (int i = 0; i < stepsPerRevolution; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500); // ganti delay untuk mempercepat motor
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500); // ganti delay untuk mempercepat motor
  }

  
}
void loop() {
 
}
Berputar 180 derajat

Pada coding kedua ini kita akan memutar motor sejauh 180 derajat

#define dirPin 2 
#define stepPin 3
#define stepsPerRevolution 800 // sesuaikan dengan settingan SW1-SW3 pada modul motor driver
void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);

    digitalWrite(dirPin, LOW); // putar berlawanan jarum jam
  for (int i = 0; i < stepsPerRevolution/2; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500); // ganti delay untuk mempercepat motor
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500); // ganti delay untuk mempercepat motor
  }

  
}
void loop() {
 
}

Pada coding diatas kita mengubah pada baris code

for (int i = 0; i < stepsPerRevolution/2; i++) {

yang semula

for (int i = 0; i < stepsPerRevolution; i++) {

Artinya apa? artinya adalah yang awalnya kita memberikan sinyal sebanyak 800 kita ubah codingnya menjadi 400 sinyal saja (stepsPerRevolution/2) sehingga motor hanya akan berputar 180 derajat saja

Coding Arduino ( Dengan Library)

Jika coding diatas dirasa sulit, maka ada cara yang lebih praktis yaitu menggunakan library  arduino. library dapat di download di link berikut

AccelStepper-1.59.zip

Bagi yang belum bisa menginstall library bisa baca di artikel Cara Memasukan / Menambahkan Library di Arduino IDE

Setelah library terinstall, coba upload coding berikut,

#include <AccelStepper.h> 
#define dirPin 2 // pin yang terhubung ke DIR+ motor driver
#define stepPin 3 // pin yang terhubung ke PUL+ motor driver
AccelStepper stepper = AccelStepper(1, stepPin, dirPin);
void setup() {
  stepper.setMaxSpeed(1000); // atur kecepatan, dapat docoba dirubah untuk latihan
  stepper.setAcceleration(500); // nilai akselerasi / percepatan, dapat docoba dirubah untuk latihan
}
void loop() {
  stepper.moveTo(800); // beri target 360*
  stepper.runToPosition(); //jalankan 
  delay(1000); // jeda 1 detik
  stepper.moveTo(0); // kembalikan ke posisi semula
  stepper.runToPosition(); // jalankan
  delay(1000); // jeda 2 detik
}

Silahkan dimainkan parameter – parameter diatas untuk latihan, seperti stepper.setMaxSpeed(), stepper.setAcceleration(), stepper.moveTo() dan yang lainya

Sekian artikel kali ini, semoga bermanfaat, jika ada yang perlu ditanyakan silahkan tanyakan di kolom komentar. Wassalamu’alaikum

Reference : https://www.makerguides.com/tb6600-stepper-motor-driver-arduino-tutorial/

About Giri Wahyu Pambudi

Giri Wahyu Pambudi - Seorang Pemuda Desa yang berkeinginan ikut membangun Indonesia dengan Sedikit Ilmu yang dimiliki SMK N 2 Wonogiri lulus 2015 UNIV Negeri Yogyakarta lulus 2019 2019 - Sekarang Bekerja di SMK Gajah Mungkur 1 Wuryantoro, Wonogiri

Check Also

Tutorial Komunikasi Wireless Arduino menggunakan Module RF 433Mhz

Assalamu’alaikum wr. wb, gimana kabarnya sahabat arduino cronyos.com? baik kan? Alhamdulillah, pada postingan kali ini …

4 comments

  1. mau nanya mas,,itu peakcurrent s4,s5 dan s6 semua posisi ON bukannya malah yg mengalir cuma 0,5-0,7 ya mas,??
    apa memang malah kebalikannya,?

  2. Giri Wahyu Pambudi

    iya gan, memang kebalikan.

  3. mas jika menggunakan button bagaimana yaa
    untuk forwad dan reverse

Tinggalkan Balasan