LAPORAN AKHIR 2
1. Prosedur
[Kembali]
LAPORAN AKHIR PRAKTIKUM
MODUL 2 PERCOBAAN 6
Kontrol Putaran Motor Stepper
- Rangkai semua komponen sesuai kondisi yang dipilih
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino (Verify and Upload)
- Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
- Finish
2. Hardware dan diagram blok
[Kembali]
a. hardware
b. Digram Blok
3. Rangkaian Simulasi dan Prinsip kerja
[Kembali]
Gambar Rangkaian
Percobaan ini bertujuan untuk mengontrol motor stepper dengan menggunakan input dari push button. Push button digunakan untuk mengatur arah gerakan motor stepper (maju atau mundur) dan untuk memicu gerakan khusus (putaran maju-mundur atau gerakan dengan jeda). Motor stepper dijalankan dengan melakukan serangkaian langkah (step) sesuai urutan yang telah ditentukan. Kecepatan gerakan motor stepper dapat diatur melalui nilai delaytime.
Pada tahap awal adalah setup (pengaturan awal). Yang mana pin-pin yang digunakan untuk mengontrol motor stepper (IN1, IN2, IN3, IN4) dan input dari push button (PB1, PB2, PB3, PB4) diatur menggunakan pinMode. Pin-pin untuk motor stepper diatur sebagai output, sedangkan pin-pin untuk push button diatur sebagai input. Selanjutnya di dalam loop utama (void loop()), program akan membaca status dari push button menggunakan digitalRead(). Berdasarkan kondisi push button yang ditekan, program memanggil fungsi yang sesuai untuk menggerakkan motor stepper.
Kondisi dan step yang akan dijalankan :
1) Saat Push Button 1 ditekan akan terjadi 2 kondisi berurutan yakni maju dan mundur.
Program akan memanggil fungsi maju() untuk menggerakkan motor stepper maju.Fungsi maju() akan dijalankan, yang secara berurutan akan memanggil fungsi langkah-langkah (step) untuk menggerakkan motor stepper ke depan (maju) dalam 50 langkah.Setelah gerakan maju selesai, program akan melakukan jeda selama 2 detik dengan menggunakan fungsi delay(2000).Kemudian, program akan memanggil fungsi mundur() untuk menggerakkan motor stepper mundur.Fungsi mundur() akan dijalankan, yang secara berurutan akan memanggil fungsi langkah-langkah (step) untuk menggerakkan motor stepper ke belakang (mundur) dalam 50 langkah.
2) Saat Push Button 2 ditekan, program akan memanggil kondisi yang sesuai dalam blok if (b2 == HIGH).
Di dalam kondisi ini, terdapat perulangan (loop) yang akan melakukan gerakan maju (60 langkah) dan gerakan mundur (60 langkah) secara bergantian.
Ini berarti motor stepper akan berputar maju selama 60 langkah, kemudian mundur selama 60 langkah, dan begitu seterusnya.Pada rangkaian juga terlihat 2 kondisi yang bergantian ini, yang mana untuk waktu delay nya lebih lama dibanding kondisi saat Push Button 1 High
3) Saat Push Button 3 ditekan, program akan memanggil kondisi yang sesuai dalam blok if (b3 == HIGH).
Program akan memanggil fungsi mundur() untuk menggerakkan motor stepper mundur. Terlihat pada percobaan di lab bahwa kondisi ini terpenuhi. Saat Push Button 3 ditekann maka motor stepper akan bereaksi untuk mundur
4) Saat PB4 ditekan, program akan memanggil kondisi yang sesuai dalam blok if (b4 == HIGH).
Program akan memanggil fungsi maju() untuk menggerakkan motor stepper maju. Dan ini sudah terbukti pada percobaan praktikum yang terlah dilalui. Bisa terliat dari video demonstrasi di bawah.
Setiap kali melakukan langkah (step), program melakukan delay sesuai dengan delaytime yang ditentukan. Hal ini untuk mengatur kecepatan gerakan motor stepper. Semakin kecil nilai delaytime, semakin cepat motor stepper bergerak.
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
#define PB1 2
#define PB2 3
#define PB3 4
#define PB4 5
int step = 100;
int delaytime=5; //makin kecil delay, makin cepat motor berputar
void setup(){
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(PB1, INPUT);
pinMode(PB2, INPUT);
pinMode(PB3, INPUT);
pinMode(PB4, INPUT);
}
void loop(){
int b4 = digitalRead(PB4);
int b3 = digitalRead(PB3);
int b2 = digitalRead(PB2);
int b1 = digitalRead(PB1);
if (b4 == HIGH){
maju();
}
else if (b3 == HIGH){
mundur();
}
else if (b2 == HIGH){
for (int i = 0; i < 60; i ++){
maju();
}
for (int i = 0; i < 60; i++){
mundur();
}
}
else if (b1 == HIGH){
for (int i = 0; i < 50; i++){
maju();
}
delay(2000);
for (int i = 0; i < 50; i++){
mundur();
}
}
}
void maju(){
//step 4
step1();
delay(delaytime);
//step 3
step2();
delay(delaytime);
//step 2
step3();
delay(delaytime);
//step 1
step4();
delay(delaytime);
}
void mundur(){
//step 4
step4();
delay(delaytime);
//step 3
step3();
delay(delaytime);
//step 2
step2();
delay(delaytime);
//step 1
step1();
delay(delaytime);
}
void step1(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
}
void step2(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void step3(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
void step4(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
b. Flowchart
5.Kondisi [Kembali]
Percobaan 6 => KOntrol Putaran Motor DC
6.Video Demo[Kembali]
7. Download File
[Kembali]
Download HMTL klik disini
Download Simulasi Rangkaian klik disini
Download Video Demo klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Push Button klik disini
Download Datasheet ULN2003A klik disini
Data sheet Motor Stepper klik disini
Tidak ada komentar:
Posting Komentar