TUGAS AKHIR
Disusun oleh
Nama Mahasiswa : ANDI SUSANTO
Nomor Mahasiswa : 025114025
i
STEPPER MOTOR LEARNING TOOL
FINAL PROJECT
By :
Student Name : ANDI SUSANTO
Student Number : 025114025
ii
iii
iv
PERNYATAAN KEASLIAN KARYA
“Saya menyatakan dengan sesungguhnya bahwa tugas akhir yang saya tulis ini
tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam
Penulis,
Andi Susanto
v
HALAMAN MOTTO
Kill or to be killed…………………
Dengan doa,
Aku pintar…..…..
Aku bisa…………
Aku sanggup……
vi
HALAMAN PERSEMBAHAN
&
vii
INTISARI
Salah satu dari pembelajaran motor elektrik didalam teknik elektro adalah
motor stepper. Untuk mempelajara cara kerja motor stepper lebih baik digunakan alat
bantu belajar. Tujuan dari alat belajar atau alat pelatian adalah membantu masyarakat
yang ingin mempelajari teknologi dengan mudah dan cepat.
Skripsi ini membahas tentang alat bantu belajar motor stepper. Peralatan ini
terdiri dari saklar untuk memilih mode, motor stepper dengan jarum penunjuk sudut,
LCD untuk menampilkan informasinya dan indicator LED. Piranti pengendali yang
lain adalah tombol START dan tombol RESET. Ada dua jenis waktu tunda: waktu
tunda otomatis dan waktu tunda manual. LCD digunakan untuk tampilan kendali pola
motor stepper danbesar pulsa juga arah putaran motor stepper. Mode untuk
mengoperasikan motor stepper adalah langkah penuh eksitasi tunggal, langkah penuh
eksitasi ganda, langkah setengah. Indicator LED digunakan untuk mendeteksi adanya
aktivitas dari koil. Pengendali utama digunakan mikrokontroler AT89S51.
Hasilnya adalah motor stepper bekerja dengan baik. Dengan menggunakan
control panel pengguna dapat belajar mengoperasikan motor stepper dengan mudah
dan cepat.
viii
ABSTRACT
One of the electric motor studied in electrical engineering is stepper motor. To
learn how stepper motor works it better using trainer board. The purpose of teaching
tools or trainer board is help people who want learn the technology easily and fast.
This paper discussed about stepper motor learning tool. This equipment
consists of switch to select mode, stepper motor with angle pointer, LCD to display
information and some LED indicator. Another control device are START button and
RESET button. There are two options for delay generation : automatic delay time and
manual delay time. LCD used to display motor stepper control pattern and number of
pulses also stepper motor direction. Mode for Motor stepper operation are FULL
STEP single excitation, FULL STEP double excitation , HALF STEP. LED indicator
used to indicate activity of coil. The main controller used a AT89S51 microcontroller.
The results are motor stepper work well. Using control panel user can learn the
operation of motor stepper easily and fast.
ix
KATA PENGANTAR
Puji syukur penulis panjatkan kepada tuhan yesus kristus atas berkat dan
rahmat-Nya, sehingga penulis akhirnya dapat menyelesaikan tugas akhir ini dengan
baik.
Dalam penulisan tugas akhir ini penulis menyadari bahwa ada begitu banyak
yang telah memberikan bimbingan, dorongan, tenaga, perhatian dan bantuan sehingga
tugas akhir ini dapat terselesaikan. Oleh karena itu dengan segala kerendahan hati
penulis ingin mengucapkan terima kasih kepada:
1. Tuhan Yesus kristus atas rahmat, penyertaan dan keajaiban-keajaiban yang
telah diberikan-Nya.
2. Bapak Ir. Greg. Heliarko, S.J., S.S., B.ST., M.A., M.Sc. selaku dekan
fakultas sains dan teknologi.
3. Bapak Augustinus Bayu Primawan, ST., M.Eng. selaku ketua jurusan
fakultas sains dan teknologi.
4. Bapak B.Djoko Untoro S., SSi., M.T selaku pembimbing I terima kasih
atas ide-ide, bimbingan dan dorongan yang tidak henti-hentinya sehingga
sekripsi ini dapat selesai dengan baik.
5. seluruh dosen Teknik Elektro atas ilmuyang telah diberikan selama kuliah
di Universitas Sanata Dharma Yogyakarta.
6. Seluruh staff sekretariat Fakultas Sains dan Teknologi, terutama Pak Djito
yang dengan sabar dan keramahan memberikan semua yang dibutuhkan.
7. Papa dan mama yang tercinta, terimakasih atas dorongan, semangat dan
dukungan, pengorbanan, dan doanya.
8. Kakak dan adikku yang kusayangi terimakasih atas doanya, dan
dukungannya.
9. Angga, Gompis trima kasih buat sumbangan pikirannya dan
kebanyolannya.
10. Suming alias Samiung, trima kasih Scannernya.
11. Anak-anak kost “PATRIA” kompak terus dengan ide-ide yang tidak
masuk akal : Dadiet, Seul, Dedi, Joe (Burung), Angga, Andi (Kura2
ngebut), Si bro, Gompis, Ade, dan masih banyak lagi.
x
12. Roby, terima kasih bantuan nyelesaikan hardwarenya dan Ido alias Bendol
terima kasih buat info halaman-halaman skripsi
13. PC-ku dan DOTA-ku alat pembantu penghilang stress.
14. Teman-teman seperjuangan teknik elektro 2002 : Wawan or Ticus, Harex,
yoga, Alex, Andek, Ari(Gepeng), Clemen, Plentong, Ari.W, Kobo,
Mikael, Danni (Lele laut) dan temen-temen yang lain semuanya.
Terimakasih sepiritnya.
15. Dan seluruh pihak yang telah ambil bagian dalam proses penulisan tugas
akhir ini yang terlalu banyak jika disebutkan satu-persatu.
Dengan rendah hati penulis menyadari bahwa tugas akhir ini masih jauh dari
sempurna, oleh karena itu berbagai kritik dan saran untuk perbaikan tugas akhir ini
sangat diharapkan. Akhir kata semoga tugas akhir ini dapat bermanfaat bagi semua
pihak. Terima kasih.
Penulis
xi
DAFTAR ISI
Halaman
JUDUL ……………………………………………………………… i
HALAMAN PERSETUJUAN……………………………………... iii
HALAMAN PENGESAHAN……………………………………… iv
PERNYATAAN KEASLIAN KARYA…………………………….v
HALAMAN MOTTO………………………………………………. vi
HALAMAN PERSEMBAHAN…………………………………….vii
INTIARI….......................................................................................... viii
ABSTRACT………………………………………………………….ix
KATA PENGANTAR……………………………………………….x
DAFTAR ISI………………………………………………………... xii
DAFTAR GAMBAR……………………………………………….. xv
DAFTAR TABEL…………………………………………………... xvii
BAB I PENDAHULUAN…………………………………………....1
1.1 Latar Belakang Masalah………………………………...1
1.2 Tujuan Penelitian………………………………………..2
1.3 Manfaat Penelitian………………………………………2
1.4 Perumusan Masalah……………………………………..2
1.5 Batasan Masalah………………………………………...2
1.6 Metodologi Penelitian…………………………………..2
1.7 Sistematika Penulisan………………………………….. 3
BAB II LANDASAN TEORI………………………………………. 4
2.1 Motor Stepper………………………………………….. 4
2.1.1 Metode langkah penuh (Full step)………………. 6
2.1.1.1 Metode langkah penuh eksitasi tunggal… 6
2.1.1.2 Metode langkah penuh eksitasi ganda….. 7
2.1.2 Metode langkah setengah (half step)……………. 8
xii
2.2 LCD(Liquid Crystal Display)………………………….. 9
2.2.1 LCD M1632…………………………………….. 9
2.2.2 Register………………………………………….. 9
2.2.3 DDRAM (Display Data RAM)…………………..9
2.2.4 CGRAM (Character Generator RAM)…………..10
2.2.5 Pin-pin pada LCD……………………………….. 11
2.2.6 Pengoperasian instruksi…………………………. 11
2.3 Mikrokontroler AT89S51……………………………… 13
2.3.1 Struktur Memori………………………………… 14
2.3.2 Set instruksi dan pemograman assembly………... 14
2.3.3 Set instruksi dalam MCS51………………………15
2.3.3.1 Kelompok penyalinan data………………15
2.3.3.2 Kelompok instruksi aritmatik……………15
2.3.3.3 Kelompok instruksi logika……………… 16
2.3.3.4 Kelompok instruksi jump………………..16
2.3.3.5 Kelompok SUB – RUTIN……………….17
2.3.3.6 Kelompok instruksi loncat bersyarat…….17
2.3.3.7 Kelompok instruksi proses dan test……...17
2.4 Penguat arus motor stepper…………………………….. .17
xiii
3.3.1 Pemograman AT89S51 untuk kendali LCD……… 26
3.3.2 Pemograman untuk mencari nilai pola dan sudut… 28
3.3.3 Pemograman untuk delay………………………… 30
BAB V PENUTUP…………………………………………………… 45
5.1 Kesimpulan……………………………………………… 45
5.2 Saran-saran……………………………………………… 46
DAFTAR PUSTAKA
xiv
DAFTAR GAMBAR
Halaman
xv
Gambar 4.4 Tampilan full step eksitasi tunggal…………………….. 38
Gambar 4.5 Tampilan full step eksitasi ganda ……………………… 39
Gambar 4.6 Tampilan half step……………………………………… 39
xvi
DAFTAR TABEL
Halaman
Tabel 2.1 Pemberian tegangan untuk full step eksitasi tunggal……… 6
Tabel 2.2 Pemberian tegangan untuk full step eksitasi ganda………... 7
Tabel 2.3 Tabel pemberian tegangan untuk langkah setengah ……… 8
Tabel 2.4 Peta memori (memory map)……………………………….. 10
Tabel 2.5 Tabel sandi ASCII untuk setiap karakter………………….. 10
Tabel 2.6 Pin-pin LCD M1632……………………………………….. 11
Tabel 2.7 Register penyeleksi ………………………………………… 12
Tabel 2.8 Operational code LCD……………………………………… 13
Tabel 4.1 Pengamatan level tegangan catu............................................ 32
Tabel 4.2 Pengujian level tegangan port 3 pada half step…………….. 33
Tabel 4.3 Pengujian level tegangan pada full step eksitasi tunggal…. .. 34
Tabel 4.4 Pengujian level tegangan pada full step eksitasi ganda….. .. 35
Tabel 4.5 Pengujian tegangan saklar…………………………………. 36
Tabel 4.6 Pengujian indikator LED…………………………………… 37
Tabel 4.7 pengujian arus dari rangkaian penguat arus………………... 37
Tabel 4.8 Pengujian putaran motor…………………………………… 40
xvii
BAB I
PENDAHULUAN
1
1.2 Tujuan
Tujuan dari penelitian ini adalah untuk membuat alat stepper motor learning
tool.
1.3 Manfaat
Manfaat yang dapat dicapai dari pembuatan stepper motor learning tool
adalah untuk memudahkan kita mempelajari cara kerja motor stepper.
2
1.7 Sistematika penulisan
Sistematika penulisan laporan ini adalah sebagai berikut:
BAB I : PENDAHULUAN
Latar belakang, tujuan manfaat, batasan masalah, rumusan
masalah, metodologi penelitian dan sistematika penulisan.
BAB II : DASAR TEORI
Motor stepper, metode langkah penuh (full step), metode langkah
setengah (half step), LCD (Liquid Crystal Display), LCD M1632,
mikrokontroler AT89S51, penguat arus motor stepper.
BAB III : PERANCANGAN ALAT
Berisi tentang blok diagram perancanga, perancangan perangkat
keras (hardware) dan perancangan perangkat lunak (software) dari
alat yang akan dibuat.
BAB IV : HASIL DAN PEMBAHASAN
Berisi hasil perancangan, hasil pengujian, dan pembahasan analisa.
BAB V : KESIMPULAN DAN SARAN
Bab yang berisi tentang kesimpulan akhir dan saran – saran penulis
tentang alat yang dibuat.
3
BAB II
LANDASAN TEORI
2.1 Motor stepper
Motor stepper merupakan salah satu jenis motor elektrik yang dapat
dikendalikan posisi sudutnya secara diskrit. Prinsip kerja motor stepper mirip dengan
DC motor, yaitu sama-sama dicatu dengan tegangan DC untuk memperoleh medan
magnet. Perbedaan antara motor stepper dengan motor dc yaitu motor dc mempunyai
magnet tetap pada stator, sedangkan motor stepper mempunyai magnet tetap pada
rotor. Untuk konstruksi motor stepper diperlihatkan pada gambar 2.1.
Motor stepper tidak dapat bergerak dengan sendirinya. Motor stepper bergerak
secara step by step sesuai dengan spesifikasinya, dan bergerak dari satu step ke step
berikutnya memerlukan waktu. Motor stepper pada kecepatan yang rendah akan
menghasilkan torsi yang besar.
Kita dapat mengatur sudut dengan cara mengatur banyak pulsa yang
dimasukkan secara bergantian dan berurutan pada setiap lilitan. Untuk setiap langkah
penuh pemberian pulsa pada motor stepper tertentu memiliki besar sudut sebesar 1.80
(derajat). Motor stepper memiliki beberapa keuntungan yang dibutuhkan dalam
pembuatan alat yang membutuhkan ketepatan tinggi ,dikarenakan motor stepper
mempunyai ketelitian dan ketepatan serta keterulangan yang tinggi. Penggunaan
motor stepper banyak digunakan dalam pengendalian gerak putaran dalam dunia
industri.
Motor stepper tidak merespon sinyal clock, motor stepper mempunyai
beberapa lilitan dimana lilitan-lilitan tersebut harus dicatu (tegangan) dahulu dengan
4
suatu urutan tertentu agar dapat berotasi. Membalik urutan pemberian tegangan
tersebut akan menyebabkan putaran motor stepper yang berbalik arah. Jika sinyal
kontrol tidak terkirim sesuai dengan perintah maka motor stepper tidak akan berputar
atau tidak bergerak.
Karakteristik dari motor stepper adalah sebagai berikut:
• Voltage
Tiap motor stepper mempunyai tegangan rata-rata yang biasanya
tertulis pada tiap unitnya atau tercantum pada datasheet masing-
masing motor stepper. Tegangan rata-rata ini harus diperhatikan
dengan seksama karena bila melebihi dari tegangan rata-rata ini akan
menimbulkan panas yang terlalu besar pada motor stepper yang
menyebabkan kinerja putarannya tidak maksimal atau bahkan motor
stepper akan rusak dengan sendirinya.
• Resistance
Resistance ini akan menentukan arus yang mengalir, selain itu juga
akan mempengaruhi torsi dan kecepatan maksimum dari motor
stepper.
• Degrees step by step
Derajat per langkahnya adalah faktor terpenting dalam pemilihan
motor stepper sesuai dengan aplikasinya. Dalam pengoperasiannya kita
dapat menggunakan 2 prinsip yaitu full-step atau half-step. Dengan
full-step berarti motor stepper akan berputar sesuai dengan spesifikasi
derajat step by step, sedangkan half-step berarti motor stepper akan
berputar setengah derajat step by step dari spesifikasi motor stepper
tersebut.
Untuk mengendalikan motor stepper tergantung pada cara kita memberikan
sinyal tegangan pada lilitan tiap motor. Ada beberapa metode yang dapat kita
gunakan dalam pengendalian motor stepper yaitu : metode full step dan
metode half step.
5
2.1.1 Metode langkah penuh (Full step)
Metode ini ada dua bagian yaitu:
Tabel 2.1 Pemberian tegangan untuk bekerja full step eksitasi tunggal
L3 L2 L1 L0 L3 L2 L1 L0
1 1 0 0 0 0 0 0 1
2 0 1 0 0 0 0 1 0
3 0 0 1 0 0 1 0 0
4 0 0 0 1 1 0 0 0
Pada fullstep, suatu titik pada sebuah kutub magnet di rotor akan kembali
mendapat tarikan medan magnet stator pada lilitan yang sama setelah step ke 4
berikutnya dapat diberikan lagi mulai dari step 1. setiap step, rotor bergerak searah
atau berlawanan dengan jarum jam sebesar spesifikasi derajat step by step dari motor
stepper. Setiap step hanya menarik sebuah kutub saja.
Untuk motor stepper yang digunakan didalam tugas akhir ini dengan sudut
1,80 setiap langkahnya. Pada gambar 2.2 ditunjukkan ilustrasi pemberian tegangan
pada lilitan untuk mode fullstep.
6
Gambar 2.2 Mode fullstep eksitasi tunggal
L3 L2 L1 L0 L3 L2 L1 L0
1 1 1 0 0 0 0 1 1
2 0 1 1 0 0 1 1 0
3 0 0 1 1 1 1 0 0
4 1 0 0 1 1 0 0 1
Untuk ilustrasi gerak rotor dapat dilihat gambar 2.3 dengan besar sudutnya
adalah sebesar 1.80 setiap langkanya.
7
Gambar 2.3 Langkah penuh eksitasi ganda.
L3 L2 L1 L0 L3 L2 L1 L0
1 1 0 0 0 0 0 0 1
2 1 1 0 0 0 0 1 1
3 0 1 0 0 0 0 1 0
4 0 1 1 0 0 1 1 0
5 0 0 1 0 0 1 0 0
6 0 0 1 1 1 1 0 0
7 0 0 0 1 1 0 0 0
8 1 0 0 1 1 0 0 1
8
2.2 LCD(Liquid Crystal Display)
Liquid Crystal Display atau yang sering disingkat sebagai LCD ini merupakan
suatu alat yang banyak digunakan sebagai penampil karakter. Pemakaian daya LCD
lebih rendah daripada pemakaian daya pada Light Emitting Dioda atau yang sering
disingkat dengan LED. Sedangkan kekurangan dari pemakaian LCD ialah salah
satunya pada layer LCD, karena pada umumnya sukar dapat dilihat dalam kondisi
ruangan yang sedikit pencahayaannya. Kontras gambar akan terlihat buruk jika
pencahayaannya kurang dan layar akan lebih sukar untuk dibaca. Lifetime LCD
tergantung pada pencahayaannya (illumination). LCD paling banyak digunakan
adalah LCD monokrom dengan satu warna.
2.2.2 Register
Ada dua jenis pengontrol dari register delapan bit yaitu : instruction register
(IR) dan the data register (DR). Register-register tersebut dipilih oleh register select
(RS).
Instruction register (IR) menyimpan kode-kode instruksi antara lain
membersihkan karakter pada layer, menggeser cursor, memberikan informasi alamat
dari display data RAM (DD RAM) dan character generator RAM (CG RAM).
Data register (DR) menyimpan data sementara untuk ditulis ke DDRAM atau
CG RAM, atau membaca dari DD RAM atau CG RAM.
9
dikirim (sandi ASCII) dan yang akan ditampilkan pada layer LCD. Peta memori
(memory map) dari DDRAM dapat digambarkan pada tabel 2.4 sebagai berikut:
Baris satu 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
Baris dua C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
Pada tabel 2.4 diatas, 16 sandi pertama yaitu sandi 0000 0000 hingga 0000
1111 (00h-ffh) merupakan CGRAM yang digunakan untuk karakter grafis. Sandi
0001 0000 hingga 0001 1111 (10h-1fh) tidak digunakan dan hanya menampilkan
karakter kosong. Sandi karakter ASCII yang umum digunakan adalah mulai sandi
0010 0000 hingga 0111 1111 (20h-7fh). Sandi 1000 0000 hingga sandi 1001 1111
(80h-9fh) digunakan untuk menampilkan karakter kosong dan kode 1010 000
hingga 1101 1111 (A0h-Dfh) merupakan karakter jepang.
10
2.2.5 Pin-pin pada LCD
Pada tabel 2.6 ditunjukkan pin-pin yan digunakan dalam LCD M1632.
Tabel 2.6 Pin-pin LCD M1632
Pada tabel 2.6 diatas kaki 1 dan 3 disambungkan dengan 0v atau ground
sedangkan dari kaki 2 disambungkan dengan vcc power suplly 5v dengan toleransi
sebesar 10% atau sebesar 4,5v hingga sebesar 5,5v. Agar LCD dapat mengetahui
apakah yang dikirim merupakan data atau instruksi maka digunakan kaki 4 (RS).
Untuk RS diberi sinyal high maka LCD membaca masukan sebagai data, sedangkan
jika RS diberi sinyal low maka LCD akan membaca masukan sebagai instruksi. Kaki
5 merupakan kaki yang digunakan untuk menulis data ke LCD atau membaca data
dari LCD. Pada alat TA stepper motor learning tool data dari LCD tidak pernah
dibaca oleh MCS51 maka pada pin 5 disambungkan dengan ground. Pin 6 merupakan
pin enable, pin ini digunakan untuk memberikan sinyal detak (clock) ke LCD bahwa
sedang dilakukan pengiriman data. Pin 7 hingga pin 14 merupakan pin untuk data.
Sedangkan pin 15 dan pin 16 merupakan pin untuk mengatur kontras dari layer LCD.
11
internal pada LCD dikontrol oleh keadaan jalur RS dan R/W. untuk pengoperasian-
pengoperasian dapat dilihat pada tabel 2.7 sebagai berikut:
Tabel 2.7 Register penyeleksi
RS R/W Pengoperasian
0 0 IR(instruction register)menulis penoperasian
internal
0 1 Membaca busy flag (DB7)dan pencacahan
alamat (DB0 ke DB6)
1 0 DR(Data register)menulis sebagai
pengoperasian
1 1 DR(data register)membaca sebagai
pengopersaian internal
Start
RS = 0
Instruksi inisialisasi
disiapkan
E=0
E=1
RS = 1
finish
12
Tabel 2.8 Operational code LCD
13
Gambar 2.5 Konfigurasi pin mikrokontroler AT89S51
14
3. Pengalamatan tidak langsung (indirect addressing).
4. Pengalamatan register (register addressing).
5. Pengalamatan kode tidak langsung (code indirect addressing)
15
• Instruksi mul AB
Bilangan biner 8 bit dalam akumulator A dikalikan dengan bilangan
biner 8 bit dalam register B. hasil perkalian berupa biner 16 bit, 8 bit
bilangan biner yang bagian atas (hight byte) disimpan di register B,
sedangkan 8 bit yang lainnya (low byte) disimpan di akumulator A.
• Instruksi DIV AB
Bilangan biner 8 bit dalam akumulator A dibagi dengan bilangan biner 8
bit dalam register B. hasil pembagian berupa bilangan biner 8 bit
ditampung di akumulator A, sedangkan sisa pembagian berupa bilangan
biner 8 bit di tampung di register B.
16
2.3.3.5 Kelompok SUB – RUTIN
Sub-rutin merupakan kumpulan instruksi yang karena berbagai pertimbangan
dipisahkan dari program utama. Bagian-bagian deprogram utama akan ‘memanggil’
(CALL) sub-rutin, artinya mikrokontroler sementara meningggalkan aliran program
utama untuk mengerjakan instruksi-instruksi dalam sub-rutin, selesai mengerjakan
sub-rutin mikrokontroler kembali ke aliran program utama. Satu-satunya cara untuk
kembali ke program dari eksekusi sub-rutine adalah menggunakan instruksi ret pada
akhir sub-rutin. Sedangkan untuk memanggil sub-rutin digunakan ACALL atau
LCALL.
17
Gambar 2.6 Penguat arus motor stepper.
18
BAB III
RANCANGAN PENELITIAN
saklar LCD
Penguat arus
Tombol
next
19
Gambar untuk susunan panel kendali ditunjukkan pada gambar 3.2 dibawah
ini:
20
3.2.2 Rangkaian tombol
Rangkaian tombol ini fungsinya sama dengan rangkaian saklar yaitu
memberikan nilai keadaan high (1) dan low (0). Hanya saja pada rangkaian tombol
memberikan nilai keadaan hanya sesaat ditekan, saat dilepas akan kembali kenilai
keadaan semula. Nilai keadaan high diperoleh saat tombol tidak ditekan sedangkan
untuk nilai keadaan low diperoleh saat tombol ditekan. Pada gambar 3.4 ditunjukkan
gambar rangkaian tombol yang salah satu kakinya terhubung pada ground.
21
Port-port yang digunakan untuk memberikan nilai masukan pada
mikrokontroler adalah port2 dan port3. Pada port3 tidak digunakan semuanya untuk
memberi masukan dalam hal ini yang digunakan sebagai masukan p3.0, p3.1, p3.2
sedangkan p3.3 dan p3.4 digunakan sebagai kendali untuk waktu tunda dan p3.6 dan
p3.7 sebagai kendali LCD. Port-port yang digunakan sebagai keluaran adalah port0
dan port2. port0 digunakan sebagai kendali memutar motor stepper, fungsi yang
dikeluarkan oleh port0 ini antara lain menjalankan motor stepper searah jarum jam
ataupun berlainan jarum jam, dengan metode step yang digunakan adalah full step
eksitasi tunggal, full step eksitasi ganda dan half step.
Sedangkan port2 digunakan untuk mengendalikan tampilan pada LCD. LCD
membutuhkan 10 bit masukan yaitu 1 bit enable, 1 bit RS dan 8 bit data. Untuk itu
digunakan 2 port untuk mengendalikan LCD antara lain port 2 dan sisanya pada port
3. Pada port 3 hanya digunakan 2 bit saja yaitu p3.6 sebagai enable yaitu yang
berfungsi sebagai pemberian sinyal clock setelah selesai memberikan data. P3.7
sebagai RS yang berfungsi untuk memberi informasi kepada LCD bahwa data yang
dikirim berupa data atau berupa instruksi.
22
Gambar 3.6 Rangkaian penguat arus
12
=
1A
= 12Ω
Dari persamaan 3.2 diatas kita dapat menentukan besarnya Rbsebagai berikut:
Vb − Vbe
Rb = …………………………..persamaan 3.2
Ib
5 − 1 .4
Rb =
1.10 −3
Rb = 3,6 KΩ
23
3.2.5 Rangkaian indicator LED
Rangkaian ini terdiri dari 4 led yang pada kaki katoda dijadikan satu (common
katoda) dan disambungkan dengan tegangan ground. Sehingga LED akan menyala
saat diberika kondisi high (1). Resistor dalam rangkaian LED digunakan sebagai
pembatas arus dan nilainya didapat dari persamaan 3.4sebagai berikut:
VCC − VLED
ILED = ………………………persamaan 3.4
R
Sehingga ,
VCC − VLED
R = ………………………persamaan 3.5
I LED
Diketahui nilai VCC = 5v , VLED adalah 2,2 v dan ILED sebesar 10mA, maka
dari persamaan (2.1) didapat nilai R:
5 - 2,2
R =
10.10 −3
= 280 Ω …………………………….persamaan 3.6
untuk mendapatkan nilai resistor yang sesuai dengan pasaran yang ada maka
digunakan resistor sebesar 270 Ω. Pada gambar 3.7 ditunjukkan rangkaian indicator
LED.
24
waktu tunda yang digunakan secara manual atau secara otomatis. Jika pengguna
menggunakan waktu tunda manual maka mikrokontroler akan menjalankan motor dan
memberi tampilan pada LCD setelah mendapatkan perintah dari user dengan menekan
tombol next. Sedangkan waktu tunda yang digunakan otomatis maka mikrokontroler
akan mengendalikan rangkaian RC dan menjalankan motor dan menampilkan pada
LCD setelah rangkaian RC memberikan nilai keadaan high (1) pada mikrokontroler.
Start
A
Masukkan delay, metode,
arah, besar delay yg akan
digunakan
Tidak
Ya
CW atau
Ya CW ? Tidak
CCW?
Tidak
Menghitung
besar pulsa
Mencari besar
nilai pola
Sudah 400
step?
Sudah 400
Tampilkan pola dan step?
besar pulsa pada
LCD
Manual? Tidak
Ya
Ya
Tidak tidak
Tombol reset
ditekan?
Ya
A A A
25
3.3.1 Pemograman AT89S51 untuk kendali LCD
Pada perancangan untuk mengendalikan LCD maka kita dapat memprogram
AT89S51 untuk memberikan keluaran sebagai pengendali enable, RS, data masukan,
dan waktu tunda.
Untuk pertamakali sesaat setelah LCD dinyalakan maka kita perlukan untuk
menginisialisasi LCD terlebih dahulu. Secara diagram alir digambarkan pada gambar
3.9. Untuk pemberian instrupsi enable kita dapat membuat sebuah subrutine karena
pada program enable ini akan digunakan beberapakali dalam pemograman. Untuk
gambar 3.9a merupakan diagram alir untuk inisialisasi secara keseluruhan, sedangkan
untuk gambar 3.9b merupakan diagram alir subrutine untuk enable, dan gambar 3.9c
merupakan diagram alir untuk inisialisasi LCD dengan memanggil subroutine.
S ta rt
RS = 0
In s tru k s i d is ia p k a n S ta rt S ta rt
E = 0 E = 0 RS = 0
E = 1 E = 1 C a ll e n a b le
(a ) (b ) (c )
26
S ta r t
RS = 0
D a ta 0 1 h
C a ll e n a b le
fin is h
RS = 1
D a ta k a r a k te r
A S C II d ik ir im k a n
C a ll e n a b le
F in is h
RS = 0
D a ta in s tr u k s i
a la m a t y a n g a k a n
d ir u b a h
k a r a k t e r n y a d ik ir im
C a ll e n a b le
RS = 1
D a ta k a ra k te r b a ru
d i k ir i m
C a ll e n a b le
F in is h
27
3.3.2 Pemograman untuk mencari nilai pola dan besar sudut
Untuk mencari nilai-nilai pola kita dapat menggunakan satu mode yaitu mode
half step karena pada setiap langkah ganjil pada half step merupakan mode full step
untuk eksitasi tunggal, sedangkan setiap langkah genap pada half step merupakan
mode full step untuk eksitasi ganda. Untuk menampilkan nilai pada LCD besar
polanya kita harus mencari nilai pada setiap bit pada nilai pola yang akan ditampilkan.
Untuk arah CW (clock wise) dan CCW ( counter clock wise) diagram alirnya hampir
sama hanya saja pada CCW akan berbeda saat penambahan nilai pola setelah 3X
motor stepper melangkah, pada arah CCW ditambah dengan 08h. Gambar 3.13
merupakan diagram alir mencari nilai pola tiap langkahnya dan mencari nilai tiap bit
pada nilai pola yang akan ditampilakan pada LCD dengan mode half step.
Start
Menampilkan
pada LCD
Apakah sudah
3X?
Ya
Menampilkan
pada LCD
finish
28
Untuk mencari besar pulsa yang telah digunakan untuk menjalankan motor
stepper kita dapat menambahkan dengan bilangan 1 heksa untuk setiap kali motor
stepper melangkah. Saat akan menampilkan besar pulsa pada LCD untuk setiap
langkahnya maka kita harus mencari perbitnya agar dapat ditampilkan pada LCD
secara satu persatu secara berurutan. Pada gambar 3.14 merupakan diagram alir untuk
mencari besar pulsa yang akan digunakan untuk setiap langkahnya.
Start
Byte pertama
sudah 0a
heksa
Ya
Tidak
Byte kedua
sudah 0a
heksa
Ya Tidak
Menampilkan pada
LCD
Finish
29
3.3.3 Pemograman untuk delay
delay yang digunakan pada rangkaian stepper motor learning tool ada dua
jenis antara lain delay dengan tombol next dan delay otomatis. Untuk delay dengan
menggunakan tombol next merupakan delay manual yaitu waktu tunda yang
tergantung dari user menekan tombol next. Sedangkan delay otomatis yaitu waktu
tunda yang telah ditetapkan oleh user sehingga user hanya menekan nilay delay sekali
saja untuk menjalankan motor stepper. Pada gambar 3.15 ditunjukkan diagram alir
dari pemograman nilai delay otomatis.
start
Masukkan
nilai delay
Jalankan besar
Delay 1s Ya
delay 1s
Tidak
Jalankan besar
Delay 2s Ya finish
delay 2s
Tidak
Jalankan besar
Delay 3s Ya
delay 3s
Tidak
Tidak
Jalankan besar
Delay 4s Ya
delay 4s
30
BAB IV
HASIL DAN PEMBAHASAN
Saklar on/off
Saklar menu
Delay automatik
31
untuk tegangan Vcc pada penguat arus yang nantinya digunakan untuk menggerakkan
motor stepper.
Data dari pengamatan dapat diambil dengan mengukur tegangan keluaran dari
IC 7805 dan pada tegangan catu 12Vdc. Hasil pengamatan dapat dilihat pada tabel 4.1
32
• Untuk level tegangan low memiliki batas maksimum yaitu:
¾ Batas maksimum = 0,45 V
Half step
Arah putar berlawanan arah
Arah putar searah jarum jam
jarum jam
P3.0 P3.1 P3.2 P3.3 P3.0 P3.1 P3.2 P3.3
& & & & & & & &
P3.4 P3.5 P3.6 P3.7 P3.4 P3.5 P3.6 P3.7
(Volt) (Volt) (Volt) (Volt) (Volt) (Volt) (Volt) (Volt)
4,8 0,2 0,2 0,4 0,2 0,2 0,2 4,7
1
Dari hasil pengamatan didapatkan level tegangan low yaitu sebesar 0,1 V
hingga 0,4 V. Besar tegangan low hasil pengamatan ini masih sesuai karena
tidak melebihi batas tegangan keluaran low maksimal dari data sheet yaitu
sebesar 0,45.
Dari hasil pengamatan juga didapatkan level tegangan high sebesar 4,7V
hingga 4,9V. Besar tegangan keluaran high hasil pengamatan ini masih sesuai
karena tidak kurang dari batas tegangan masukan high minimal dari data sheet
yaitu sebesar 4,59V.
33
Pada tabel 4.3 ditunjukkan hasil pengamatan level tegangan port 3 untuk
menjalankan motor pada saat program full step eksitasi tunggal untuk arah
searah jarum jam dan berlawanan arah jarum jam.
Tabel 4.3 Pengujian level tegangan port 3 pada full step eksitasi tunggal
Full step eksitasi tunggal
Arah putar searah jarum Arah putar berlawanan
jam arah jarum jam
P3.0 P3.1 P3.2 P3.3 P3.0 P3.1 P3.2 P3.3
& & & & & & & &
P3.4 P3.5 P3.6 P3.7 P3.4 P3.5 P3.6 P3.7
(Volt) (Volt) (Volt) (Volt) (Volt) (Volt) (Volt) (Volt)
4,8 0,2 0,3 0,15 0,2 0,2 0,4
1 4,8
Dari hasil pengamatan didapatkan level tegangan low yaitu sebesar 0,1 V
hingga 0,3 V. Besar tegangan low hasil pengamatan ini masih sesuai karena
tidak melebihi batas tegangan keluaran low maksimal dari data sheet yaitu
sebesar 0,45.
Dari hasil pengamatan juga didapatkan level tegangan high sebesar 4,8V
hingga 4,95V. Besar tegangan keluaran high hasil pengamatan ini masih
sesuai karena tidak kurang dari batas tegangan masukan high minimal dari
data sheet yaitu sebesar 4,59V.
Pada tabel 4.4 ditunjukkan hasil pengamatan level tegangan port 3 untuk
menjalankan motor pada saat program half step untuk arah searah jarum jam
dan berlawanan arah jarum jam.
34
Tabel 4.4 Pengujian level tegangan port 3 pada full step eksitasi ganda
Full step eksitasi ganda
Arah putar searah jarum Arah putar berlawanan
jam arah jarum jam
P3.0 P3.1 P3.2 P3.3 P3.0 P3.1 P3.2 P3.3
& & & & & & & &
P3.4 P3.5 P3.6 P3.7 P3.4 P3.5 P3.6 P3.7
(Volt) (Volt) (Volt) (Volt) (Volt) (Volt) (Volt) (Volt)
4,7 4,6 0,4 0,2 0,2 0,2 4,7
1 4,7
2 0,2 4,7 0,2 0,2 4,7
4,7 4,8 0,2
0,2 0,2 4,8 4,7 4,7 0,3 0,2
3 4,7
4,7 0,2 0,3 4,7 0,2 0,3 4,7
4 4,7
Dari hasil pengamatan didapatkan level tegangan low yaitu sebesar 0,2 V
hingga 0,4 V. Besar tegangan low hasil pengamatan ini masih sesuai karena
tidak melebihi batas tegangan keluaran low maksimal dari data sheet yaitu
sebesar 0,45.
Dari hasil pengamatan juga didapatkan level tegangan high sebesar 4,7V
hingga 4,8V. Besar tegangan keluaran high hasil pengamatan ini masih sesuai
karena tidak kurang dari batas tegangan masukan high minimal dari data sheet
yaitu sebesar 4,59V.
b. Pengujian tombol
Tombol tersambung dengan mikrokontroler pada port 1 yaitu P1.0, P1.1,
dan P1.2. cara kerja tombol yaitu memberikan sinyal low pada port
mikrokontroler. Pada gambar 4.2 ditunjukkan gambar grafik tegangan
terhadap waktu yang didapat mdari hasil pengamatan tombol.
35
Agar level tegangan pada tombol dapat dibaca oleh mikrokontroler maka
besar tegangan tidak boleh melebihi batas-batas yang ada pada data sheet.
Dari data sheet mikrokontroler dapat diambil batas-batas tegangan masukan
mikrokontroler.
• Untuk level tegangan low memiliki batas minimum dan maksimum
yaitu:
¾ Batas minimum = ─ 0,5V
¾ Batas maksimum = 0,2Vcc − 0,25
= 0,2 × 5,1 − 0,25
= 0,77 Vdc
• Untuk level tegangan high memiliki batas minimal dan maksimum yaitu:
¾ Batas minimal = 0,2Vcc + 1
= 0,2 × 5,1 + 1
= 2,02 Vdc
¾ Batas maksimum = Vcc + 0,5
= 5,1 + 0,5
= 5,6 Vdc
Pada pengujian tombol didapat data level tegangan low sebesar 0,2 V
sedangkan level teganngan high sebesar 4,8 V. Data level tegangan yang
didapat dari pengamatan atau pengujian dapat dibaca dengan baik oleh
mikrokontroler karena tidak melebihi batas minimal dan maksimalnya.
c. Pengujian saklar
Saklar terletak pada port 1 mikrokontroler yaitu P1.3, P1.4, P1.5, dan
P1.6. cara kerja saklar yaitu memberikan pilihan sinyal tegangan high atau
low. Pada tabel 4.5 ditunjukkan data pengamatan besar tegangan yang
diberikan pada mikrokontroler. Untuk batas-batas minimal dan maksimal
tegangan masukan pada mikrokontroler dari data sheet yaitu:
• Untuk level tegangan low yaitu: ─0,5 V hingga 0,77 V
• Untuk level tegangan high yaitu : 2,02 V hingga 5,6 V
36
Tabel 4.5 Pengujian tegangan saklar
P1.3 P1.4 P1.5 P1.6
Low 0.1 0.1 0.15 0.1
High 4.9 4.7 4.7 4.8
Dari data pengamatan pada tabel 4.4 diatas maka didapatkan tegangan
low dari pengamatan sebesar 0,1V hingga 0,15V. Data level tegangan low ini
masih sesuai karena tidak melewati batas tegangan low minimal dan maksimal
pada data sheet yaitu sebesar ─0,5 V hingga 0,77 V.
Dari data pengamatan pada tabel 4.4 dapat diamati bahwa tegangan 4.7
hingga 4.8 masih sesuai untuk level teganngan high dikarenakan masih berada
pada batas level tegangan high minimal dan maksimal dari data sheet yaitu
sebesar 2,02 V hingga 5,6 V.
Pada perancangan arus ILED = 10mA ini diambil untuk batas minimal dari arus LED
agar menyala maksimal. Sedangkan untuk batas maksimal arus masukan LED adalah
sebesar 55mA. Arus LED hasil dari pengujian atau pengamatan terdapat error
sebesar 1,2mA namun arus hasil pengamatan ini tidak melebihi batas maksimal dan
batas minimal LED, sehingga LED dapat menyala dangan baik.
37
4.1.4 Pengujian penguat arus
Keluran arus maksimal pada mikrokontroler adalah sebesar 1mA, sedangkan
arus yang dibutuhkan untuk menggerakkan motor stepper adalah sebesar 1 A. Pada
tabel 4.7 merupakan tabel pengukuran arus pada basis dan kolektor.
Tabel 4.7 pengujian arus dari rangkaian penguat arus.
IB IC
On 0,8mA 0,91A
Off 0,01mA 0,01mA
Data perancangan:
Besar arus IC = 1A
Besar arus IB = 1mA
1A − 0,91A
Error IC = × 100%
1A
= 9%
1m − 0,88m
Error IB = × 100%
1m
= 11%
Arus yang dibutuhkan untuk menjalankan motor stepper adalah sebesar 1A
namun dalam hasil pengamatan hanya terdapat 0,91A. hal ini menyebabkan motor
dapat bergerak namun tidak maksimal.
38
Untuk tampilan pertamakali pada LCD telah sesuai dengan diagram blok
perancangan. Sehingga saat pertamakali LCD dihidupkan dan setelah reset maka
tampilan pada LCD tertuliskan ”Motor Stepper Trainer”
Pada gambar 4.4 ditunjukkan gambar tampilan LCD untuk mode full step
eksitasi tunggal.
1
5
2
3
4 6
Gambar 4.4 Tampilan full step eksitasi tunggal
1
5
2
3
4 6
Gambar 4.5 Tampilan full step eksitasi ganda
39
3. Tampilan pola yang dikirimkan oleh mikrokontroler untuk menjalankan
motor.
4. Tampilan untuk mode yang sedang digunakan.
5. Tampilan untuk arah putaran motor yang sedang dijalankan.
6. Menampilkan besarnya pulsa yang telah dikirimkan untuk menjalankan
motor tiap stepnya.
Pada gambar 4.6 ditunjukkan gambar tampilan LCD untuk mode full step
eksitasi tunggal.
1
5
2
3
6
4
Gambar 4.6 Tampilan half step
40
Tabel 4.8 Pengujian putaran motor
Berputar 3600
(pulsa)
Full step eksitasi tunggal 202
Full step eksitasi ganda 203
Half step 402
Data perancangan:
Mode full step eksitasi tunggal = 200 pulsa
Mode full step eksitasi ganda = 200 pulsa
Mode half step = 400 pulsa
¾ Error terjadi pada mode full step eksitasi tunggal sebesar 2 pulsa (3,60) maka
3,6 0
untuk setiap stepnya terdapat error sebesar = 0,018 0
200
¾ Error pada mode full step eksitasi ganda sebesar 3 pulsa (5,40) maka untuk
5,4 0
setiap stepnya terdapat error sebesar = 0,027 0
200
¾ Error pada mode half step sebesar 2 pulsa (1,80) maka untuk setiap stepnya
1,8 0
terdapat error sebesar = 0,0045 0
400
41
4.2.1 Pengoperasian alat
a) Pada pertanyaan pada angket untuk no.1 diberikan pertanyaan mengenai
pengoperasian stepper motor learning tool tanpa diberikan petunjuk ataupun
contoh pengoperasian terlebih dahulu. Ada 40% pengguna yang menyatakan
bahwa jika tidak diberikan petunjuk pemakaian alat terlebih dahulu pengguna
merasa kebingungan. Untuk itu pada alat stepper motor learning tool
dibutuhkan modul untuk memberikan langkah-langkah yang benar dalam
mengoperasikan alat.sedangkan untuk pengguna 60% mereka mampu
mengoperasikan alat tanpa diberikan petunjuk terlebih dahulu.
b) Dalam pertanyaan angket no.2 diberikan pertanyaan apakah setelah diberikan
petunjuk dalam pengoperasian alat pengguna dapat mengoperasikan dan
mengendalikan alat stepper motor learning tool. Dari 100% pengguna
semuanya memberikan pernyataan bahwa pengguna dapat dengan mudah
untuk mengoperasikan alat.
Dari data pengguna dapat disimpulkan bahwa alat stepper motor learning tool
mudah untuk dioperasikan bagi mahasiswa elektro semester akhir.
42
Dari data dapat disimpulkan bahwa setelah mahasiswa elektro semua angkatan
mengoperaskian alat maka mahasiswa mengerti akan pola-pola dan sudut yang
dibentuk.
43
4.2.5 Kemasan (Box)
Untuk mengetahui kelayakan kemasan untuk alat stepper motor learning tool
maka pada angket no.8 diberikan pertanyaan mengenai bentuk dari kemasan.
Pengguna yang mengatakan bahwa kemasan alat stepper motor learning tool masih
kasar, bentuknya terlalu simple, kurang menarik, dan rangkaiannya masih terlihat
tidak rapi, ada 60% pengguna. Sedangkan 40% pengguna mengatakan kemasannya
bagus dan menarik.
Dari data angket pengguna dapat disimpulkan bahwa kemasan dari alat
stepper motor learning tool masih perlu diperbaiki dan diperhalus .
4.2.6 Kekurangan
Untuk mengetahui kekurangan-kekurangan dari alat stepper motor learning
tool ini maka pada angket no.9 diberikan pertanyaan mengenai kekurangan dari alat.
70% mengatakan bahwa alat lebih baik lagi jika menu ditata secara berurutan dan
kemasan dirapikan, 30% mengatakan untuk memperbesar dan memperjelas untuk
tulisan pilihan menu. 40% pengguna mengatakan untuk memberikan tampilan derajat
atau sudut yang telah dibentuk sehingga lebih mudah lagi dalam memahami motor
stepper. 50 % pengguna mengatakan untuk membuat menu yang lebih simple.
Pada data angket dapat disimpulkan bahwa masih banyak kekurangan pada
alat stepper motor learning tool yaitu pada urutan menu, penulisan label, dan pada
penampil sudut yang tidak ada.
44
Dari data angket dapat disimpulkan bahwa alat stepper motor learning tool
sangat berguna dalam dunia pendidikan untuk mempermudah dalam mempelajari
mode-mode serta pola-pola motor stepper.
45
BAB V
PENUTUP
Dari pembahasan yang telah diuraikan pada bagian hasil dan pembahasan,
maka pada bab ini akan diambil beberapa kesimpulan dan saran yang berguna untuk
penyempurnaan dan pengembangan alat stepper motor learning tool. Untuk
spesifikasi alat stepper motor learning tool sebagai berikut:
5.1 Kesimpulan
Dari hasil penelitian dan analisis data dapat diambil kesimpulan sebagai berikut:
1. Data hasil pengamatan masih terjadi error namun masih dalam batas
toleransi.
2. Pada putaran motor terjadi error untuk setiap stepnya ini dikarenakan motor
tidak bekerja dengan maksimal karena arus yang disupply ke motor kurang
maksimal.
3. Alat stepper motor learning tool sangat berguna dalam dunia pendidikan
bagi yang menginginkan untuk mempelajari tentang teknologi motor
stepper.
4. Dari data pengguna dapat disimpulkan bahwa alat stepper motor learning
tool mudah untuk dioperasikan bagi mahasiswa elektro semester akhir.
5. Setelah mahasiswa elektro semua angkatan mengoperaskian alat maka
mahasiswa mengerti akan pola-pola , sudut, memahami tampilan LCD, dan
memahami tampilan indicator LED yang dibentuk
6. Alat stepper motor learning tool sangat berguna bagi mahasiswa elektro
semester akhir untuk mempermudah dalam mempelajari mode-mode serta
pola-pola dari motor stepper.
46
5.2 Saran-saran
1. Untuk menambahkan tampilan sudut maka, tampilan kata-kata yang tidak
perlu dihilangkan saja dan digantikan dengan tampilan sudut. Namun
langkah ini mungkin akan membuat pengguna yang benar-benar baru belajar
akan lebih mengalami kesulitan.
2. Tampilan sudut dapat juga berupa penggaris busur yang diletakkan tepat
dibawah motor stepper.
3. Untuk memberikan tampilan kemasan yang lebih rapi maka kita dapat
gunakan box yang sudah jadi yang terdapat dipasaran, tentu saja ini akan
memakan lebih banyak biaya yang dikeluarkan.
4. Untuk membuat pilihan menu lebih simple kita dapat ubah dari saklar
menjadi dua tombol digital saja untuk mengatur menu pilihan. Namun saat
LCD rusak maka kita tidak dapat mengatur menu pilihan tanpa melihat
tampilan LCD.
47
DAFTAR PUSTAKA
1
LAMPIRAN
1
2
PROGRAM AT89S51
org 0
ratusan equ 100
cacah equ -10000
satuan equ 5
pencacah equ -1000
peratus equ 400
percacah equ -1000
mov tmod,#01h
acall tunda1s
utama:
mov p3,#0f0h
acall inisialisasi
acall bersih
acall t_utama
start:
jnb p1.2,hidup
sjmp start
hidup:
acall inisialisasi
acall bersih
mulai:
jb p1.4,hs
ljmp fs
;-----------------------------------------------------------------------------------------
; Program untuk menjalankan pilihan Half step
hs:
acall inisialisasi_diawal
cjne a,#01h,hs1 ; untuk membaca arah putar
acall data_pola_cw
sjmp hs2
hs1:
acall data_pola_ccw
hs2:
mov 74h,#04h ; untuk memberikan batas 4x
hs3:
mov a,54h
cjne a,#01h,hs4
acall t_lcd_cw
sjmp hs5
hs4:
acall t_lcd_ccw
hs5:
acall k_hs
3
acall t_lcd_mode
hs6:
acall c_d
cjne a,#01h,hs7 ; membaca delay yang digunakan
acall delay_manual
sjmp hs8
hs7:
acall delay_auto
hs8:
mov 74h,#04h
acall c_arah
cjne a,#01h,hs9
mov a,53h
acall data_pola_cw
sjmp hs10
hs9:
mov a,53h
acall data_pola_ccw
hs10:
acall c_arah1
cjne a,#01h,hs11
acall c_arah2
sjmp hs12
hs11:
acall c_arah3
hs12:
acall tampil_pl
acall tampil_pls
hs13:
acall c_d
cjne a,#01h,hs14
acall delay_manual
sjmp hs15
hs14:
acall delay_auto
hs15:
djnz 74h,hs19
hs16:
mov 75h,a
acall c_arah4
cjne a,#01h,hs17
mov a,#00001000b
sjmp hs18
hs17:
mov a,#00000001b
hs18:
acall tam_r4
mov a,75h
hs19:
acall tampil_pl1
4
acall tampil_pls
hs20:
acall c_d
cjne a,#01h,hs21
acall delay_manual
sjmp hs22
hs21:
acall delay_auto
hs22:
acall batas4x
cjne a,#00h,hs10
acall batas_akhir
cjne a,#04h,hs8
mov a,76h
ljmp start
;-------------------------------------------------------------
; Program untuk menjalankan pilihan fullstep
fs:
acall inisialisasi_diawal
cjne a,#01h,fs1 ; untuk membaca arah motor
acall data_pola_cw
sjmp fs2
fs1:
acall data_pola_ccw
fs2:
mov 74h,#04h ; batas 4x
fs3:
mov a,54h
cjne a,#01h,fs4
acall t_lcd_cw
sjmp fs5
fs4:
acall t_lcd_ccw
fs5:
acall c_f
cjne a,#00,fs6 ; untuk membaca step eksitasi
tunggal atau ganda
mov a,59h
acall k_fss
sjmp fs7
fs6:
mov a,59h
acall k_fsg
fs7:
acall t_lcd_mode
fs8:
acall c_d
cjne a,#01h,fs9 ; membaca delay yang digunakan
5
acall delay_manual
sjmp fs10
fs9:
acall delay_auto
fs10:
mov 5eh,#04h
mov 74h,#04h
acall c_arah
cjne a,#01h,fs11
mov a,53h
acall data_pola_cw
sjmp fs12
fs11:
mov a,53h
acall data_pola_ccw
fs12:
acall c_arah1
cjne a,#01h,fs13
acall c_arah2
sjmp fs14
fs13:
acall c_arah3
fs14:
acall c_f
cjne a,#00,fs15
mov a,59h
acall tampil_pl
sjmp fs19
fs15:
djnz 5eh,fs18
mov 75h,a
acall c_arah4
cjne a,#01h,fs16
mov a,#00001000b
sjmp fs17
fs16:
mov a,#00000001b
fs17:
acall tam_r4
mov a,75h
fs18:
acall tampil_pl1
fs19:
acall tampil_pls
fs20:
acall c_d
cjne a,#01h,fs21
acall delay_manual
sjmp fs22
fs21:
6
acall delay_auto
fs22:
djnz 74h,fs12
acall batas_akhir
cjne a,#02h,fs10
mov a,76h
ljmp start
;---------------------------------------------------------------------
; Program untuk mereset program
rst:
jnb p1.4,rst_fs ; membaca mode yang digunakan
sjmp rst_hs
rst_hs:
acall ck_ganjil ; mengecek jumlah pulsa ganjil atau
genap
mov a,57h
cjne a,#00h,rst_hs6
sjmp rst_hs11
rst_hs1:
mov 74h,#04h
mov a,54h
cjne a,#01h,rst_hs2
acall data_pola_cw
sjmp rst_hs3
rst_hs2:
acall data_pola_ccw
rst_hs3:
mov a,54h
cjne a,#01h,rst_hs4
acall put_pola_cw
sjmp rst_hs5
rst_hs4:
acall put_pola_ccw
rst_hs5:
mov p3,63h
acall hit_pulsa
rst_hs6:
djnz 74h,rst_hs10
rst_hs7:
mov 75h,a
acall c_arah4
cjne a,#01h,rst_hs8
mov a,#00001000b
sjmp rst_hs9
rst_hs8:
mov a,#00000001b
rst_hs9:
7
acall tam_r4
mov a,75h
rst_hs10:
mov p3,64h
acall hit_pulsa
rst_hs11:
acall batas4x
cjne a,#00h,rst_hs3
acall batas_akhir
cjne a,#04h,rst_hs1
mov a,76h
ljmp reset_selesai
rst_fs:
sjmp rst_fs10
rst_fs0:
mov 5eh,#04h
mov 74h,#04h
mov a,54h
cjne a,#01h,rst_fs1
acall data_pola_cw
sjmp rst_fs2
rst_fs1:
acall data_pola_ccw
rst_fs2:
mov a,54h
cjne a,#01h,rst_fs3
acall put_pola_cw
sjmp rst_fs4
rst_fs3:
acall put_pola_ccw
rst_fs4:
acall c_f
cjne a,#00,rst_fs5
mov a,59h
mov p3,63h
sjmp rst_fs9
rst_fs5:
djnz 5eh,rst_fs8
mov 75h,a
mov a,54h
cjne a,#01h,rst_fs6
mov a,#00001000b
sjmp rst_fs7
rst_fs6:
mov a,#00000001b
rst_fs7:
acall tam_r4
mov a,75h
8
rst_fs8:
mov p3,64h
rst_fs9:
acall hit_pulsa
rst_fs10:
djnz 74h,rst_fs2
acall batas_akhir
cjne a,#02h,rst_fs0
mov a,76h
sjmp reset_selesai
ck_ganjil:
mov a,r0
mov b,#02h
div ab
mov 57h,b
ret
reset_selesai:
ljmp utama
;**************************************************************
;Penyederhanaan program
inisialisasi_diawal:
mov r0,#00h
mov r1,#00h
mov r2,#00h
acall cek_arah
mov a,54h
ret
isi_besar_pola:
mov 63h,r3
mov 64h,r4
ret
data_pola_cw:
mov r3,#00010000b
mov r4,#00011000b
acall isi_besar_pola
ret
data_pola_ccw:
mov r3,#10000000b
mov r4,#10000001b
acall isi_besar_pola
ret
c_d:
acall cek_delay
mov a,60h
ret
c_arah:
9
mov a,76h
acall c_arah4
ret
c_arah1:
mov a,50h
acall c_arah4
ret
c_arah2:
mov a,53h
acall put_pola_cw
ret
c_arah3:
mov a,53h
acall put_pola_ccw
ret
c_arah4:
mov 53h,a
mov a,54h
ret
tampil_pl:
mov p3,63h
acall hit_pola_r3
acall hit_indi_r3
acall alamat_87
acall tamp_pola_r3
ret
tampil_pls:
acall hit_pulsa
acall tamp_pulsa
ret
tam_r4:
add a,64h
mov 64h,a
ret
tampil_pl1:
mov p3,64h
acall hit_pola_r4
acall hit_indi_r4
acall alamat_87
acall tamp_pola_r4
ret
batas4x:
mov 50h,a
mov a,74h
ret
batas_akhir:
mov a,50h
mov 76h,a
mov a,r2
ret
10
c_f:
acall cek_fs
mov 59h,a
mov a,58h
ret
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
cek_arah:
jnb p1.6,cw
mov 54h,#00h
sjmp cek_arah1
cw:
mov 54h,#01h
cek_arah1:
ret
;---------------------------------------------
cek_fs:
jnb p1.5,fs_single
mov 58h,#01h
sjmp cek_fs1
fs_single:
mov 58h,#00h
cek_fs1:
ret
;---------------------------------------------
cek_delay:
jnb p1.3,manual
auto:
mov 60h,#00h
sjmp cek_delay1
manual:
mov 60h,#01h
cek_delay1:
ret
;============================================================
cek_besar_delay_auto:
jnb p2.0,1s
jnb p2.1,2s
jnb p2.2,3s
4s:
mov 7fh,#04h
sjmp cek_besar_delay_auto1
3s:
mov 7fh,#03h
sjmp cek_besar_delay_auto1
2s:
mov 7fh,#02h
sjmp cek_besar_delay_auto1
1s:
mov 7fh,#01h
cek_besar_delay_auto1:
11
ret
delay_auto:
acall cek_besar_delay_auto
mov 50h,a
mov a,7fh
cjne a,#01h,delay_auto_2s
mov 51h,#01h
sjmp jalankan_delay_auto
delay_auto_2s:
cjne a,#02h,delay_auto_3s
mov 51h,#02h
sjmp jalankan_delay_auto
delay_auto_3s:
cjne a,#03h,delay_auto_4s
mov 51h,#03h
sjmp jalankan_delay_auto
delay_auto_4s:
mov 51h,#04h
jalankan_delay_auto:
acall tunda1s
jnb p1.1,merst
djnz 51h,jalankan_delay_auto
mov a,50h
ret
merst:
ljmp rst
;============================================================
delay_manual:
jnb p1.0,delay_manual1
jnb p1.1,merst1
acall tunda500ms
sjmp delay_manual
delay_manual1:
acall tunda500ms
ret
merst1:
ljmp rst
;-----------------------------------------------------------------------
hit_pulsa:
inc r0
mov 70h,a
mov a,r0
cjne a,#0ah,hit_pulsa1
mov r0,#00h
inc r1
mov a,r1
cjne a,#0ah,hit_pulsa1
12
mov r1,#00h
inc r2
hit_pulsa1:
mov a,70h
ret
tamp_pulsa:
mov a,70h
mov 5ah,r0
mov 5bh,r1
mov 5ch,r2
mov a,#30h
add a,5ah
mov 5ah,a
mov a,#30h
add a,5bh
mov 5bh,a
mov a,#30h
add a,5ch
mov 5ch,a
acall alamat_c5
mov p0,5ch
acall e_nya
mov p0,5bh
acall e_nya
mov p0,5ah
acall e_nya
mov 70h,a
ret
tamp_pola_r3:
mov p0,6ah
acall e_nya
mov p0,69h
acall e_nya
mov p0,68h
acall e_nya
mov p0,67h
acall e_nya
ret
tamp_pola_r4:
mov p0,7ah
acall e_nya
mov p0,79h
acall e_nya
mov p0,78h
acall e_nya
mov p0,77h
acall e_nya
ret
13
hit_indi_r3:
mov 6fh,a
mov a,6ah
cjne a,#31h,hit_indi_r31
clr p3.4
sjmp hit_indi_r32
hit_indi_r31:
setb p3.4
hit_indi_r32:
mov a,69h
cjne a,#31h,hit_indi_r33
clr p3.5
sjmp hit_indi_r34
hit_indi_r33:
setb p3.5
hit_indi_r34:
mov a,68h
cjne a,#31h,hit_indi_r35
clr p3.6
sjmp hit_indi_r36
hit_indi_r35:
setb p3.6
hit_indi_r36:
mov a,67h
cjne a,#31h,hit_indi_r37
clr p3.7
sjmp hit_indi_r38
hit_indi_r37:
setb p3.7
hit_indi_r38:
mov a,6fh
ret
hit_indi_r4:
mov 6fh,a
mov a,7ah
cjne a,#31h,hit_indi_r41
clr p3.4
sjmp hit_indi_r42
hit_indi_r41:
setb p3.4
hit_indi_r42:
mov a,79h
cjne a,#31h,hit_indi_r43
clr p3.5
sjmp hit_indi_r44
hit_indi_r43:
setb p3.5
14
hit_indi_r44:
mov a,78h
cjne a,#31h,hit_indi_r45
clr p3.6
sjmp hit_indi_r46
hit_indi_r45:
setb p3.6
hit_indi_r46:
mov a,77h
cjne a,#31h,hit_indi_r47
clr p3.7
sjmp hit_indi_r48
hit_indi_r47:
setb p3.7
hit_indi_r48:
mov a,6fh
ret
hit_pola_r3:
mov 66h,r0
mov 65h,a
mov r0,#67h
mov a,63h
mov 5dh,#00h
hit_pola_r3_1:
mov b,#02h
div ab
mov 6fh,a
mov a,#30h
add a,b
mov @r0,a
mov a,6fh
inc r0
inc 5dh
cjne a,#00h,hit_pola_r3_1
hit_pola_r3_2:
mov a,5dh
cjne a,#08h,hit_pola_r3_3
mov r0,66h
mov a,65h
ret
hit_pola_r3_3:
mov @r0,#30h
inc r0
inc 5dh
sjmp hit_pola_r3_2
hit_pola_r4:
mov 71h,r0
mov 72h,a
mov r0,#77h
15
mov a,64h
mov 5dh,#00h
hit_pola_r4_1:
mov b,#02h
div ab
mov 6fh,a
mov a,#30h
add a,b
mov @r0,a
mov a,6fh
inc r0
inc 5dh
cjne a,#00h,hit_pola_r4_1
hit_pola_r4_2:
mov a,5dh
cjne a,#08,hit_pola_r4_3
mov r0,71h
mov a,72h
ret
hit_pola_r4_3:
mov @r0,#30h
inc r0
inc 5dh
sjmp hit_pola_r4_2
put_pola_cw:
mov 62h,a
mov a,63h
rr a
mov 63h,a
mov a,64h
rr a
mov 64h,a
mov a,62h
ret
put_pola_ccw:
mov 62h,a
mov a,63h
rl a
mov 63h,a
mov a,64h
rl a
mov 64h,a
mov a,62h
ret
16
;----------------------------------------------------------------------------------------------
;untuk tampilan pada lCD
t_lcd_cw:
setb p2.7
acall k_pola
acall k_0000
acall k_cw
acall baris2
ret
t_lcd_ccw:
setb p2.7
acall k_pola
acall k_0000
acall k_ccw
acall baris2
ret
t_lcd_mode:
acall k_000
acall k_pulsa
ret
k_pola:
mov p0,#50h ;P
acall e_nya
mov p0,#4fh ;O
acall e_nya
mov p0,#4ch ;L
acall e_nya
mov p0,#41h ;A
acall e_nya
mov p0,#20h ;
acall e_nya
mov p0,#3dh ;=
acall e_nya
mov p0,#20h ;
acall e_nya
ret
k_cw:
mov p0,#43h ;C
acall e_nya
mov p0,#57h ;W
acall e_nya
ret
k_ccw:
mov p0,#43h ;C
acall e_nya
acall k_cw
ret
17
k_fs:
mov p0,#46h ;F
acall e_nya
mov p0,#53h ;S
acall e_nya
ret
k_ttkkoma:
mov p0,#2ch ;,
acall e_nya
mov p0,#20h ;
acall e_nya
ret
k_fss:
acall k_fs
mov p0,#53h ;S
acall e_nya
acall k_ttkkoma
ret
k_fsg:
acall k_fs
mov p0,#47h ;G
acall e_nya
acall k_ttkkoma
ret
k_hs:
mov p0,#48h ;H
acall e_nya
mov p0,#53h ;S
acall e_nya
mov p0,#20h ;
acall e_nya
acall k_ttkkoma
ret
k_pulsa:
mov p0,#20h ;
acall e_nya
mov p0,#50h ;P
acall e_nya
mov p0,#75h ;u
acall e_nya
mov p0,#6ch ;l
acall e_nya
mov p0,#73h ;s
acall e_nya
mov p0,#61h ;a
acall e_nya
ret
k_000:
mov p0,#30h ;0
acall e_nya
18
mov p0,#30h ;0
acall e_nya
mov p0,#30h ;0
acall e_nya
ret
k_0000:
acall k_000
mov p0,#30h ;0
acall e_nya
mov p0,#20h ;
acall e_nya
mov p0,#2ch ;,
acall e_nya
ret
;---------------------------------------------------------------------------------------------
;instruksi-instruksi LCD
inisialisasi:
clr p2.7
mov p0,#00111000b
acall e_nya
mov p0,#00001110b
acall e_nya
mov p0,#00000110b
acall e_nya
ret
bersih:
clr p2.7
mov p0,#00000001b
acall e_nya
ret
e_nya:
acall tunda5ms
setb p2.6
acall tunda5ms
clr p2.6
acall tunda5ms
ret
baris2:
clr p2.7
mov p0,#11000000b
acall e_nya
setb p2.7
ret
alamat_c5:
clr p2.7
mov p0,#0c5h
acall e_nya
setb p2.7
ret
alamat_87:
19
clr p2.7
mov p0,#87h
acall e_nya
setb p2.7
ret
;----------------------------------------------------------------------------------------------
;sebagai waktu tunda untuk LCD
tunda1s:
mov 30h,#ratusan
tunda1s1:
mov th0,#high cacah
mov tl0,#low cacah
setb tr0
tunda1s2:
jnb tf0,tunda1s2
clr tf0
clr tr0
djnz 30h,tunda1s1
ret
tunda5ms:
mov 30h,#satuan
tunda5ms1:
mov th0,#high pencacah
mov tl0,#low pencacah
setb tr0
tunda5ms2:
jnb tf0,tunda5ms2
clr tf0
clr tr0
djnz 30h,tunda5ms1
ret
tunda500ms:
mov 30h,#peratus
tunda500ms1:
mov th0,#high percacah
mov tl0,#low percacah
setb tr0
tunda500ms2:
jnb tf0,tunda500ms2
clr tf0
clr tr0
djnz 30h,tunda500ms1
ret
20
;------------------------------------------------------------
;untuk tampilan perrama setelah LCD dinyalakan
t_utama:
setb p2.7
mov p0,#22h ;"
acall e_nya
mov p0,#4dh ;M
acall e_nya
mov p0,#6fh ;o
acall e_nya
mov p0,#74h ;t
acall e_nya
mov p0,#6fh ;o
acall e_nya
mov p0,#72h ;r
acall e_nya
mov p0,#20h ;
acall e_nya
mov p0,#53h ;S
acall e_nya
mov p0,#74h ;t
acall e_nya
mov p0,#65h ;e
acall e_nya
mov p0,#70h ;p
acall e_nya
mov p0,#70h ;p
acall e_nya
mov p0,#65h ;e
acall e_nya
mov p0,#72h ;r
acall e_nya
acall baris2
mov p0,#20h ;
acall e_nya
mov p0,#20h ;
acall e_nya
mov p0,#20h ;
acall e_nya
mov p0,#20h ;
acall e_nya
mov p0,#54h ;T
acall e_nya
mov p0,#72h ;r
acall e_nya
mov p0,#61h ;a
acall e_nya
mov p0,#69h ;i
21
acall e_nya
mov p0,#6eh ;n
acall e_nya
mov p0,#65h ;e
acall e_nya
mov p0,#72h ;r
acall e_nya
mov p0,#22h ;"
acall e_nya
ret
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44