Hendawan’s Weblog

Just another WordPress.com weblog

Pengendalian Motor Stepper

Dasar Motor Stepper

Motor stepper adalah sebuah peralatan elektromekanik yang mengubah pulsa elektrik menjadi pergerakan mekanik. Shaft atau kumparan motor stepper berputar per step ketika pulsa elektrik dimasukkan ke kumparan tersebut dengan urutan yang benar. Urutan pemberian pulsa ke motor stepper akan menyebabkan arah putaran yang berbeda. Sedangkan besarnya frekuensi dari pulsa akan mempengaruhi kecepatan putaran motor stepper.

Motor Stepper Unipolar

Motor stepper unipolar baik tipe 5 atau 6 kabel biasanya dihubungkan seperti pada gambar diatas, dengan sebuah center tap pada tiap kumparan. Pada penggunaannya, center tap dihubungkan ke supply positif, dan dua ujung kumparan lainnya dihubungkan ke ground.

Bagian rotor motor pada gambar diatas dibuat dari magnet permanent dengan 6 kutub, 3 kutub utara dan 3 kutub selatan.

Step Angle / SA

Motor stepper bergerak per step. Setiap bergerak satu step, motor stepper akan berputar beberapa derajat sesuai dengan step anglenya. Step angle tergantung dari jumlah kutub magnet motor stepper. Jumlah putaran yang diperlukan agar motor stepper bergerak 1 putaran penuh (360 derajat) adalah :

Step = 360 derajat / Step Angle

Misalnya, sebuah motor stepper memiliki SA=1,8 derajat maka untuk untuk berputar satu putaran penuh memerlukan jumlah step sebanyak : 360 / 1,8 = 200 step

Kendali Arah Putaran

Arah putaran motor stepper ditentukan oleh arah urutan aktifasi kumparannya. Secara program, ini bisa dilakukan dengan mengubah arah pergeseran bit.

Jika arah pergesarannya ke kiri, maka motor stepper akan berputar kearah kiri pula (CCW)

Jika arah pergeserannya ke kanan, maka motor stepper akan berputar ke arah kanan (CW)

Arah Putaran Searah Jarum Jam

#include <mega8535.h>

#include <delay.h>

// Declare your global variables here

int i;

unsigned char x;

void main(void)

{

.

.

i=0;

x=0×88;

while (1)

{

// Place your code here

while (i<=3)

{

i++;

PORTA=x;

delay_ms(500);

x=x>>1;

if (i>=4)

{

i=0;

x=0×88;

}

}

};

}

Arah Putaran Berlawanan Arah Jarum Jam

#include <mega8535.h>

#include <delay.h>

// Declare your global variables here

int i;

unsigned char x;

void main(void)

{

.

.

.

i=0;

x=0×11;

while (1)

{

// Place your code here

while (i<=3)

{

i++;

PORTA=x;

delay_ms(500);

x=x<<1;

if (i>=4)

{

i=0;

x=0×11;

}

}

};

}

Kendali Kecepatan

Kecepatan motor stepper ditentukan oleh kecepatan aktifasi kumparannya. Secara program, ini bisa dilakukan dengan mengubah delay waktu pergeseran tiap bitnya. Semakin cepat delay waktunya, kecepatan motor stepper juga akan bertambah.

#include <mega8535.h>

#include <delay.h>

// Declare your global variables here

int i;

unsigned char x;

void main(void)

{

.

.

.

i=0;

x=0×88;

while (1)

{

// Place your code here

while (i<=3)

{

i++;

PORTA=x;

delay_ms(50);

x=x>>1;

if (i>=4)

{

i=0;

x=0×88;

}

}

};

}

Kendali Torsi

Torsi motor stepper ditentukan oleh banyaknya jumlah kumparan yang aktif pada saat yang sama. Torsi akan bertambah besar jika 2 kumparan aktif pada saat yang sama.

Secara program, ini bisa dilakukan dengan mengubah kondisi bit.

#include <mega8535.h>

#include <delay.h>

// Declare your global variables here

int i;

unsigned char x;

void main(void)

{

.

.

.

i=0;

x=0×4C;

while (1)

{

// Place your code here

while (i<=3)

{

i++;

PORTA=x;

delay_ms(500);

x=x>>1;

if (i>=4)

{

i=0;

x=0×4C;

}

}

};

}


Kendali Posisi

Derajat putaran motor stepper ditentukan oleh banyaknya jumlah pergeseran aktifasi kumparannya. Secara program, ini bisa dilakukan dengan mengubah jumlah pergeseran bit.

Pada motor stepper dengan SA=1,80 , agar motor stepper bergerak 1800 maka diperlukan pergeseran step sebanyak : 180/1,8 =100 step

#include <mega8535.h>

#include <delay.h>

// Declare your global variables here

int i,step;

unsigned char x;

void shift()

{

if (x==0×11)

{

PORTA=x;

delay_ms(500);

x=0×88;

}

else

{

PORTA=x;

delay_ms(500);

x=x>>1;

}

}

void main(void)

{

.

.

.

step=100;

x=0×88;

i=0;

while (1)

{

// Place your code here

if (i<=step)

{

shift();

i++;

}

else

PORTA=0×00;

};

}

October 23, 2008 Posted by hendawan | Tutorial | | 6 Comments