Pada bagian ini akan diberikan dan dibahas contoh kendali motor stepper 28BYJ-48 dengan menggunakan Arduino. Motor stepper akan diperintahkan berputar satu kali putaran penuh searah jarum jam dengan menggunakan teknik half stepping. Rangkaian yang diperlukan untuk contoh proyek ini ditunjukkan pada gambar 1.1 berikut ini.
Gambar 1.1 Arduino dan Motor Stepper 28BYJ-48 |
Hardware yang dibutuhkan :
1. Arduino UNO
2. Motor Stepper 28BYJ-48
3. Modul Driver Motor Stepper ULN2003A
4. Half breadboard
5. Power Supply 5V 1A
6. Kabel jumper
Keterangan Rangkaian dan Pemrograman :
1. Hubungkan header female dari motor stepper 28BYJ-48 ke modul driver motor ULN2003A.
2. Hubungkan pin digital 8 Arduino UNO dengan pin IN1 modul driver motor ULN2003A.
3. Hubungkan pin digital 9 Arduino UNO dengan pin IN2 modul driver motor ULN2003A.
4. Hubungkan pin digital 10 Arduino UNO dengan pin IN3 modul driver motor ULN2003A.
5. Hubungkan pin digital 11 Arduino UNO dengan pin IN4 modul driver motor ULN2003A.
6. Hubungkan GND Arduino UNO dengan pin GND modul driver motor ULN2003A.
7. Hubungkan pin VCC modul driver motor ULN2003A dengan pin power supply 5V DC.
8.Hubungkan pin VCC modul driver motor ULN2003A dengan pin - power supply 5V DC.
9. Setelah selesai membuat rangkaian, langkah selanjutnya adalah membuat sketch program pada software Arduino IDE. Sketch untuk rangkain proyek ini ditunjukkan oleh contoh program 1.1.
10. Compile sketch yang telah dibuat.
11. Hubungkan Arduino UNO dengan komputer menggunakan kabel USB dan upload ke Arduino UNO yang digunakan.
Contoh Program : Prog1.1. Motor Stepper 1 Putaran Penuh
Penjelasan :
1. Di awal program terdapat inisialisasi variabel langkah dengan nilai awal 1.
2. Di dalam void loop terdapat pengaturan baud rate untuk komunikasi serial sebesar 9600bps.
3. Selanjutnya, pengaturan arah I / O untuk pin digital 8,9,10 dan 11 dimana semua pin tersebut diatur sebagai pin OUTPUT.
4. Baris selanjutnya, program masuk ke perulangan for dengan total perulangan sebanyak 4096. Total perulangan ini adalah nilai total siklus yang harus dicapai untuk mendapatkan satu putaran penuh dengan teknik half stepping.
5. Di dalam perulangan terdapat beberapa statement yang dibagi ke dalam 8 buah percabangan if. Setiap percabangan mewakili satu koil atau dua koil di motor stepper. Misal pada percabangan yang pertama :
Perintah di dalam percabangan if tersebut akan mengaktifkan koil 1 yang pada program dikontrol dengan pin digital 8 , kemudian menonaktifkan koil 2 (pin digital 9), koil 3 (pin digital10), dan koil 4 (pin digital 11).
6. Setelah satu if dieksekusi, maka variabel langkah akan di increment 1 agar pada perulangan berikutnya program akan mengaktifkan koil-koil selanjutnya.
7. Jika nilai dari variabel langkah sudah lebih besar dari 8, maka variabel langkah akan direset kembali ke angka 1.
Contoh program prog1.1 di atas sudah efektif untuk menggerakkan motor stepper 28BYJ-48 sebanyak 1 putaran penuh, namun tidak efisien. Cara lain yang lebih efisien adalah menggunakan array seperti yang ditunjukkan pada contoh program prog1.2 di bawah ini
Contoh Program : Prog1.2. Satu Putaran dengan Array
Penjelasan :
1. Baris paling awal dari program adalah array pin yang akan digunakan untuk mengontrol motor stepper.
2. Baris selanjutnya adalah inisialisasi variabel alurputar yang bertipe data array dua dimensi. Angka 8 menunjukkan 8 step dan angka 4 menujukkan jumlah koil. Nilai yang ada di dalam array ini mewakili nilai koil yang akan aktif. Nilai 1 akan mengaktifkan koil dan nilai 0 akan menonaktifkan koil.
3. Di awal void setup terdapat perulangan sebanyak 4 kali untuk mengatur arah pin I / O yang digunakan. Pada perulangan ini, semua pin digital yang berada di array pinkontrol diatur sebagai pin OUTPUT.
4. Bagian selanjutnya, program masuk ke dalam perulangan bersarang.
5. Di dalam perulangan for yang terdalam terdapat perintah
digitalWrite (pinkontrol[m], alurputar[k][m];
Maka diawal eksekusi program pada perintah ini, nilai m = 0, nilai k = 0 dan nilai m = 0 sehingga baris perintah di atas sama dengan :
digitalWrite(pinkontrol[0], alurputar[0][0]);
pinkontrol[0] berisi nilai 8 sesuai dengan array yang sudah dideklarasikan di awal program, kemudian alurputar[0][0] artinya nilai pada array dua dimensi di baris 0 kolom 0 yang bernilai 1 seperti pada gambar di bawah ini.
Gambar 1.2 Array alurputar Dua Dimensi |
6. Baris selanjutnya terdapat perintah selang waktu selama 1 ms.
7. Setelah selang waktu 1 ms, program akan kembali ke perulangan paling luar dan berlanjut seperti pada proses sebelumnya hingga perulangan terluar selesai.
0 Komentar