Sebelum melakukan percobaan akan lebih baik apabila kita mengenal sepesifikasi dari motor stepper yang digunakan, berikut detailnya:
Tampilan dari Motor Stepper 28BYJ-48
Atikel lain:
LED Berkedip
Lampu Lalu Lintas Arduino
Pengujian Sismin Arduino Mega 2560 (Kombinasi LED)
Sumber Gambar: dataSheet |
Sumber Gambar: DataSheet |
Konfigurasi Pin dan Kabel:
Sumber Gambar: DataSheet |
Ada
hal yang perlu diketahui sebelum mengguakan Motor Stepper 28BYJ-48 ini,
yaitu jumlah step dalam satu putaran, perhitungannya sebagai berikut:
Motor ini memiliki rasio gear sebesar 64, dan putaran per stepnya sebesar 5.625° jadi motor ini memiiki step sebanyak 4096.
steps = Jumlah step per satu Putaran * Rasio Gear.
steps= (360°/5.625°)*64"Rasio Gear" = 64 * 64 =4096 .
Nilai ini akan dimasukan ke dalam Sket (Program) Arduino
steps= (360°/5.625°)*64"Rasio Gear" = 64 * 64 =4096 .
Nilai ini akan dimasukan ke dalam Sket (Program) Arduino
Untuk Switching Sequence (Urutan peralihan) dari pergerakan Motor stepper ditunjukan tabel berikut ini:
Sumber Gambar: http://www.instructables.com/id/BYJ48-Stepper-Motor/?ALLSTEPS |
Tabel diatas berguna untuk mengatur pergerakan motor stepper. Tanda strip (-) nantinya akan diberi masukan HIGH, dan kosong diberi masukan LOW pada program arduino.
Berikut program Arduino yang digunakan:
/*Tampilan Video hasil percobaan:
BYJ48 Stepper motor code
Connect :
IN1 >> D8
IN2 >> D9
IN3 >> D10
IN4 >> D11
VCC ... 5V Prefer to use external 5V Source
Gnd
written By :Mohannad Rawashdeh
http://www.instructables.com/member/Mohannad+Rawashdeh/
28/9/2013
*/
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
int Steps = 0;
boolean Direction = true;// gre
unsigned long last_time;
unsigned long currentMillis ;
int steps_left=4095;
long time;
void setup()
{
Serial.begin(115200);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// delay(1000);
}
void loop()
{
while(steps_left>0){
currentMillis = micros();
if(currentMillis-last_time>=1000){
stepper(1);
time=time+micros()-last_time;
last_time=micros();
steps_left--;
}
}
Serial.println(time);
Serial.println("Wait...!");
delay(2000);
Direction=!Direction;
steps_left=4095;
}
void stepper(int xw){
for (int x=0;x<xw;x++){
switch(Steps){
case 0:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
case 1:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
break;
case 2:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 3:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 4:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 5:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 6:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 7:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
default:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
}
SetDirection();
}
}
void SetDirection(){
if(Direction==1){ Steps++;}
if(Direction==0){ Steps--; }
if(Steps>7){Steps=0;}
if(Steps<0){Steps=7; }
}
Sumber Tulisan: Terinspirasi dari situs:
http://www.instructables.com/id/BYJ48-Stepper-Motor/?ALLSTEPS.
Dengan beberapa penambahan dan pengurangan.
Selamat Mencoba...
Semoga Bermanfaat....
Baca juga:
Tidak ada komentar:
Posting Komentar