PERCOBAAN II
MENJALANKAN MOTOR STEPPER
A. TUJUAN
1. Mahasiswa memahami prinsip kerja motor stepper dan rangkaian driver
motor stepper ULN2003.
2. Mahasiswa memahami program assembly pada mikrokontroller AT89s52
untuk mengatur arah putaran motor stepper.
C. DASAR TEORI
Motor Stepper adalah salah satu alat mesin listrik yang mengubah sinyal-
sinyal listrik ke dalam gerakan-gerakan mekanis diskrit. Batang atau
spindle dari suatu motor stepper berputar disebabkan kenaikan-kenaikan
langkah diskrit ketika sinyal listrik berada di dalam urutan yang tepat
Cara kerja motor stepper didasari dengan prinsip magnet dasar seperti kutub magnet.
Jika lilitan stator pada gambar 2:
a) Diberi energy maka lilitan stator A adalah kutub selatan, stator B adalah kutub
utara, dan rotor permanent magnet (PM) diposisikan seperti pada gambar,
maka torsi motor akan bertambah seiring pergerakan rotor ke 180o. Maka hal
tersebut akan menjadi tidak mungkin untuk menentukan arah dari putaran dan
dalam rotor tidak akan bergerak seperti yang telah dikatakan tadi jika gayanya
stabil.
b) dua kutub stator tambahan C dan D dipasang dan diberi energi seperti terlihat
dalam gambar, kita bisa memprediksi arah dari putaran rotor.
c) arah putaran rotor akan konstan searah jarum jam dengan rotor sejajar
dengannya antara ”rata-rata” pole selatan dan ”rata-rata” pole utara. Seperti
diperlihatkan dalam gambar 2.(c)
D. PROSEDUR PERCOBAAN
KONFIGURASI SISTEM
1. Menghubungkan port 0 (pin4-7) dengan motor stepper menggunakan
kabel konektor.
2. Menghubungkan modul Basic Mikrocontroller AT89s52 Trainer dengan
DU-ISP V3 downloader.
3. Menghubungkan supplay tegangan sebesar 5VDC dengan Modul Basic
Mikrocontroller AT89s52 Trainer..
4. Memberikan suplay tegangan sebesar 12VDC ke motor stepper dan IC
ULN 2003.
5V 5V
P P
O O
R R
DU-ISP V3 t t
To Computer 1 0 IC ULN 2
AT89s52 12 v
Power Supply
5V 12 V
-+ -+
●● ●●
LANGKAH PERCOBAAN
Percobaan 2.1. arah putaran motor stepper searah jarum jam (CW)
Setelah melakukan konfigurasi system lakukan langkah berikut:
1. Buka program M-IDE Studio for MCS 51, sebagai editor dan compiler
program
2. Ketik program berikut ini :
org 0H
stepper equ P1
main:
mov stepper, #01H
acall delay
mov stepper, #02H
acall delay
mov stepper, #04H
acall delay
mov stepper, #08H
acall delay
sjmp main
delay:
Mov r5,#10 ; 1s
3. Simpanlah program yang telah anda buat dan berikan nama dengan tipe
file *.asm
4. Pada program M-IDE tersebut pilih Build /F9 untuk melakukan
kompilasi program dari *.asm ke *.hex
5. Hidupkan DU-ISP V3 downloader
10. Pilih tab program seperti pada gambar, pada frame flash cari file *.hex
program yang akan di download kemudian pilih program untuk
mendownload program ke Mikrokontroller.
Percobaan 2.1. arah putaran motor stepper berlawanan arah jarum jam
(CCW)
Setelah melakukan konfigurasi system lakukan langkah berikut:
1. Lakukan langkah seperti Percobaan 2.1
2. Untuk skrip programnya sebagai berikut :
org 0H
stepper equ P1
main:
mov stepper, #08H
acall delay
mov stepper, #04H
acall delay
mov stepper, #02H
acall delay
mov stepper, #01H
acall delay
sjmp main
delay:
Mov r5,#10 ; 1s
Script pertama
org 0H
stepper equ P1
main:
mov stepper, #01H
acall delay
mov stepper, #02H
acall delay
mov stepper, #04H
acall delay
mov stepper, #08H
acall delay
sjmp main;
delay:
Mov r5,#10;
isi_r6:
Mov r6,#200;
isi_r7:
Mov r7,#250
djnz r7,$
djnz r6,isi_r7
djnz r5,isi_r6
Ret
End
Data script diatas akan membuat motor stepper berputar searah jarum jam
(berputar ke kanan)
Script kedua
org 0H
stepper equ P1
main:
mov stepper, #08H
acall delay
mov stepper, #04H
acall delay
mov stepper, #02H
acall delay
mov stepper, #01H
acall delay
sjmp main;
delay:
Mov r5,#10;
isi_r6:
Mov r6,#200;
isi_r7:
Mov r7,#250
djnz r7,$
djnz r6,isi_r7
djnz r5,isi_r6
Ret
End
Data script diatas akan membuat motor stepper berputar berlawanan arah
dengan jarum jam (berputar ke kiri)
F. ANALISA DATA
Dari listing program di atas dapat dijelaskan secara terpisah sebagai berikut:
Pada percobaan 2.1. arah putaran motor stepper searah jarum jam
(CW)
org 0H
Perintah di atas berfungsi untuk memberitahukan program untuk mulai
dari alamat 0000 (null).
stepper equ P1
Perintah di atas berfungsi untuk konfigurasi “stepper” yang akan
dianggap sebagai “P1”.
main:
Perintah di atas merupakan sebuah label yang berfungsi sebagai
penunjuk. Label ini dapat mempermudah pemanggilan program secara
berulang.
acall delay
Perintah di atas berfungsi untuk memanggil subroutine delay
acall delay
Perintah di atas berfungsi untuk memanggil subroutine delay
acall delay
Perintah di atas berfungsi untuk memanggil subroutine delay
acall delay
Perintah di atas berfungsi untuk memanggil subroutine delay
sjmp main;
Perintah di atas berfungsi untuk memanggil kembali subroutine main
agar motor stepper terus berputar. Dan tanda “;” merupakan tanda
akhir dari sebuah subroutine.
delay:
Perintah di atas merupakan sebuah label yang berfungsi sebagai
penunjuk. Label ini dapat mempermudah pemanggilan program secara
berulang.
Mov r5,#10;
Perintah di atas merupakan proses inisialisasi r5 (register) dengan nilai
10 desimal.
isi_r6:
Perintah di atas merupakan sebuah label yang berfungsi sebagai
penunjuk. Label ini dapat mempermudah pemanggilan program secara
berulang.
Mov r6,#200;
Perintah di atas merupakan proses inisialisasi r6 (register) dengan nilai
200 desimal.
isi_r7:
Perintah di atas merupakan sebuah label yang berfungsi sebagai
penunjuk. Label ini dapat mempermudah pemanggilan program secara
berulang.
Mov r7,#250;
Perintah di atas merupakan proses inisialisasi r7 (register) dengan nilai
250 desimal.
djnz r7,$
Perintah di atas merupakan proses decrement dari sebuah register r7
selama nilai dari r7 tidak sama dengan 0, maka akan lompat ke label $.
djnz r6,isi_r7
Perintah di atas merupakan proses decrement dari sebuah register r6
selama nilai dari r6 tidak sama dengan 0, maka akan lompat ke label
isi_r7.
djnz r5,isi_r6
Ret
Perintah di atas berfungsi untuk keluar dari subroutine yang dipanggil,
contohnya menggunakan perintah acall perintah pemanggil subroutine
yang lain.
End
Perintah di atas berfungsi untuk mengakhiri seluruh proses yang
dilakukan sebelumnya.
Pada percobaan 2.2. arah putaran motor stepper berlawanan arah jarum
jam (CCW)
org 0H
Perintah di atas berfungsi untuk memberitahukan program untuk mulai
dari alamat 0000 (null).
stepper equ P1
Perintah di atas berfungsi untuk konfigurasi “stepper” yang akan
dianggap sebagai “P1”.
main:
Perintah di atas merupakan sebuah label yang berfungsi sebagai
penunjuk. Label ini dapat mempermudah pemanggilan program secara
berulang.
acall delay
Perintah di atas berfungsi untuk memanggil subroutine delay
acall delay
Perintah di atas berfungsi untuk memanggil subroutine delay
acall delay
Perintah di atas berfungsi untuk memanggil subroutine delay
acall delay
Perintah di atas berfungsi untuk memanggil subroutine delay
sjmp main;
delay:
Perintah di atas merupakan sebuah label yang berfungsi sebagai
penunjuk. Label ini dapat mempermudah pemanggilan program secara
berulang.
Mov r5,#10;
Perintah di atas merupakan proses inisialisasi r5 (register) dengan nilai
10 desimal.
isi_r6:
Perintah di atas merupakan sebuah label yang berfungsi sebagai
penunjuk. Label ini dapat mempermudah pemanggilan program secara
berulang.
Mov r6,#200;
Perintah di atas merupakan proses inisialisasi r6 (register) dengan nilai
200 desimal.
isi_r7:
Perintah di atas merupakan sebuah label yang berfungsi sebagai
penunjuk. Label ini dapat mempermudah pemanggilan program secara
berulang.
Mov r7,#250;
Perintah di atas merupakan proses inisialisasi r7 (register) dengan nilai
250 desimal.
djnz r7,$
Perintah di atas merupakan proses decrement dari sebuah register r7
selama nilai dari r7 tidak sama dengan 0, maka akan lompat ke label $.
djnz r6,isi_r7
Perintah di atas merupakan proses decrement dari sebuah register r6
selama nilai dari r6 tidak sama dengan 0, maka akan lompat ke label
isi_r7.
djnz r5,isi_r6
Perintah di atas merupakan proses decrement dari sebuah register r5
selama nilai dari r5 tidak sama dengan 0, maka akan lompat ke label
isi_r6.
Ret
Perintah di atas berfungsi untuk keluar dari subroutine yang dipanggil,
contohnya menggunakan perintah acall perintah pemanggil subroutine
yang lain.
end
Perintah di atas berfungsi untuk mengakhiri seluruh proses yang
dilakukan sebelumnya.
G. KESIMPULAN
a. Motor stepper adalah motor yang berputar step demi step dengan arah
perputaran dan kecepatan putarannya dapat diatur.
b. Untuk menjalankan motor stepper dapat dilakukan dengan cara membuat
bahasa rakitan dengan menggunakan kode hexadecimal pada mikroprosessor
AT89s52.
c. Arah putaran motor stepper dapat diubah dengan mengubah/membalik
urutan hexa pada nilai 1, 2, 4, 8
DAFTAR PUSTAKA
TUGAS PENDAHULUAN
1. Cari data sheet ULN 2003
2. Jelaskan secara jelas dan tepat dari prinsip kerja motor stepper dan jelaskan
pula bagaimana teknis pergerakan dari motor stepper.
Pada Motor DC biasa, akan berputar dan berputar terus selama power supply ada.
Tidak ada rangkaian cerdas tertentu yang diperlukan untuk mengendalikan motor
tersebut, kecuali hanya memperlambat putaran atau membalik putaran, dengan
menerapkan polaritas balik. Motor stepper adalah sangat berbeda. Jika anda
memberikan power pada motor ini, maka motor ini akan berada dalam keadaan diam,
agar motor dapat berputar, anda harus merubah sinyal yang masuk ke motor. Sebagai
ilustrasi, dapat dibayangkan sebuah kompas dengan elektromagnet disekitarnya.
Sebagaimana digambarkan pada gambar 2.2., apabila power yang diberikan pada
elektromagnet diganti, maka akan merubah posisi jarum dari kompas.
Dengan empat buah elektromagnet maka gerakan akan melompat secara kasar.
Sekarang bayangkan susunan yang sama dengan 100 elektromagnet yang mengitari
kompas. Dengan mangatur energi yang mengalir pada setiap elektromagnet dalam
berurutan, maka jarum akan memerlukan sebanyak 100 langkah untuk melakukan
satu kali putaran. Tetapi dengan pengaturan 100 elektromagnet secara individu, akan
memerlukan elektronika yang kompleks.
Gambar 4.3. Ilustrasi motor stepper dengan jarum kompas dengan elektromagnet
A B C D KOMENTAR
1 0 0 0 Take a step clock wise
0 1 0 0 another step clock wise
0 0 1 0 another step clock wise
0 0 0 1 another step clock wise
0 0 0 1 No step take
0 0 1 0 Take a step back
A B C D KOMENTAR
1 0 0 0 Take a step clock wise
1 1 0 0 Half a step clock wise
0 1 0 0 The complete full step clock wise
0 1 1 0 another half step clock wise
0 0 1 0 The complete full step clock wise
0 0 1 1 Another half step clock wise
0 0 0 1 The complete full step clock wise
1 0 0 1 another half step clock wise
1 0 0 0 Start position