Arduino Mengontrol Stepper dengan ULN2003
Pada tutorial kali ini kita akan mencoba mengontrol motor stepper dengan tipe 28BYJ-48 dengan menggunakan driver ULN2003
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:
Arduino Mengontrol Stepper dengan ULN2003
Cara Menambahkan Libraries Arduino
Mengontrol Motor DC dengan Potensio
Menggunakan IC Motor Driver L293D
Spesifikasi lengkap dari motor Stepper:
Untuk Switching Sequence (Urutan peralihan) dari pergerakan Motor stepper ditunjukan tabel berikut ini:
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:
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:
Menggunakan Sensor L3G4200D
Menggunakan Sensor Flex
Prototipe Robot Lengan berbasis Arduino Mega 2560 dengan Pengendali Pergerakan Lengan Manusia
Membuat Aplikasi Android dgn MIT App Inventor2
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:
Arduino Mengontrol Stepper dengan ULN2003
Cara Menambahkan Libraries Arduino
Mengontrol Motor DC dengan Potensio
Menggunakan IC Motor Driver L293D
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:
Menggunakan Sensor L3G4200D
Menggunakan Sensor Flex
Prototipe Robot Lengan berbasis Arduino Mega 2560 dengan Pengendali Pergerakan Lengan Manusia
Membuat Aplikasi Android dgn MIT App Inventor2
Nice post. Keep update yaa
ReplyDeleteTerimakasih, semoga bermanfaat. Tapi untuk update masalah arduino nya sepertinya agak sulit karena kesibukan lain... 😀
Deletebagaimana cara menentukan jumlah langkahnya??
ReplyDeleteMaaf kak untuk kasus ini perlu di coba langsung, untuk mendapatkan solusinya. Penulis jarang mencoba lagi nih. 😂
Deletemaster klo setep mottor itu bisa menentukan sudut drajat gax ?
ReplyDeleteKalau stepper sudutnya bisa di tentukan kak, biasanya tiap motor steper memiliki ketelitian sudut tersendiri, bisa di cek di datasheet masih-masing motor stepper
DeleteBoleh minta kodingannya yang untuk putaran motor stepper setiap 45 derajad?
Delete