Video percobaan menggunakan stepper motor eks DVD ROM
Driver yang gw pake kali ini adalah menggunakan IC L298 beserta optocoupler untuk melindungi rangkaian microcontroller dari arus balik, seperti kita tau putaran motor mempunyai efek arus balik, maka dari itu biasanya rangkaian switching seperti transistor harus dilindungi dengan dioda untuk membuang arus balik tersebut, yang ini sengaja pake optocoupler supaya rangkaian microcontroller dengan driver terpisah jadi aman, apalagi buat pemula mau coba-coba, jangan tunggu microcontroller hangus dulu baru menjadi cerdas, hehe...
Schematic L298 with optocoupler |
Aplikasi untuk 2 motor DC (CW atau CCW) |
L298 adalah IC yang sama seperti L293D yang terkenal sebagai H-bridge untuk motor, dengan kata lain L298 adalah IC dengan 2x L293D, maka dari itu bisa menggerakan 2 motor DC secara CW atau CCW, atau digunakan untuk stepper motor bipolar.
Karena driver stepper motor ini bergerak dengan mengubah polarisasi maka stepper bipolar akan dioperasikan seperti berikut :
++++++++++++++++++++++++++++++++
Step 1 (CW)
1. A* - B - C - D ;arus (+) keluaran output A
2. A - B^ - C - D ;arus (-) keluaran output B
Step 2 (CW)
3. A - B - C* - D ;arus (+) keluaran output C
4. A - B - C - D^ ;arus (-) keluaran output D
++++++++++++++++++++++++++++++++
-----------------------------------------------------------------------------------
Step 3 (CCW)
1. A^ - B - C - D ;arus (-) keluaran output A
2. A - B* - C - D ;arus (+) keluaran output B
Step 4 (CCW)
3. A - B - C^ - D ;arus (-) keluaran output C
4. A - B - C - D* ;arus (+) keluaran output D
-----------------------------------------------------------------------------------
Karena memiliki 4 output maka jika digunakan untuk menggerakan 2 motor DC, maka pada step 1 dan 2 motor akan beputar CW (clock wise), dan pada step 3 dan 4 motor akan berputar CCW (counter clock wise). Untuk itu kita uji dengan menggunakan lampu LED tanpa beban motor.
Karena driver stepper motor ini bergerak dengan mengubah polarisasi maka stepper bipolar akan dioperasikan seperti berikut :
++++++++++++++++++++++++++++++++
Step 1 (CW)
1. A* - B - C - D ;arus (+) keluaran output A
2. A - B^ - C - D ;arus (-) keluaran output B
Step 2 (CW)
3. A - B - C* - D ;arus (+) keluaran output C
4. A - B - C - D^ ;arus (-) keluaran output D
++++++++++++++++++++++++++++++++
-----------------------------------------------------------------------------------
Step 3 (CCW)
1. A^ - B - C - D ;arus (-) keluaran output A
2. A - B* - C - D ;arus (+) keluaran output B
Step 4 (CCW)
3. A - B - C^ - D ;arus (-) keluaran output C
4. A - B - C - D* ;arus (+) keluaran output D
-----------------------------------------------------------------------------------
Karena memiliki 4 output maka jika digunakan untuk menggerakan 2 motor DC, maka pada step 1 dan 2 motor akan beputar CW (clock wise), dan pada step 3 dan 4 motor akan berputar CCW (counter clock wise). Untuk itu kita uji dengan menggunakan lampu LED tanpa beban motor.
Video percobaan L298 dengan output 4x lampu LED
Masalah cara menggerakan motor stepper bipolar sudah jelas, sekarang bagian mengendalikan INPUT agar menghasilkan OUTPUT seperti diatas, berikut pin INPUT driver seperti gambar schematic diatas.
ENA input enable A
IN1 input step 1
IN2 input step 2
5V input tegangan kerja driver 5v
IN3 input step 3
IN4 input step 4
ENB input enable B
Sebelum kita melakukan kontrol penuh menggunakan microcontroller, kita bisa mengujinya secara manual, dilain sisi andaikata driver yang digunakan tidak dilengkapi dengan optoisolator/optocoupler, terlalu beresiko untuk langsung menggunakan microcontroller meskipun driver tersebut dapet beli and bukan bikin sendiri, memang urusan engineering seperti ini ga cukup hanya dengan berbekal kemampuan programming saja, tapi harus memahami juga cara kerja rangkaian, karena programmer akan mengikuti dan mengendalikan sistem yang dibuat dalam bentuk rangkaian.
Coba pasangkan pada bagian output sebuah motor atau 2bh lampu LED lengkap dengan resistornya dan susun secara paralel, LED1 (+) (-), LED2 (-) (+), pada bagian input berikan ENA arus +5v, bagian input IN1 dan IN2 berikan signal input TTL, mudahnya berikan arus +5v diserikan dengan resistor 100 ohm ga pake juga ga apa-apa, +5v berarti signal H (high), 0v berarti signal L (low), untuk H menggunakan +5v, untuk L bisa floating atau tidak perlu dihubungkan apa-apa. Lakukan seperti berikut.
ENA diberi arus +5v
IN1 diberi signal H (diberi arus +5v)
IN2 diberi signal L (floating)
5V input tegangan kerja driver 5v
Motor akan berputar CW, atau lampu LED1 akan menyala sedangkan lampu LED2 tetap padam.
ENA diberi arus +5v
IN1 diberi signal L (floating
IN2 diberi signal H (diberi arus +5v)
5V input tegangan kerja driver 5v
Motor akan berputar CCW, atau lampu LED2 akan menyala sedangkan lampu LED1 akan padam.
Lakukan hal serupa pada IN3 dan IN4 kendalinya ada pada ENB, tanpa menggunakan ENA dan ENB sekalipun (hanya memberikan signal pada pin IN) saja sudah mampu memberikan signal output, hanya saja ENA dan ENB itu berfungsi untuk mengaktipkan dan meNON-aktipkan sirkuit blok driver.
Sederhananya L298 berisi 2 buah L293, jadi sederhananya ENA berfungsi untuk meng on/off kan L293 (a), dan ENB berfungsi untuk meng on/off kan L293 (b), dengan begitu rangkaian akan menjadi flip-flop, masalahnya tanpa dijadikan flip-flop sekalipun tidak masalah hanya saja beban yang akan digunakan adalah motor yang mempunyai efek feedback GGL, meskipun sudah dibuang menggunakan 8 dioda, dengan meng on/off kan ENA dan ENB maka operasi rangkaian ini akan lebih baik, karena mungkin saja rangkaian ini akan kita gunakan untuk kecepatan tinggi.
Coba perhatikan schematic driver, input negatip atau ground berada di pin output, karena memang driver ini dirancang untuk menggunakan beda tegangan kerja driver dan tegangan kerja beban (motor), namun begitu ground harus disatukan!!!
Sudah jelas board ini dilengkapi dengan optoisolator yang memisahkan antara rangkaian microcontroller dengan driver, namun jika kamu menggunakan 1 sumber tegangan misal +5v untuk INPUT sekaligus untuk tegangan beban, memang tidak akan ada arus balik pada optoisolator, tapi arus balik itu akan keluar menuju sumber arus +5v dan ground, karena arus lebih dari motor akan dibuang dioda ke sumber arus, artinya microcontroller dan driver yang diberi tegangan kerja +5v akan mengalami fluktuasi tegangan seiring dengan putaran motor, memang tidak bahaya, tapi dapat merusak microcontroller atau membuat program error.
Sama saja seperti kita memberikan sumber tegangan +5v pada microcontroller lalu sesekali diatas +5v, bisa +9v atau bahkan lebih semua tergantung dari putaran motor, semakin cepat putaran motor maka semakin besar arus baliknya, itulah kenapa motor DC bisa digunakan sebagai generator seperti lampu sepeda jaman dulu, dan keluarannya bisa ratusan volt, dan itu sangat cukup untuk menghancurkan semua rangkaian microcontroller, driver dan minimal membuat error program yang sudah dibuat. Untuk mempelajarinya silahkan baca artikel Bikin Generator dari motor DC bekas printer.
OK sekarang kita kontrol driver secara penuh menggunakan microcontroller, gw pake arduino untuk percobaan kali ini, berikut sketch programnya.
#include <Stepper.h>
//sesuaikan nilai dengan motor yang digunakan
//inisialisasi pin output stepper menurut library yang digunakan
Stepper myStepper(stepsPerRevolution, 8,9,10,11);
void setup() {
// menentukan kecepatan pada 60rpm
myStepper.setSpeed(60);
//inisialisasi untuk debugging atau serial port
Serial.begin(9600);
}
void loop() {
// menentukan arah putaran secara CW
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// menentukan arah putaran secara CCW
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
const int stepsPerRevolution = 20;
//inisialisasi pin output stepper menurut library yang digunakan
Stepper myStepper(stepsPerRevolution, 8,9,10,11);
void setup() {
// menentukan kecepatan pada 60rpm
myStepper.setSpeed(60);
//inisialisasi untuk debugging atau serial port
Serial.begin(9600);
}
void loop() {
// menentukan arah putaran secara CW
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// menentukan arah putaran secara CCW
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
Seperti dijelaskan diawal-awal stepper motor unipolar dan bipolar digerakan menggunakan koil-koil yang disusun secara step, artinya satu polarisasi pada input hanya akan menggerakan motor 1 step tidak lantas berputar terus, setiap motor bisa berbeda pada program diatas motor menggunakan 20 step artinya motor tersebut menggunakan 20 koil.
Maka kita harus memberikan input tegangan yang bergerak dari koil 1 ke 2 ke 3 ke 4 dst...sampai ke 20, agar motor berputar 360 derajat, pada program diatas motor akan berputar 360 derajat CW dan kemudian 360 derajat CCW, dan begitu seterusnya dengan delay setengah detik.
Pada program diatas tidak ada perintah program untuk memodulasi tegangan atau istilahnya PWM (pulse width modulation), karena program tersebut menggunakan file library, jadi pengaturan frekuensi modulasi dikontrol dan diprogram pada file tersebut termasuk pin output stepper motornya sudah ditentukan yaitu 8, 9, 10, 11.
Jadi pada kenyataannya ketika motor stepper berputar satu arah, output dari microcontroller adalah seperti berikut :
Pin digital output :
8 > 1000
9 > 0100
10 > 0010
11 > 0001
repeat
Motor berputar satu arah CW
Pin digital output :
8 > 0001
9 > 0010
10 > 0100
11 > 1000
repeat
Motor berputar satu arah CCW
Motor stepper driver selain berputar secara stepping bisa juga difungsikan secara half step atau micro stepping, artinya langkah 1 step itu bisa difungsikan menjadi half + half step, jadi motor stepper kita bisa difungsikan lebih luas lagi.
Sampai ketemu di tulisan-tulisan saya selanjutnya.
0 comments:
Post a Comment