Aplikasi Motor Stepper menggunakan arduino uno
Friday, 24 August 2018
Add Comment
PERTEMUAN KE – 13
Aplikasi Motor Stepper
A. TUJUAN :
- Mahasiswa dapat menggunakan motor stepper dalam aplikasi.
B. TEORI SINGKAT
Secara umum motor stepper ada dua macam, yaitu motor stepper Unipolar dan motor stepper Bipolar. Secara fisik motor stepper Unipolar biasanya mempunyai kabel sebanyak 5 atau 6 buah. Satu atau dua kabel untuk common (power +) dan 4 kabel untuk phase. Sedangkan motor stepper Bipolar biasanya mempunyai kabel sebanyak empat buah.
C. PEMBAHASAN :
Pada praktik kali ini saya akan membuat sebuah program sederhana yang akan digunakan untuk menjalankan motor stepper unipolar. Berrikut adalah penjelasan dari scribt program yang telah saya buat :
int pinStepper[4]={8,9,10,11};
//merupakan deklarasi variabel berupa sebuah array dimana pin-pin yang akan digunakan adalah pin D8,D9,D10 dan D11 const int State[4]={0b00001110,0b00001101,0b00001011,0b00000111}; int currentState=0; //merupakan deklarasi variabel void setup() //Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan untuk pertama kalinya. { int i; for(i=0;i<4;i++) //perulangan untuk mengambil nilai dari variabel array pinStepper { pinMode(pinStepper[i],OUTPUT); // inisialisasi variable pinStepper Sebagai outputan } } void loop() //Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan. { Step(¤tState,200); //Digunakan untuk memanggil method step dan memberi nilai pada variabel ¤tState dengan nilai 200 delay(1000); //jeda selama 1 detik Step(¤tState,-100); //Digunakan untuk memanggil method step dan memberi nilai pada variabel ¤tState dengan nilai -100 delay(500); //jeda selama 0,5 detik } void Step(int *cState,int jumStep) //merupakan method dengan nama Step yang akan dipanggil pada void loop() { int a,i,state; state=*cState; //deklarasi variabel if(jumStep>0) //untuk mengecek apakah niali dari variabel jumStep lebih besar dari 0 { for(a=0;a<jumStep;a++) //jika if bernilai true maka akan menjalankan sebuah perulangan dengan persyaratan nilai dari variabel a kurang dari nilai dari variabel jumStep dan jika nilai variabel a masih memenuhi persyaratan tersebut maka nilainya akan ditambah 1 { state++; if(state==4) //untuk mengecek apakah nilai dari variabel state sama dengan 0 {state=0;} //jika iya maka nilai variabel state akan di 0 kan for(i=0;i<4;i++) //perulangan untuk menampilkan nilai dari variabel state dengan persyaratan i kurang dari 4 maka nilai i akan ditambah 1 { digitalWrite(pinStepper[i],bitRead (State[state],i)); //untuk menampilkan keluaran digital yang disimpan oleh variabel pinStepper dan state } delay(5); } *cState=state; //deklarasi variabel *cState sama dengan state } Else //akan dikerjakan jika if bernilai false { for(a=jumStep;a<0;a++) //jika if bernilai false maka akan menjalankan sebuah perulangan dengan persyaratan nilai dari variabel a kurang dari nilai dari 0 dan jika nilai variabel a masih memenuhi persyaratan tersebut maka nilainya akan ditambah 1 sedangkan variabel a sendiri nilainya sama dengan variabel jumStep { state--; //nilai variabel state dikurangi 1 if(state<0) //untuk mengecek apakah nilai dari variabel state kurang dari 0 {state=3;} //jika iya maka variabel state akan diberi nilai 3 for(i=0;i<4;i++) //perulangan untuk menampilkan nilai dari variabel state dengan persyaratan i kurang dari 4 maka nilai i akan ditambah 1 { digitalWrite(pinStepper[i],bitRead (State[state],i)); //untuk menampilkan keluaran digital yang disimpan oleh variabel pinStepper dan state } delay(5); } *cState=state; }} Hasil: |
Pada latihan kali ini saya memodifikasi program agar motor stepper dapat diatur gerakannya menggunakan tombol. Tombol 1 untuk putar searah jarum jam dan Tombol 2 untuk arah berlawanan jarum jam. Berikut adalah penjelasan scribt nya :
int pinStepper[4]={8,9,10,11};
//merupakan deklarasi variabel berupa sebuah array dimana pin-pin yang akan digunakan adalah pin D8,D9,D10 dan D11 const int State[4]={0b00001110,0b00001101,0b00001011,0b00000111}; int currentState=0; //merupakan deklarasi variabel int S1=6; int S2=7; //pada latihan kali ini saya menambahkan deklarasi variabel untuk pin yang akan gunakan sebagai inputan dimana pin yang akan gunakan sebagai inputan adalah pin D6 dan D7 void setup() //Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan untuk pertama kalinya. { int i; for(i=0;i<4;i++) //perulangan untuk mengambil nilai dari variabel array pinStepper { pinMode(pinStepper[i],OUTPUT); // inisialisasi variable pinStepper Sebagai outputan } pinMode(S1,INPUT); pinMode(S2,INPUT); //saya menambahkan inisialisasi variabel S1 dan S2 sebagai inputan } void loop() //Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan. { if (digitalRead(S1)==0) { //untuk mengecek apakah masukan digital pada variabel S1 sama dengan LOW while(digitalRead(S1)==0){ }; //Saklar S1 dilepas Step(¤tState,200); //akan memanggil method step dan memberi nilai pada variabel ¤tState dengan nilai 200 delay(1000); //jeda 1 menit } else if (digitalRead(S2)==0) { //untuk mengecek apakah masukan digital pada variabel S2 sama dengan LOW while(digitalRead(S2)==0){ }; //Saklar S1 dilepas Step(¤tState,-100); //akan memanggil method step dan memberi nilai pada variabel ¤tState dengan nilai -100 delay(500);} //jeda 0,5 detik } void Step(int *cState,int jumStep) //merupakan method dengan nama Step yang akan dipanggil pada void loop() { int a,i,state; state=*cState; //deklarasi variabel if(jumStep>0) //untuk mengecek apakah niali dari variabel jumStep lebih besar dari 0 { for(a=0;a<jumStep;a++) //jika if bernilai true maka akan menjalankan sebuah perulangan dengan persyaratan nilai dari variabel a kurang dari nilai dari variabel jumStep dan jika nilai variabel a masih memenuhi persyaratan tersebut maka nilainya akan ditambah 1 { state++; if(state==4) //untuk mengecek apakah nilai dari variabel state sama dengan 0 {state=0;} //jika iya maka nilai variabel state akan di 0 kan for(i=0;i<4;i++) //perulangan untuk menampilkan nilai dari variabel state dengan persyaratan i kurang dari 4 maka nilai i akan ditambah 1 { digitalWrite(pinStepper[i],bitRead (State[state],i)); //untuk menampilkan keluaran digital yang disimpan oleh variabel pinStepper dan state } delay(5); } *cState=state; //deklarasi variabel *cState sama dengan state } Else //akan dikerjakan jika if bernilai false { for(a=jumStep;a<0;a++) //jika if bernilai false maka akan menjalankan sebuah perulangan dengan persyaratan nilai dari variabel a kurang dari nilai dari 0 dan jika nilai variabel a masih memenuhi persyaratan tersebut maka nilainya akan ditambah 1 sedangkan variabel a sendiri nilainya sama dengan variabel jumStep { state--; //nilai variabel state dikurangi 1 if(state<0) //untuk mengecek apakah nilai dari variabel state kurang dari 0 {state=3;} //jika iya maka variabel state akan diberi nilai 3 for(i=0;i<4;i++) //perulangan untuk menampilkan nilai dari variabel state dengan persyaratan i kurang dari 4 maka nilai i akan ditambah 1 { digitalWrite(pinStepper[i],bitRead (State[state],i)); //untuk menampilkan keluaran digital yang disimpan oleh variabel pinStepper dan state } delay(5); } *cState=state; }} Hasil: |
D. Kesimpulan :
Dari praktikum tersebut dapat disimpulkan bahwa :
· jenis motor stepper yang kita gunakan untuk praktikum yaitu jenis motor stepper Unipolar dimana pada motor stepper tersebut mempunyai 6 buah kabel dimana 2 buah kabel untuk power dan 4 buah kabel sebagai phase .
· pada praktikum yang telah kita kerjakan diketahui bahwa motor stepper bekerja berdasarkan masukkan digital yang kita berikan akan tetapi saat praktikum ditemui kendala karena motor stepper langsung dapat arus listrik keluaran dari arduino sehingga kurang kuat untuk menggerakkan motor stepper
0 Response to "Aplikasi Motor Stepper menggunakan arduino uno"
Post a Comment