TB6560 Stepper Driver Arduino
Cara Menggunakan TB6560 Stepper Motor Driver Arduino – TB6560 adalah sebuah IC Driver untuk motor stepper yang menggunakan mode PWM untuk mengontrol microstep pada motor bipolar.
IC TB6560 mampu menggontrol stepper mengurangi getaran, memutar maju dan mundur serta mengatur kecepatan hanya menggunakan sinyal clock.
Spesifikasi TB6560 Modul Driver:
- Tegangan power 6V – 40V
- Arus maksimal 3A
- Mode Eksitasi 1/1 (2 phase), 1/2 (1-2 phase), 1/8 (2W1-2 phase) dan 1/16 (4W1-2 phase)
- Mampu Rotasi forward dan reverse
- Pin Reset dan Enable
- Thermal Shutdown (TSD)
- Untuk lebih lengkap, lihat datasheet dibawah.
Konfigurasi TB6460 Stepper Driver |
Untuk motor stepper yang saya gunakan pada tutorial adalah Wantai Motor Stepper Nema 17 42BYGHW811. Sedangkan untuk Power, pada saya gunakan adaptor dengan tegangan 9V dan Arus 1A. Anda dapat mengganti sesuai dengan kebutuhan.
Spesifikasi Motor Stepper Nema 17 42BYGHW811:
- Step Angle 1.8°
- Step Akurasi 5%
- 200 step per 1 putaran penuh
- Tegangan Kerja 3.1V
- Arus Kerja Max 2.5A
- Torsi 4.8 kg/cm
- Jenis motor BiPolar
- Untuk lebih lengkap, lihat datasheet dibawah.
A. Rangkaian Dasar Schematic TB6560 Arduino
Untuk dapat mengontrol atau menggerakankan motor stepper menggunakan driver TB6560, kita harus menghubungkan arduino ke IC Driver dengan benar. Adapun rangkaiannya adalah sebagai berikut:
Rangkaian TB6560 Arduino |
Perhatikan gambar diatas, saya aktifkan (On) pada SW2, karena saya hanya menggunakan arus 0.5A dalam percobaan . Adapun saklar sebelah kiri (merah), saya aktifkan (On) hanya pada S4, karena dalam contoh dasar , saya akan menggunakan step per resolution 1/16.
Jika anda masih bingun dengan step per resolution dan angkanya, anda dapat membaca artikel Cara Kerja Motor Stepper, Jenis-jenisnya dan Mikrostepping.
B. Progam Untuk Mengendalikan Stepper Menggunakan Driver TB6560
1. Program Dasar TB6560 Berputar Per 1°
Pada progam , kita akan mencoba memutar motor stepper untuk dapat bergerak per 1° hingga 360°, kemudian kembali ke 0°, dan seterusnya.
Berikut adalah kode singkatnya.
int dirPin = 2;
int stepPin = 3;
//stepsPerRevolution 200 tidak digunakan pada kode .
//int stepsPerRevolution = 400; //Untuk 1/2 --> Ubah saklar S3=1 & S4=0
//int stepsPerRevolution = 1600; //Untuk 1/8 --> Ubah saklar S3=1 & S4=1
int stepsPerRevolution = 3200; //Untuk 1/16 --> Ubah saklar S3=0 & S4=1
int sudut = 0;
int nilai = 0;
int nilaiDelay = 30;
int cekSudut = 0;
int a = 0;
void setup() {
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop()
{
if (cekSudut == 0) {a = +1; }
if (cekSudut == 360) {a = -1; }
sudut = sudut + a ;
a = sudut;
nilai = map(a, 0, 360, 0, steps PerRevolution);
//Jika data bernilai +, maka putar ke kanan
if (a == 1)
{
digitalWrite(dirPin, LOW);
for (int i = 0; i < nilai; i++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(nilaiDelay);
digitalWrite(stepPin, LOW);
delayMicroseconds(nilaiDelay);
}
}
//Jika data bernilai -, maka putar ke kiri
if (a == -1)
{
digitalWrite(dirPin, HIGH);
for (int i = 0; i > nilai; i--)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(nilaiDelay);
digitalWrite(stepPin, LOW);
delayMicroseconds(nilaiDelay);
}
}
delay(100);
}
2. Kontrol Putaran Derajat TB6560 Stepper Motor Menggunakan Serial Monitor Arduino
Skenario program berikut adalah mengontrol perputaran motor stepper dengan mengirimkan nilai sudut melalui serial monitor arduino.
Sebagai contoh jika kita ingin memutar 90°, maka ketikkan 90 pada Serial Monitor Arduino lalu enter. Jika ingin membalikkan 90°, ketikkan -90 lalu enter, dan seterusnya.
Pengujian Kode Program |
//www.chippiko.com
int dirPin = 2;
int stepPin = 3;
//int stepsPerRevolution = 200; //Untuk 1/1 --> Ubah saklar S3=0 & S4=0
//int stepsPerRevolution = 400; //Untuk 1/2 --> Ubah saklar S3=1 & S4=0
//int stepsPerRevolution = 1600; //Untuk 1/8 --> Ubah saklar S3=1 & S4=1
int stepsPerRevolution = 3200; //Untuk 1/16 --> Ubah saklar S3=0 & S4=1
int dataSerial = 0;
int nilai = 0;
int nilaiDelay = 30;
void setup() {
Serial.begin(9600);
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop()
{
if (Serial.available() != 0)
{
dataSerial = Serial.parseInt();
nilai = map(dataSerial, 0, 360, 0, stepsPerRevolution);
Serial.print("Dari Serial:");
Serial.print(dataSerial);
Serial.print(" Step:");
Serial.println(nilai);
}
//Jika data bernilai +, maka putar ke kanan
if (dataSerial > 0)
{
digitalWrite(dirPin, LOW);
for (int i = 0; i < nilai; i++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(nilaiDelay);
digitalWrite(stepPin, LOW);
delayMicroseconds(nilaiDelay);
}
}
//Jika data bernilai -, maka putar ke kiri
if (dataSerial < 0)
{
digitalWrite(dirPin, HIGH);
for (int i = 0; i > nilai; i--)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(nilaiDelay);
digitalWrite(stepPin, LOW);
delayMicroseconds(nilaiDelay);
}
}
delay(1000);
}
Jika anda butuh datasheet TB6560, anda dapat melihat datasheetnya sebagai berikut:
Jika anda butuh datasheet Motor Stepper Nema 17 42BYGHW811, anda dapat melihat datasheetnya sebagai berikut:
Semoga bermanfaat.