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
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
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)
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
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/
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,?
iya gan, memang kebalikan.
mas jika menggunakan button bagaimana yaa
untuk forwad dan reverse
bisa dipelajari bagian ini mas https://www.cronyos.com/belajar-arduino-membaca-data-digital-dan-menampilkannya-pada-monitor/