laporan praktikum mikroprofesor€¦ · laporan praktikum mikroprofesor z80-pio untuk gerak motor...
TRANSCRIPT
LAPORAN PRAKTIKUM
MIKROPROFESOR
Z80-PIO UNTUK GERAK MOTOR STEPPER
Disusun oleh:
Nama : Yudi Irwanto
NIM : 021500456
Jurusan : Teknofisika Nuklir
Prodi : Elektronika Instrumentasi
Dosen/Asisten : 1. Adib Afham
2. Rokhmat Arifianto
SEKOLAH TINGGI TEKNOLOGI NUKLIR
BADAN TENAGA NUKLIR NASIONAL
YOGYAKARTA
2017
TUJUAN PERCOBAAN
1. Menggunakan Z80-PIO sebagai system keluaran.
2. Dapat mengatur gerak motor stepper dengan Z80-PIO.
3. Menggerakkan dua motor stepper dengan arah yang berbeda.
4. Mengenal Rangkaian penguat arus untuk motor stepper.
PERALATAN YANG DIGUNAKAN
1. Kit uPF-1
2. Z80-PI0
3. Rangkaian Penguat Arus dan Motor Stepper.
DASAR TEORI
Pendahuluan
Pada disiplin ilmu kimia nuklir, sangat memerlukan suatu alat penggerak tetap yang
kontinyu. Dalam suatu proses kimia diperlukan memindah-mindahkan tabung cuplikan untuk
diganti dengan tabung yang lain, untuk menampung tetesan zat kimia sampai tabung berisi
volume tertentu maka harus ditunggu sampai waktu tertentu pula biasanya 1 jam atau satu
setengan jam tabung akan terisi tetesan zat kimia mencapai sekitar 20 cc. Proses penampungan
tersebut berjalan secara kontinyu yang menjemukan dan kadang mencapai 2 bulan terus-menerus
proses baru berhenti. Pekerjaan yang menjemukan yang berlangsung cukup lama tersebut dapat
dengan mudah diatasi dengan membuat sistem pergantian tabung dirancang secara otomatis
dengan memberikan bagi pemakai alat untuk dapat memasukkan sela waktu yang diperlukan
dengan memberi lokasi untuk jam, menit dan detik.
Untuk itu perlu dibuat alat penggeser tabung cuplikan secara elektronis yang dikontrol oleh
sistem mikroprosesor Z-80 dengan memanfaatkan motor stepper sebagai penggeser sudutnya
yang dapat ditentukan secara tepat dan dapat diandalkan. Dengan motor stepper ini dapat
dihindarkan ketidak tepatan pergeseran tabung cuplikan yang akan menyebabkan tetesan zat
kimia tidak tepat masuk pada lobang tabung yang tersedia. Gambar rancangbangun sistem
penampung cuplikan seperti gambar 1 dan sistem secara keseluruhan seperti gambar 2.
Gambar 1. Rancangbangun sistem penampung cuplikan otomatis.
Rangkaian Penggerak Motor Stepper.
Rangkaian penggerak motor stepper disebut juga rangkaian penguat arus untuk gerakan
motor stepper terlihat pada Gambar 1, dalam rangkaian tersebut terdapat dioda yang berfungsi
untuk mencegah remanensi dari motor masuk ke transistor. Dengan adanya dioda ini maka
transistor dapat terhindar dari kerusakan. Sedangkan tahanan 10 Kdalam rangkaian ini
berfungsi meredam arus yang terlalu besar lewat pada transistor. Rangkaian penguat ini
dirancang berdasarkan persyaratan teknis yang harus dipenuhi untuk menggerakkan motor
stepper yang dipakai. Persyaratan teknis yang diperlukan adalah harus mampu memberikan arus
minimal sebesar 0,8 Ampere pada tegangan minimal 4,7 Volt tiap phasenya. Untuk mewujudkan
rangkaian penguat ini digunakan 3 transistor tipe BC141 dan 4 transistor tipe TIP 3055 untuk
sebuah motor stepper.
Kedua macam transistor tsb. disusun secara Darlington guna mendapatkan penguatan yang
cukup besar. Penguatan rangkaian dinyatakan dengan rumus : Ic = 12 Ib dengan 1 =
penguatan transistor BC141 dan 2 penguatan transistor TIP 3055.
T
K
P
Tangki eluen
Gambar 2. Sistem penampung fraksi kolom penukar ion.
SISTEM
MPF-1
Rangkaian Penguat
Arus
Pompa Dosis
KPK1 PK2
PE1 T E2
Mt1 Mt2
Gambar 3. Rangkaian Penguat Arus.
Prinsip kerja dari rangkaian driver ini adalah sbb. :
Jika pada masukan tidak diberikan pulsa eksitasi, maka kedua transistor tidak bekerja, akibatnya
Vce = Vcc sehingga tidak ada arus yang mengalir pada kumparan motor stepper. Tetapi bila
pada masukan diberikan pulsa eksitasi maka kedua transistor akan bekerja (ON) dan tegangan
Vce menjadi nol sehingga terjadi aliran arus melalui kumparan motor stepper. Sistem pergantian
aliran didasarkan atas selesainya cacahan besaran waktu yang dimasukkan. Keluaran dari Z80-
PIO memiliki arus yang masih kecil sehingga belum mampu menggerakkan stepper motor yang
membutuhkan arus sebesar 1 ampere untuk setiap phasenya. Untuk itu diperlukan rangkaian
driver yang dalam hal ini juga berfungsi sebagai penguat arus.
MOTOR STEPPER.
Motor stepper adalah sebuah alat yang bekerja dengan daya listrik untuk menghasilkan
putaran mekanik, dimana tidak seperti motor-motor konvensional, yang menghasilkan sebuah
kecepatan putar (dengan daya listrik tsb.) akan tetapi menghasilkan gerakan dari satu posisi sudut
ke posisi sudut lainnya yang diakibatkan oleh pulsa-pulsa listrik yang diberikan pada motor.
Motor stepper dapat diputar searah dengan jarum jam atau sebaliknya, oleh karena itu cocok
untuk macam-macam kontrol dan pengaturan posisi dalam dunia industri. Ciri dasar motor
stepper adalah saat diberi tenaga poros motor akan bergerak kemudian berhenti setelah sejumlah
step, sesuai dengan perintah-perintah masukan digital yang diberikan.
PRINSIP KERJA MOTOR STEPPER.
Operasi dasar sebuah motor stepper didasarkan pada prinsip dasar magnit, seperti kutup magnit
yang tarik menarik, bukan sebaliknya. Jika stator sebagaimana dalam gambar 4a diberi tenaga,
maka stator A menjadi kutub utara, stator B kutub selatan dan magnit permanen diposisikan
seperti yang ditunjukkan, maka sebuah torsi akan ditimbulkan dan mengakibatkan rotor
berubah posisi 1800
dari posisi sebelumnya. Adalah tidak mungkin untuk menentukan arah
putaran, karena dalam kenyataannya, rotor tidak boleh bergerak jika tenaga pada kedua stator
seimbang. Jika 2 buah kutub stator C dan D ditambahkan, seperti pada gambar 4b, maka dapat
diperkirakan arah putaran rotor. Dalam gambar 4c arah putaran rotor berlawanan arah jarum
jam, dengan posisi rotor berada diantara 2 kutub utara dan 2 kutub selatan. Agar
posisi rotor dapat berada tepat lurus dengan salah satu kutub stator maka diperlukan
pengendali pemberian tenaga pada masing-masing stator, dan hal itu biasanya sudah ada
aturannya untuk masing-masing jenis dan tipe motor stepper. Gambar rangkaian Z80-PIO
seperti percobaan 6 terdahulu (gambar 5) dan rangkaian penggerak motor stepper terlihat
pada gambar 3.
D0 19 15 PA0 D1 20 14 PA1
D2 1 13 PA2
D3 40 12 PA3
D4 39 10 PA4
D5 38 9 PA5
D6 3 8 PA6
D7 2 7 PA7
6 18 ARDY
5 PIO 16 ASTB
CE 4 Z80 27 PB0
M1 37 28 PB1
IORQ 36 29 PB2
RD 35 30 PB3
+5V 26 31 PB4
GND 11 32 PB5
CLK 25 33 PB6
INT 23 34 PB7
IEI 24 21 BRDY
IEO 22 17 BSTB
Gambar 5. Data keluar melalui port A.
Untuk menggerakkan 1 buah motor stepper diperlukan 4 bit data yaitu PA0, PA1, PA2 dan
PA3 atau PA4, PA5, PA6 dan PA7 dan jika menggerakkan 2 buah motor stepper maka
digunajan PA0 s/d PA7. Data untuk menggerakkan motor stepper kekanan adalah : 06, 0c, 09
dan 03 (half step 1,80) dan 02, 06, 04, 0c, 08, 09, 01 dan 03 (full step, 0,9
0).
PERCOBAAN-PERCOBAAN :
1. Untuk menggerakkan motor stepper berputar kekiri atau kekanan diatur oleh data-
data yang disimpan pada alamat tertentu misalkan alamat memori 1850H s/d 1853H.
Untuk
membuat agar motor stepper berputar setengah lingkaran dan berhenti.
Masukk
an program berikut ini ke uPF-1, jalankan dan amati hasilnya.
Program Gerak setenganh lingkaran 1800
Program
Gerak
Utama
Motor
Stepper
Alamat
program
Bahasa
Mesin
No.
Baris
Label OPCODE Operand Keterangan
1800 1 ORG 1800H Awal program
1800 3E 0F 2 LD A, 0F Isi reg A dgn 0F
1802 D3 82 3 OUT (82), A Masukkan ke (82)
1804 1806
06 19 0E 08
4
Loop 2 LD
LD
B, 19 C, 08
Reg B pengali (25x)
Isi reg C dgn 04
1808 DD 21 50 18 5 LD IX, 1850 Isi IX dgn 1850
180C DD 7E 00 6 Loop 1 LD A, (IX) Masukkan ke reg A
180F D3 80 7 OUT (80), A Keluarkan dari PIO
1811 CD 30 18 8 CALL PERIODE Panngil delay
1814 DD 23 9 INC IX Naikkan IX
1816 0D 10 DEC C Turunka isi reg C
1817 C2 0C 18 11 JP NZ, Loop1 Belum 0 ke Loop1
181A 181C
10 EA
FF
12 DJNZ
RST
Loop2
38H
Loncat ke Loop 2
Selesai
Data Putar ke kiri 1850 03 01 09 08 13 EQU 03 01 09 08 Data gerak ke kiri
1857 0C 04 06 02 14 EQU 0C 04 06 02
Data Putar ke
kanan
1850 02 06 04 0C 13 EQU 02 06 04 0C Data gerak ke kanan
1852 08 09 01 03 14 EQU 08 09 01 03
Sub routine Periode gerak (delay)
Program Sub routine GERAK (delay)
Alamat
program
Bahasa
Mesin
No.
Baris
Label OPCODE Operand Keterangan
1830 1 ORG 1830H Awal program
1830 C5 2 PUSH BC Pergikan BC
1831 D5 3 PUSH DE Pergikan DE
1832 E5 4 PUSH HL Pergikan HL
1833 F5 5 PUSH AF Pergikan AF
1834 0E 05 6 LD C, 05 Isi reg C dgn 05
1836 11 05 05 7 Loop A LD DE, 05 05 Isi DE dgn 05 05
1839 1D 8 Loop B DEC E Reg E - 1
183A C2 39 18 9 JP NZ Loop B Loncat ke Loop B
183D 15 10 DEC D Isi reg D-1
183E C2 39 18 11 JP NZ, Loop B Belm 0 ke Loop B
1841 0D 12 DEC C Turunkan isi reg C
1842 C2 36 18 13 JP NZ, Loop A Belm 0 ke Loop A
1845 F1 14 POP AF Tarik Reg AF
1846 E1 15 POP HL Tarik reg HL
1847 D1 16 POP DE Tarik Reg DE
1848 C1 17 POP BC Tarik reg BC
1849 C9 18 RET Kembali ke utama
2. Setelah melakukan dan mengamati percobaan 1, maka buatlah program untuk
menggerakkan motor stepper berputar ke kiri 7,20
dengan delay 1 detik dan program
akan berhenti jika tombol reset ditekan. Sebagai penunjang subroutine 1 detik adalah
sebagai berikut :
3. Sub routine delay 1 detik.
PROGRAM Sub routine Delay 1 detk
Alamat
program
Bahasa
Mesin
No.
Baris
Label OPCODE Operand Keterangan
1860 1 ORG 1860H Awal program
1860 01 7B 62 2 LD BC, 62 7B BC sbg counter
1863 E3 3 DLY EX (SP), HL Siklus tundaan
1864 E3 4 EX (SP), HL Siklus tundaan
1865 ED A1 5 CPI 1867 E0 6 RET PO Parity Odd ?
1868 18 F9 7 Loop A JR DLY Belum, ke DLY
4. Setelah melakukan dan mengamati percobaan 2, maka buatlah program untuk
menggerakkan motor stepper berputar ke kiri 7,20
sebanyak 15 kali dengan tiap-
tiap gerakan di delay 1 detik dan setelah bergerak 15 kali motor berhenti. Putaran
15 kali dengan membuat loop 0FH langkah delay 1 detik seperti percobaan 2.
5. Buatlah program untuk menggerakkan motor stepper berputar ke kanan 7,20
dengan
masukan tundaan detik, jika tundaan detik sama dengan nol maka motor akan
bergerak lagi.
PEMBAHASAN
Percobaan 1.
Percobaan kali ini bertujuan agar praktikan dapat menggunakan Z80 sebagai system keluaran
dan juga agar praktikan dapat mengatur gerak motor stepper dengan Z80-PIO. Pada percobaan
ini, praktikan menggunakan motor stepper yang akan digerakkan menggunakan mikroprosesor
serta menggunakan sebuah driver untuk motor stepper. Adapun rangkaiannnya adalah seperti
gambar berikut:
Setelah praktikan merangkai seperti gambar diatas, praktikan memasukan program pada
mikroprosesor. Adapun pembahasan untuk programnya akan dijabarkan sebagai berikut.
Pada alamat awal 1800H, diinstruksikan program LD A, 0F ; OUT (82), A. Instruksi ini
merupakan inisialisasi bahwa port A digunakan sebagai port untuk keluaran. Selanjutnya,
diinstruksikan LD B, 19. Instruksi ini bermaksud untuk mengisi register B dengan data 25
(bilangan Desimal) sebagai banyaknya loop yang akan dijalankan. Instruksi ini juga dijadikan
pengali, karena setiap sekali gerak motor stepper menghasilkan sudut 0,72’. Sehingga apabila
register B diisikan dengan 25 maka sudut yang terbentuk sebesar (25 x 0,72 = ). Selanjutnya
diinstruksikan LD C, 08 , yang bertujuan mengisi reg C dengan data 8. Yang selanjutnya akan
dilakukan loop sebanyak 8 kali dari isi reg C ini.
Kemudian pada reg IX, diisikan alamat 1850H. Dimana, pada alamat 1850H adalah berisi
program untuk pergerakan arah putaran motor stepper. Apakah berputar ke kanan, atau ke kiri.
Berikut adalah uraiannya:
Putar kiri
Data diisikan 03 01 09 08 0C 04 06 02. Data tersebut dapat diubah menjadi data bilangan
decimal sebagai berikut:
03H=0000 0011
01H=0000 0001
09H=0000 1001
08H=0000 1000
0CH=0000 1100
04H=0000 0100
06H=0000 0110
02H=0000 0010
Karena motor stepper terdiri dari 4 bagian, maka ke empat bilangan decimal dapat
dijadikan masukan untuk motor stepper. Sehingga arah motor stepper bergerak mengikuti
masukan yang bernilai 1. Hal inilah yang menyebabkan motor berputar ke kiri.
Putar kanan
Data diisikan 02 06 04 0C 08 09 01 03. Data tersebut dapat diubah menjadi data bilangan
decimal sebagai berikut:
02H=0000 0010
06H=0000 0110
04H=0000 0100
0CH=0000 1100
08H=0000 1000
09H=0000 1001
01H=0000 0001
03H=0000 0011
Sama dengan bagian pada “putar kri”, dikarenakan motor stepper terdiri dari 4 bagian,
maka ke empat bilangan decimal dapat dijadikan masukan untuk motor stepper. Sehingga
arah motor stepper bergerak mengikuti masukan yang bernilai 1. Hal inilah yang
menyebabkan motor berputar ke kanan.
Selanjutnya adalah menginstuksikan LD A, (IX) ; OUT (80), A. Instruksi menandakan bahwa
Reg data A digunakan sebagai keluaran. Selanjutanya menggunakan instruksi CALL 1830.
Instruksi ini untuk memanggil alamat 1830, sehingga sebelum program dijalankan, pada alamat
1830 harus di isikan program untuk mengatur delay dari putaran motor stepeer.Adapun
pembahasan untuk subroutine nya adalah sebagai berikut:
Pada subroutine ini, diinstruksikan PUSH BC ; PUSH DE ; PUSH HL ; PUSH AF.
Instruksi ini digunakan untuk menyimpan isi register pada B, C, D, E, H, dan L ke Stack
Pointer (SP). Selanjutnya instruksi LD C, 05 mengisi reg C dengan data 05H yang akan
digunakan untuk banyaknya penge-loop-an. Begitu juga untuk instruksi selanjutnya yakni
LD DE, 05 05. Kemudian reg D dikurangi 1 dengan instruksi DEC E. Apabila belum
bernilai 0 untuk reg E maka akan terus dikurangi hingga reg E bernilai 0. Setelah bernilai
0, barulah isi reg D dikurangi 1 juga dengan instruksi DEC D . Apabila reg D belum
bernilai 0 maka akan dilakukan penge-loop-an ke instruksi DEC E. Setelah reg D bernilai
0 barulah program dilanjutkan dengan mengurangi reg C, apabila reg C belum bernilai 0
maka akan dilakukan penge-loop-an lagi dari instruksi LD DE, 05 05. Setelah reg C
bernilai 0, barulah program dilanjutkan dengan memindahkan data dari SP ke reg A; F;
H; L; D; E; B; dan C dengan instruksi POP. Dan ditutup dengan instruksi RET untuk
kembali ke main program.
Setelah program CALL 1830 dijalankan, dilanjutkan dengan instruksi INC IX untuk menambah
isi reg IX, dan instruksi DEC C untuk mengurangi isi reg C. Apabila reg C belum bernilai 0,
maka akan dilakukan penge-loop-an lagi dari instruksi LD A, (IX). Setelah isi register C bernilai
0, maka akan dilakukan penge-loop-an lagi dari instruksi LD C, 08. Setelah isi reg B bernilai 0,
berulah program berakhir.
Percobaan 2.
Pada percobaan 2 ini, memiliki program utama yang sama dengan percobaan 1, hanya berbeda
pada subroutine program yang digunakan. Pada percobaan 2 ini, digunakan sub routine untuk
delay setiap gerakan motor stepper sebesar 1 sekon. Pada percobaan ini, alamat CALL yang
dipanggil adalah pada alamat 1860. Berikut adalah penjelasan dari subroutine-nya.
Pada alamat awalnya, yakni 1860 diinstruksikan LD BC, 62 7B untuk mengisi reg B dan reg C
sebagai counternya. Selanjutnya diinstruksikan EX (SP), HL sebanyak 2 kali. Yang dilanjut
dengan instruksi CPI. Selanjutnya diinstruksikan JR DLY untuk melakukan penge-loop-an
berdasarkan isi reg B dan C.
Dari percobaan 2 ini, diperoleh bahwa motor bergerak sangat lambat. Setiap gerakan yang
dihasilkan motor stepper memiliki delay 1 sekon. Hal ini menunjukkan praktikan telah berhasil
melakukan percobaan 2.
Kesimpulan:
1. Port A pada Z80 digunakan sebagai Port untuk keluaran.
2. Pada percobaan 1, sudut yang dihasilkan tergantung pada banyaknya gerak yang
dilakukan pada motor stepper. Banyaknya pergerakan setiap 0.72’ dapat diatur
menggunakan Z80. Apabila reg B bernilai 0A, maka sudut yang dihasilkan sebesar 7.2’.
3. Pada percobaan 2, waktu tunda untuk bergerak setiap sudut 0.72’ adalah 1 detik.
Praktikan mengganti subroutine-nya dengan program subroutine untuk delay 1 detik.
Lampiran
Flowchart percobaan 1
Percobaan 2