Home » All Post » Motor DC Jenis Stepper

Motor DC Jenis Stepper

Terdapat berbagai macam jenis motor DC yang sering digunakan dalam rangkain listrik dan elektronika. Pada dasarnya, nama motor disebut berdasarkan sumber energi listrik yang digunakan oleh motor tersebut untuk dapat bekerja secara normal. Sehingga hanya terdapat 2 jenis motor yaitu, motor AC (Alternating Current) dan DC (Direct Current). Motor adalah salah satu jenis aktuator yang digunakan sebagai output dari suatu rangkaian kontrol, entah itu kontrol untuk kepentingan yang simple (seperti water level) atau ke yang lebih kompleks (seperti robot).

Jika didasarkan pada jenis gerakan dan kontrolnya, motor memiliki banyak jenis baik yang type DC ataupun AC. Pada artikel kali ini, akan kita bahas mengenai salah satu jenis motor DC type Stepper. Kenapa disebut stepper, karena pergerakan dan kontrol yang diberikan dilakukan secara bertahap/step by step untuk motor tersebut bisa berputar sampai 360 derajat. Pergerakan dari Motor stepper mudah untuk lebih diatur dibandingkan dengan motor DC yang lain karena anda bisa memutar motor stepper berdasarkan derjat yang anda inginkan, hal ini berbeda dengan motor DC yang jika anda ingin memutarnya sekian derajat, maka kemungkinan besar ada kelebihan gerakan oleh motor DC tersebut sehingga kurang presisi. Aplikasi dari motor stepper banyak digunakan pada kontrol posisi, seperti mesin printer dan robotik.

Artikel kali ini kita akan membahas mengenai kontrol motor stepper dengan Arduino Microcontroller. Jenis Motor stepper yang akan kita gunakan adalah 28BYJ-48 dengan tegangan kerja 5Volt dan konsumsi arus sekitar 160mA untuk setiap lilitan dan 200mA saat motor dijalankan dengan kecepatan maksimum. Ada 2 cara untuk mengoperasika motor stepper ini yaitu dengan model 8 steps sequences dan 4 step sequences. Karena motor stepper biasa digunakan untuk kontrol posisi yang memiliki presisi lebih tinggi dari motor DC, maka 8 steps sequences menjadi pilihan dalam artikel ini untuk kita buat.

Jika Anda membeli motor 28BYJ-48 dipasaran telah dilengkapi dengan sebuah driver menggunakan IC ULN2003. IC ULN 2003 merupakan IC penguat arus yang didalamnya menggunakan konfigurasi transistor darlington. berikut penampakan dari rangkain driver ini.

driver

Driver motor stepper 28BYJ-48

IMG-20150411-01862

Rangkaian kontrol motor stepper 28BYJ-48

Baik, sekarang kita akan mulai pemrogramannya. Pada dasarnya, Arduino IDE sudah menyediakan library khusus untuk mengoperasikan motor stepper, selain itu juga terdapat library yang dapat diunduh dari internet. Namun pada blog ini, akan dibuat 2 sketch yaitu menggunakan library dan membuat sketch tanpa library.

Sketch dengan memanfaatkan library motor stepper adalah sebagai berikut :

#include <AccelStepper.h>
#include <LiquidCrystal.h>
#define HALFSTEP 8

// Motor pin definitions
#define motorPin1  47     // IN1 on the ULN2003 driver 1
#define motorPin2  49     // IN2 on the ULN2003 driver 1
#define motorPin3  51     // IN3 on the ULN2003 driver 1
#define motorPin4  53     // IN4 on the ULN2003 driver 1

// inisial awal penggunaan pin yang terhubung dengan driver ULN2003
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);

//inisial awal penggunaan pin untuk LCD Display
LiquidCrystal lcd(2, 4, 9, 10, 11, 12);

void setup()
{
pinMode(3,OUTPUT);
digitalWrite(3,LOW);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print(“Pakai Library”);
lcd.setCursor(0, 1);
lcd.print(“Type 28BYJ-48”);

stepper1.setMaxSpeed(1000.0);//mengatur nilai kecepatan maksimum dari putaran motor stepper
stepper1.setAcceleration(100.0);//Acceleration setting
stepper1.setSpeed(500); //Setting kecepatan yang diinginkan

}

void loop()
{
stepper1.runSpeed();
}

Bisa anda lihat, sketch menjadi sangat sederhana. Namun kenyataannya, meskipun didalam sketch ada syntax untuk setting kecepatan maksimum adalah 1000. Actual yang bisa digunakan dibawah itu, karena motor ini tidak bisa digunakan untuk kecepatan tinggi. Pada mode half speed (8 step sequences), maksum speed yang saya dapatkan adalah 8Rpm sedangkan pada mode full speed (4 step sequences), menjadi 16Rpm.

Sekarang kita bahas untuk pembuatan sketch sendiri tanpa memanfaatkan library. Untuk itu perlu dipahami terlebih dulu kombinasi pulsa/signal yang perlu diberikan ke masing-masing kumparan dalam motor stepper sebagai berikut:

half sequences

Tabel signal yang diperlukan motor stepper untuk beroperasi half step mode

Tabel tersebut akan kita letakkan didalam variabel Array sehingga bisa dengan mudah kita akses dan kirimkan ke output Pin dari Arduino Board melalu driver.

#include <LiquidCrystal.h> //Include LCDs Lib
/*
Pin 1 to Arduino GND
Pin 2 to Arduino 5V
Pin 3 to Vee Brightness control
Pin 4 to Arduino pin 2
Pin 5 to Arduino pin 3 –> Pin RW = Active Write Low
Pin 6 to Arduino pin 4
Pin 11 to Arduino pin 9
Pin 12 to Arduino  pin 10
Pin 13 to Arduino pin 11
Pin 14 to Arduino pin 12
*/

int stepper_data[8][4] = {
{0,0,0,1},
{0,0,1,1},
{0,0,1,0},
{0,1,1,0},
{0,1,0,0},
{1,1,0,0},
{1,0,0,0},
{1,0,0,1},
};

LiquidCrystal lcd(2, 4, 9, 10, 11, 12);
int P0 = 47; int P1 = 49; int P2 = 51; int P3 = 53;
int deg = 0; int jumlah_putaran = 8;

int speednya = 1500;//smaller = faster = fast delay

void setup()//setup section
{
pinMode(3,OUTPUT);
digitalWrite(3,LOW);
lcd.begin(16, 2); //LCD begins. LCD yang kita gunakan 16×2
lcd.setCursor(0, 0); // Baris ke-0 dan kolom ke-0
lcd.print(“Type 28BYJ-48”);
lcd.setCursor(0, 1); // Baris ke-1 dan kolom ke-0
lcd.print(“Jumlah_Putaran”);
pinMode(P0, OUTPUT);
pinMode(P1, OUTPUT);
pinMode(P2, OUTPUT);
pinMode(P3, OUTPUT);
}

void loop()
{
int temp_putaran;

for (temp_putaran=1;temp_putaran<=jumlah_putaran;temp_putaran++)
{
deg=0;
while(deg<510)
{
maju();
deg++;
}
lcd.setCursor(15,1);
lcd.print(temp_putaran);
}
delay(2000);
for (temp_putaran=1;temp_putaran<=jumlah_putaran;temp_putaran++)
{
deg=0;
while(deg<510)
{
mundur();
deg++;
}
lcd.setCursor(15,1);
lcd.print(temp_putaran);
}
delay(2000);
}

void maju()
{
for (int i=0; i <= 7; i++)
{
digitalWrite(P0, stepper_data[i][0]);
digitalWrite(P1, stepper_data[i][1]);
digitalWrite(P2, stepper_data[i][2]);
digitalWrite(P3, stepper_data[i][3]);
delayMicroseconds(speednya);
}
}

void mundur()
{
for (int i = 7; i >= 0; i–)
{
digitalWrite(P0, stepper_data[i][0]);
digitalWrite(P1, stepper_data[i][1] );
digitalWrite(P2, stepper_data[i][2] );
digitalWrite(P3, stepper_data[i][3] );
delayMicroseconds(speednya);
}
}

Dari hasil percobaan, perubahan variable  “speednya” yang menentukan kecepatan putar dari mtor stepper didapat data kecepatan sebagai berikut :

Set variable “speednya” ke nilai 25 = 8rpm
Set variable “speednya” ke nilai 50=8.5rpm
Set variable “speednya” ke nilai 75=8.75rpm
Set variable “speednya” ke nilai 100=8.75rpm
Set variable “speednya” ke nilai 200=8.25rpm
Set variable “speednya” ke nilai 500=7rpm
Set variable “speednya” ke nilai1000=5.75rpm

Video Hasil Perobaan dengan Library :

 

Video Hasil Percobaan tanpa Library :

 

Sketch Progam Arduino, bisa anda download disini.

 

References :

http://www.airspayce.com/mikem/arduino/AccelStepper/index.html

28BYJ-48 Stepper Motor with ULN2003 driver and Arduino Uno

http://arduino.cc/en/Reference/Stepper

Advertisements

2 Comments

  1. IMAM FADLI says:

    untuk 2 motor DC gimana wiring nya gimana ya mas?

    Like

    • Mas Imam, maaf baru aktif kembali di blog ini.
      wiring untuk motor DC bisa disusun paralel dengan sumber, sehingga akan diperlukan kontrol 2.
      meskipun demikian, pada aplikasi sebenarnya sumber kontrol bisa dari 1
      yaitu bisa PLC, Microcontroller, ataupun rangkaian kontaktor/relay.

      Thanks,

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: