MESIN PENGEBOR PRINTED CIRCUIT BOARD (PCB)...
Transcript of MESIN PENGEBOR PRINTED CIRCUIT BOARD (PCB)...
MESIN PENGEBOR PRINTED CIRCUIT BOARD (PCB)
OTOMATIS
TUGAS AKHIR
Disusun dalam rangka memenuhi salah satu persyaratan
untuk menyelesaikan Program Strata-1 Jurusan Teknik Elektro
Universitas Hasanuddin
Makassar
Disusun Oleh :
M. YUDHA PRAWIRA A N
D411 10 262
ZALDY YUNUS
D411 10 264
JURUSAN ELEKTRO FAKULTAS TEKNIK
UNIVERSITAS HASANUDDIN
MAKASSAR
2015
iii
ABSTRAK
Pembuatan prototype mesin pengebor printed circuit board (PCB) ini
bertujuan untuk membuat mesin bor PCB yang dapat bekerja secara otomatis
sehingga dapat membantu meminimalisir kesalahan yang terjadi pada pengeboran
PCB dengan metode manual. Perancangan dan pembuatan mesin bor dikendalikan
dengan menggunakan sebuah mikrokontroler AT-Mega 128, dimana posisi titik
pengeboran diatur melalui sebuah aplikasi antarmuka yang terinstal pada sebuah
komputer. Mesin ini dirancang dengan menggunakan 2 motor stepper sebagai
penggerak pada sumbu X dan sumbu Y, dan sebuah motor DC dipasangkan sejajar
pada posisi X,Y yang digunakan untuk melakukan pengeboran. Posisi step dari
motor akan di representasikan dalam model koordinat 2D pada skala millimeter.
Proses memasukkan koordinat pada mesin dilakukan melalui aplikasi dengan
mengetikkan koordinat ataupun mengarahkan motor stepper yang ada pada mesin
dengan tombol arah. Data yang dimasukkan selanjutnya dikirim melalui
komunikasi serial ke mikrokontroler sebagai pusat kendali mesin.
Kata Kunci— Mesin Bor PCB, PCB, Bor otomatis, mikrokontroler.
iv
KATA PENGANTAR
Assalamu’alaikum warahmatullahi wabaraktuh.
Puji syukur kami panjatkan atas kehadirat ALLAH SWT untuk setiap
rahmat dan karunia yang diberikan oleh-Nya, sehingga penulis dapat
menyelesaikan tugas akhir ini sebagai salah satu syarat untuk mendapatkan gelar
sarjana pada Fakultas Teknik Universitas Hasanuddin. Dan tidak lupa, salam serta
sholawat dicurahkan kepada Rasulullah Muhammad SAW yang akan senantiasa
menjadi panutan hingga akhir zaman.
Tugas Akhir ini dibuat sebagai salah satu syarat yang harus dipenuhi
dalam menyelesaikan studi pada Jurusan Elektro Fakultas Teknik Universitas
Hasanuddin, dengan judul :
“MESIN PENGEBOR PRINTED CIRCUIT BOARD (PCB) OTOMATIS”
Kami menyadari bahwa dalam penyusunan tugas akhir ini masih terdapat
banyak kekurangan, oleh karena keterbatasan penulis sebagai manusia biasa. Oleh
karena itu penulis senantiasa mengharapkan saran dan kritik yang bersifat
membangun dari para pembaca demi pengembangan dan perbaikan tugas akhir ini
kedepannya.
Dalam usaha merampungkan tugas akhir ini, kami mengakui bahwa telah
banyak ditemui rintangan dan hambatan. Namun berkat bantuan dan motifasi dari
v
berbagai pihak, baik secara langsung maupun tidak langsung hingga pada
akhirnya penulis dapat merampungkan tulisan ini.
Oleh karena itu, pada kesempatan ini penulis ingin menyampaikan
ungkapan terima kasih kepada pihak-pihak yang telah banyak membantu dan
penghargaan tulus kepada:
1. Kedua Orang Tua penulis atas doa yang tak pernah putus dan semangat
yang tak pernah sirna, serta kami yakin bahwa semua takkan teraih tanpa
doa dan restu kedua orang tua kami.
2. Bapak Dr. Ir. H. Andani Achmad, MT selaku Ketua Jurusan Elektro
Fakultas Teknik Universitas HasanuddindanBapak Ir. Gassing, MT selaku
Sekretaris Jurusan Elektro Fakultas Teknik Universitas Hasanuddin.
3. Bapak Dr.-Ing. Faizal Arya Samman, ST., MT selaku Pembimbing I
dan Bapak Ir. Christoforus Yohannes MT selaku Pembimbing II.
4. Bapak Dr. Adnan ST., MT. Selaku penguji pada Seminar Hasil kami.
5. Segenap Staf Dosen dan Karyawan Jurusan Elektro Fakultas Teknik
Universitas Hasanuddin, atas segala ilmu pengetahuan dan bantuan yang
telah diberikan selama kami berada di sini.
6. Kanda-kanda senior serta adik-adik yang tidak dapat kami sebutkan satu
persatu yang telah membantu dalam penyelesaian Tugas Akhir ini.
7. Teman seperjuangan “ KCT Elektroteknik UNHAS” dan “DETEKTOR
2010” yang tidak dapat kami sebutkan satu persatu.
vi
8. Dan segenap pihak yang tidak bisa disebutknan satu per satu yang telah
banyak membantu dalam penyelesaiantugas akhir ini, baik secara langsung
maupun tidak langsung.
Akhirnya sekali lagi penulis mengucapkan banyak terima kasih kepada
semua pihak yang telah membantu dalam penyelesaian tugas akhir ini. Semoga
tugas akhir ini dapat memberikan manfaat untuk para pembaca utamanya dalam
membangun bangsa dan negara ini.
Alhamdulillahirabbil alamin
Wassalamu’alaikum Warahmatullahi Wabarakatuh
Makassar, Agustus 2015
Penulis
vii
DAFTAR ISI
HALAMAN JUDUL .......................................................................................... i
LEMBAR PENGESAHAN ................................................................................ ii
ABSTRAK ......................................................................................................... iii
KATA PENGANTAR ....................................................................................... iv
DAFTAR ISI ...................................................................................................... vii
DAFTAR GAMBAR ......................................................................................... x
DAFTAR TABEL .............................................................................................. xii
BAB I PENDAHULUAN ................................................................................. 1
I.1 Latar Belakang .................................................................................... 1
I.2 Rumusan Masalah ............................................................................... 2
I.3 Tujuan .................................................................................................. 2
I.4 Batasan Masalah .................................................................................. 3
I.5 Metode Pelaksanaan ............................................................................ 3
BAB II TINJAUAN PUSTAKA ........................................................................ 5
II.1 Mesin Pengebor PCB(Printed Circuit Board) .................................... 5
II.2 Metode Pengontrolan Mesin Pengebor PCB ..................................... 5
II.2.1 Kontrol mesin bor PCB dengan menggunakan PLC
(Programmable Logic Controller) ............................................ 6
II.2.2 Kontrol mesin bor PCB berbasis Computer Numerical Control
(CNC) ...................................................................................... 7
II.3 Penelitian dan Karya tentang Mesin Pengebor PCB .......................... 8
viii
II.3.1 Kontrol Mesin Bor PCB Otomatis dengan Menggunakan
Programable Logic Controller(PLC) ...................................... 8
II.3.2 Rancang Bangun Mesin Bor Pcb Otomatis Berbasis
Computer Numerical Control (CNC) ....................................... 9
II.3.3 Tugas Akhir Berjudul “CNC PCB Drilling Machine using
Novel Natural Approach to Euclidean TSP” ........................... 10
BAB III PERANCANGAN MESIN PENGEBOR PCB OTOMATIS ............. 12
III.1 Garis Besar Perancangan .................................................................. 12
III.2 Alat dan Bahan ................................................................................. 12
III.2.1 Alat .......................................................................................... 12
III.2.2 Bahan ....................................................................................... 13
III.3 Rancangan Alat ................................................................................. 14
III.4 Prosedur Kerja Pembuatan ................................................................ 15
III.5 Perancangan dan Pembuatan Perangkat Keras .................................. 16
III.5.1 Pembuatan Rangka Mekanik ................................................... 17
III.5.2 Alat Penggerak ........................................................................ 18
III.5.3 Perancangan Mesin Bor ........................................................... 18
III.6 Perancangan dan Pembuatan Rangkaian Elektronika ........................ 19
III.7 Perancangan dan Pembuatan Perangkat Lunak ................................. 24
III.7.1 Perangkat Lunak Mikrokontroler ............................................ 24
III.7.2 Perangkat Lunak Aplikasi PC.................................................. 26
BAB IV PENGUJIAN DAN ANALISIS MESIN PCB OTOMATIS ................ 30
IV.1 Pengujian Fungsional ....................................................................... 30
ix
IV.1.1 Pengujian Fungsional Perangkat Driver Motor Dan Motor
Penggerak ............................................................................... 31
IV.1.1.1 Pengujian Driver Motor ............................................ 31
IV.1.1.2 Pengujian Motor Penggerak ..................................... 32
IV.1.2 Pengujian Motor Servo dan Motor Bor ................................... 34
IV.1.3 Pengujian Komunikasi Hardware dan Software ..................... 34
IV.2 Pengujian Kinerja dan Kualitas ........................................................ 36
IV.2.1 Pengujian Jarak Horizontal ..................................................... 36
IV.2.2 Pengujian Jarak Vertikal ........................................................ 38
IV.2.3 Pengujian Membuat Lubang Kaki IC ..................................... 39
IV.2.4 Pengujian Menggunakan Layout PCB ................................... 40
IV.3 Analisis Pengujian ............................................................................ 44
IV.4 Analisis Jarak dan Putaran Motor Stepper ....................................... 45
IV.5 Analisis Kecepatan Pergerakan Mesin ............................................. 45
BAB V PENUTUP ............................................................................................. 46
V.1 Kesimpulan ........................................................................................ 46
V.2 Saran .................................................................................................. 47
DAFTAR PUSTAKA ........................................................................................ 48
LAMPIRAN
x
DAFTAR GAMBAR
Gambar 2.1 Mesin Pengebor PCB ................................................................. 5
Gambar 2.2 Blok Diagram Umum Mesin Bor Otomatis Berbasis PLC ......... 7
Gambar 2.3 Prototipe Mesin Bor PCB Berbasis PLC ..................................... 8
Gambar 2.4 Desain Mesin Bor PCB Berbasis CNC ....................................... 11
Gambar 2.5 Prototipe Mesin Bor PCB Berbasis CNC .................................... 11
Gambar 3.1 Blok Diagram Sistem Mesin Pengebor PCB ............................... 15
Gambar 3.2 Diagram Alir Perancangan Mesin Pengebor PCB....................... 16
Gambar 3.3 Kontruksi mekanik mesin pengebor PCB .................................. 18
Gambar 3.4 (a) Konstruksi Mekanik Penggerak Sumbu y ............................. 19
(b) Konstruksi Mekanik Penggerak Sumbu x ............................. 19
Gambar 3.5 Kontruksi Mekanik Motor Bor .................................................... 20
Gambar 3.6 Rangkaian Sistem Mikrokontroler .............................................. 21
Gambar 3.7 Rangkaian Skematik Driver Motor L298 .................................... 22
Gambar 3.8 Rangkaian Skematik Modul Serial RS3232 ................................ 23
Gambar 3.9 Flowchart Sistem......................................................................... 27
Gambar 3.10 Flowchart Aplikasi Antar Muka ................................................. 29
Gambar 3.11 Tampilan Aplikasi Antarmuka .................................................... 30
Gambar 4.1 (a) Driver Motor saat Diberikan Sinyal Digital High .................. 31
(b) Driver Motor saat Diberikan Sinyal Digital Low .................. 31
Gambar 4.2 Hasil Pengujian Tes Komunikasi Menggunakan Software
Hyperterminal .............................................................................. 35
xi
Gambar 4.3 Hasil Pengujian Vertikal, Pengujian Horizontal Dan
Pengujian Lubang IC ................................................................... 40
Gambar 4.4 (a) Hasil Output Pengeboran PCB ............................................... 42
(b) Posisi Titik Pengeboran Berdasarkan Layout PCB ............... 42
xii
DAFTAR TABEL
Tabel 4.1 Hasil Pengujian Driver Motor1 ........................................................ 32
Tabel 4.2 Pengujian Motor Penggerak ............................................................ 33
Tabel 4.3 Hasil Pengujian Motor Servo Dan Motor Bor ................................. 34
Tabel 4.4 Hasil Pengujian Horozontal ............................................................ 36
Tabel 4.5 Hasil Pengujian Vertikal .................................................................. 38
Tabel 4.6 Hasil Pengujian Layout PCB............................................................ 42
1
BAB I
PENDAHULUAN
I.1 Latar Belakang
Printed Circuit Board (PCB) merupakan suatu instrumen penting dalam
dunia rancang bangun rangkaian elektronika dimana kumpulan beberapa komponen
elektronika yang dapat menjalankan suatu sistem tertentu terdapat di dalamnya.
Dalam penggunaan PCB terdapat beberapa tahapan yang harus dilalui, diantaranya
adalah pembuatan skema, pembuatan layout, pemindahan layout ke PCB,
pengetchingan, pembersihan, dan pengeboran lubang komponen.
Pengeboran lubang merupakan proses yang menentukan pola peletakan
komponen pada PCB, semakin kompleks suatu rangkaian maka lubang komponen
akan semakin banyak, sehingga bisa terjadi kesalahan dimana ada beberapa titik
yang tidak dibor apabila dilakukan secara manual. Baik tidaknya peletakan
komponen berpengaruh dari hasil pengeboran ini, kesalahan peletakan komponen
pada PCB dapat berakibat fatal diantaranya adalah patahnya kaki komponen, dan
terputusnya jalur pada PCB, terutama pada jalur-jalur kecil yang seluruhnya dapat
mengakibatkan sistem tidak dapat berfungsi secara sempurna.
Berdasarkan hal tersebut kami membuat suatu rancangan mesin bor dengan
menggunakan 3 penggerak mekanik yang mewakili sumbu x, y, dan z. Dalam
pengontrolannya kami menggunakan sebuah aplikasi berbasis objek sebagai
antarmuka pada komputer (PC), dengan input data berupa titik koordiant (X,Y).
Terdapat dua cara penginputan koordinat, yaitu metode manual dengan cara
2
menggerakkan motor menggunakan tombol arah pada aplikasi, dan metode
penginputan koordinat dengan cara mengetikkan titik koordinat pada kolom input
secara langsung.
I.2 Rumusan Masalah
Berdasarkan latar belakang tersebut, maka dirumuskan masalah yaitu,
membuat mesin yang membantu dalam mengatasi kesalahan pengeboran dengan
metode manual. Serta merancang aplikasi antarmuka sehingga mesin dapat dengan
mudah dikendalikan melalui perangkat komputer.
1.3 Tujuan
Berdasarkan rumusan masalah di atas, maka tujuan penulisan tugas akhir ini
adalah:
1. Membuat prototype mesin bor PCB dengan kendali otomatis yang dapat
berkerja secara efisien dan dengan hasil yang maksimal.
2. Merancang aplikasi berbasis objek sebagai userinterface untuk
mengendalikan prototype.
1.4 Batasan Masalah
Batasan masalah dalam penulisan tugas akhir ini adalah:
1. Protoype yang dibuat bekerja berdasarkan 3 sumbu, yaitu Sumbu X dan
Sumbu Y, yang digerakkan dengan motor stepper serta sumbu z sebagai or
yang digerakkan menggunakan motor servo .
2. Area kerja pada mesin berupa persegi dengan ukuran 22 cm x 16 cm.
3
3. Resolisi gerak untuk sumbu x adalah 0.013mm/ step dan resolusi gerak
sumbu y sebesar 0.21mm/ step
4. Pengontrolan mesin dilakukan menggunakan sebuah aplikasi berbasis objek
pada PC.
5. Komunikasi mesin dengan PC menggunakan koneksi serial
I.5 Metode Pelaksanaan
Dalam penyusunan tugas akhir ini, ada beberapa metode yang akan kami
gunakan, yaitu:
1. Studi literatur
Mengadakan studi dari buku, internet, dan sumber bahan pustaka
atau informasi lainnya yang terkait dengan materi yang dibahas dalam
tulisan ini.
2. Perancangan prototype
Merancang konstruksi mekanis dan program sesuai dengan tujuan
dari penyusunan tugas akhir ini.
3. Pengambilan data
Menguji prototype yang telah dibuat apakah telah berfungsi dan
bekerja dengan baik atau tidak.
4. Analisis hasil pengambilan data
Menganalisis hasil dari pengambilan data serta melakukan
perbaikan terhadap error jika diperlukan.
4
5. Diskusi dan konsultasi
Melakukan tanya jawab secara langsung kepada pembimbing dan
kepada pihak yang lebih profesional yang berhubungan dengan tugas akhir
ini.
6. Pengambilan kesimpulan
Membuat kesimpulan sebagai hasil dari analisis yang telah
dilakukan sekaligus merupakan akhir dari penyusunan tugas akhir ini.
5
BAB II
TINJAUAN PUSTAKA
II.1 Mesin Pengebor PCB (Printed Circuit Board)
Dalam dunia elektronika modern, mesin bor PCB memiliki banyak manfaat
dalam penggunaannya. Selain menghemat waktu dan tenaga, alat ini juga
memiliki tingkat ketelitian yang lebih dibanding dengan pengeboran dengan
manual atau dengan tenaga manusia karena hasil yang diperoleh dipengaruhi
dengan mood manusia itu sendiri.
Gambar 2.1 Mesin Pengebor PCB[8]
II.2 Metode Pengontrolan Mesin Pengebor PCB (Printed Circuit Board)
Ada beberapa metode pengontrolan pada mesin pengebor PCB diantaranya:
6
II.2.1 Kontrol mesin bor PCB dengan menggunakan PLC (Programmable
Logic Controller).[3]
Mesin bor PCB ini dikontrol dengan menggunakan Programmable Logic
Controller (PLC). PLC akan mengebor PCB secara otomatis dengan koordinat
yang telah ditentukan.
Ada beberapa cara dalam proses input koordinat pada mesin ini yaitu
dengan menginput langsung secara manual ke memori PLC, menggunakan file
text yang berisikan koordinat bor, dan menggunakan file image dari print out
PCB.
Penginputan koordinat menggunakan file text dan file image print out
PCB dilakukan menggunakan bantuan Komputer (PC). Sebuah program yang
berjalan di PC, dirancang khusus untuk melakukan proses pengambilan data
koordinat titik-titk bor dari file text atau image dari print out PCB. Beberapa
metode image processing digunakan dalam sistem ini untuk mengolah image
dari print out PCB sehingga didapatkan koordinat bor.
Komunikasi antara PC dan PLC dilakukan dengan menggunakan
komunikasi serial dan protocol hostlink.
Secara umum cara kerja dari mesin bor otomatis dapat dilihat pada
gambar 2.2.
7
Gambar 2.2 Blok Diagram Umum Mesin Bor Otomatis Berbasis PLC
II.2.2 Kontrol mesin bor PCB berbasis Computer Numerical Control
(CNC).[1]
Mesin bor PCB otomatis berbasis Computer Numerical Control(CNC)
merupakan sebuah mesin yang digunakan untuk melakukan pengeboran
otomatis terhadap Printed Circuit Board (PCB) berdasarkan data koordinat
(Excellon Drill File) yang diperoleh dari software OrCAD 10.0. Mesin ini
tersusun atas 3 buah sumbu yang bergerak secara translasi yaitu sumbu X, Y
dan Z. Tiap-tiap sumbu akan bergerak untuk mendeteksi kemudian melakukan
pengeboran pada titik yang dituju. Mekanisme kontrol dilakukan oleh
mikrokontroler setelah menerima data koordinat dari PC.
Mesin ini dapat dioperasikan secara manual maupun otomatis. Mode
operasi manual selain dapat digunakan untuk menjalankan mesinsecara manual
juga dapat digunakan untuk menentukan posisi offset(0,0,0) dari lengan sumbu
supaya diperoleh hasil pengeboran yang maksimal.
8
II.3 Penelitian dan Karya tentang Mesin Pengebor PCB
Beberapa penelitian dan karya mesin pengebor PCB yang pernah dibuat
diantaranya :
II.2.1 Kontrol Mesin Bor PCB Otomatis dengan Menggunakan
Programable Logic Controller(PLC).[3]
Secara umum prinsip kerja dari mesin bor ini telah dijelaskan di atas.
Berikut gambar prototipe dari mesin bor :
Gambar 2.3 Prototipe Mesin Bor PCB Berbasis PLC
Mesin bor diracang dengan menggunakan empat buah motor yaitu
dua motor stepper dan dua buah motor DC. Motor stepper digunakan
untuk menggerakkan alat bor dalam arah dua dimensi yaitu arah X dan Y.
Arah sumbu X dan Y ini adalah system koordinat dari mesin bor untuk
9
menentukan lokasi koordinat pad dan via yang harus dibor. Dalam system
ini, penggerak arah sumbu X dinamakan lengan X dan penggerak arah
sumbu Y dinamakan lengan Y. Satu dari dua motor DC, digunakan untuk
menaikkan dan menurunkan alat bor dalam arah sumbu Z (arah vetikal).
Penggerak alat bor dalam arah sumbu Z ini dinamakan lengan Z. Motor
DC yang lain digunakan untuk memutar mata bor saat akan dilakukan
pengeboran.
Spesifikasi mekanik penggerak lengan mesin bor otomatis dalam
arah X dan Y adalah 1 step dari motor stepper akan menggerakkan lengan
sejauh 0,00794 mm. Sehingga dapat diketahui untuk menggerakkan lengan
X atau Y sejauh 1 cm dibutuhkan 1259,4 step atau dibulatkan 1260 step.
Pengambilan koordinat dari print out PCB atau dari file text
dilakukan dengan bantuan sebuah PC. Sebuah program dirancang khusus
untuk melakukan proses ini.
II.3.2 Rancang Bangun Mesin Bor PCB Otomatis Berbasis Computer
Numerical Control (CNC).[1]
Mesin ini terdiri dari tiga buah sumbu yang bergerak secara
translasi dan dikendalikan oleh PC melalui mikrokontroler. Secara garis
besar data-data yang diperlukan dalam suatu proses pengeboran PCB akan
diolah oleh PC kemudian data tersebut akan dikirimkan secara serial ke
mikrokontroler untuk menggerakkan motor menuju koordinat yang
10
dikehendaki. Konstruksi mesin didukung oleh beberapa komponen utama
yaitu papan alas PCB, tiang penyangga, ulir dan penyangga ulir .
Papan alas PCB berukuran 20x15x3 cm, ulir sumbu x sepanjang 40
cm dengan diameter 12 mm, ulir sumbu y sepanjang 25 cm dengan
diameter 12 mm, dan ulir sumbu z sepanjang 10 cm dengan diameter 12
mm. Penyangga tiap-tiap sumbu memiliki panjang dan diameter sama
untuk tiap sumbu dan pada tiap sumbu diberi 2 penyangga.
Kontrol posisi sumbu koordinat menggunakan Kontrol Loop
terbuka sedangkan untuk pengaturan kecepatan motor Bor menggunakan
Kontrol ON-OFF. Scaning pola pengeboran dilakukan secara bebas baik
vertical maupun horizontal sesuai dengan data koordinat OrCAD Excellon
Drill File yang masuk terlebih dahulu.
Mikrokontroler digunakan untuk menerima data pulsa dari PC
secara serial dan mengaktifkan bit-bit yang diperlukan oleh masing-
masing driver motor untuk menggerakan mata bor menuju koordinat yang
dikehendaki dan melakukan pengeboran.
II.3.3 Tugas Akhir Berjudul “CNC PCB Drilling Machine using Novel
Natural Approach to Euclidean TSP”.[6]
Tugas Akhir ini dibuat oleh Zulkifli Tahir, Nur Azman Abu,
Shahrin Sahib, dan Nanna Suryana Herman dari Fakultas Teknologi dan
Informasi Universitas Teknikal Malaysia.
Mesin ini memiliki konstruksi dengan tiga sumbu/koordinat yang
bergerak yaitu x,y,dan z. Posisi lubang yang akan dibor ditentukan oleh
11
gerak sumbu x dan y dan sumbu z adalah parameter untuk
menggerakkan mesin bor ke atas atau ke bawah. Berikut desain dari alat
pengebor PCB :
Gambar 2.4 Desain Mesin Bor PCB Berbasis CNC
Dalam pembuatannya, mesin ini membutuhkan komponen antara lain :
1. Komponen Mekanik: baja, kayu, mur dan baut.
2 Komponen Elektronika : motor stepper dan mikroprosesor, kit
mikrokontroler dan motor bor.
3. Komponen Pemroses Utama : komputer, monitor, catu daya, peralatan
input, softeare pemrograman C++ dan softeare pembuat layout PCB.
Gambar 2.5 Prototipe Mesin Bor PCB Berbasis CNC
12
BAB III
PERANCANGAN MESIN PENGEBOR PRINTED
CIRCUIT BOARD (PCB) OTOMATIS
III.1 Garis Besar Perancangan
Secara garis besar, perancangan mesin pengebor PCB otomatis ini terdiri
dari perancangan dan pembuatan perangkat keras, Perancangan dan pembuatan
rangakaian elektronika, dan perancangan dan pembuatan perangkat lunak.
Perancangan dan pembuatan perangkat keras meliputi rangka mesin, alat penggerak
serta perancangan motor bor. Sedangkan perancangan hardware meliputi rangkaian
mikrokontroler, rangkaian input-output, komunikasi serial, driver motor, dan motor
stepper. Dan untuk perancangan software meliputi perangkat lunak mikrokontroler,
LCD, serta antarmuka pada PC.
Perancangan mesin pengebor PCB ini dimaksudkan untuk membantu
meminimalisir kesalahan yang terjadi pada pengeboran PCB dengan metode
manual.
III.2 Alat dan Bahan
III.2.1 Alat
Peralatan yang digunakan dalam pembuatan prototype ini adalah sebagai
berikut:
1) Komputer 1 unit
Spesifikasi :
Processor : Intel® Core™ i5-3317U CPU @ 1.70GHz (4
CPUs)
13
RAM : 4.GB (3,90 GB usable)
System Type : 64-bit Operating System
2) Multitester 1 buah
3) Solder 1 buah
4) Penyedot timah 1 buah
5) Obeng 1 buah
6) Bor listrik 1 buah
7) Gurinda tangan 1 buah
8) Tang jepit 1 buah
9) Tang rivet 1 buah
10) Downloader 1 buah
III.2.2 Bahan
Dalam pembuatan tugas akhir ini, bahan yang digunakan adalah sebagai
berikut:
1. Aluminium ½ x ½ inci dan aluminium 1 x ½ inci, sebagai rangka dari mesin.
2. Fiber 3 mm, sebagai area kerja dan tempat dari komponen elektronika.
3. Rivet 3 mm, sebagai penyambung ujung-ujung aluminium.
4. AT-Mega128, sebagai mikrokontroler serta menjadi pusat pengontrolan
pada sistem.
5. Usb to serial RS232, sebagai kabel penghubung modul max3232 dan serial
komputer.
6. MAX3232, sebagai modul komunikasi serial yang menghubungkan
komputer ke mikrokontroler.
14
7. Motor Stepper, sebagai penggerak Sumbu X dan penggerak Sumbu Y.
8. Driver Motor, sebagai pengendali dari motor stepper.
9. Limit switch, sebagai sensor untuk mengetahui posisi awal motor.
10. LCD 2x16, sebagai modul penampil status mesin.
11. Power Supply, sebagai suplai daya DC ke rangkaian mesin.
12. Kabel Ties, berfungsi menyatukan kabel-kabel yang terpisah.
13. Saklar, berfungsi sebagai switch ON/OFF.
14. Black housing, berfungsi sebagai konektor.
15. Kabel pelangi, sebagai kabel penghubung antar komponen.
III.3 Rancangan Alat
Mesin ini terdiri dari beberapa unit fungsional yang secara keseluruhan
terpadu dalam satu kendali yaitu mikrokontroler AT-Mega128, driver motor,
Modul MAX-3232, LCD, dan motor stepper, seperti yang terlihat pada Gambar 3.1
Gambar 3.1 Blok Diagram Sistem Mesin Pengebor Printed Circuit Board
(PCB)
User
Interface Mikrokontroler
Motor Bor
LCD
Catu Daya DC
Penggerak Sumbu X
Penggerak Sumbu Y
15
III.4 Prosedur Kerja Pembuatan
Perancangan tugas akhir ini dipadukan dalam tiga proses perancangan yaitu
perancangan dan pembuatan perangkat keras, Perancangan dan pembuatan
rangkaian elektronik, dan perancangan software, sehingga tahapan terakhir
adalah memadukan ketiga proses perancangan tersebut. Beberapa tahapan dalam
proses perancangan ini dapat disusun dalam suatu diagram alir. Diagram alir
perancangan dapat dilihat pada Gambar 3.2
Mulai
Persiapan
Perancangan Penelitian
Memenuhi syarat?
Perancangan Mekanik, Elektronik dan software
Pembuatan Mekanik
AB
Gambar 3.2 Diagram Alir Perancangan Mesin Pengebor PCB
16
AB
Pembuatan Model Elektronik
Pembuatan Software
Uji Coba
Selesai
Tidak
Sesuai
Gambar 3.2 Diagram Alir Perancangan Mesin Pengebor PCB (lanjutan)
Untuk perancangan dan pembuatan perangkat keras berfokus pada
pembuatan kontruksi mekanik penggerak mesin. Adapun pada perancangan dan
pembuatan rangkaian elektronik yaitu bagaiman membuat sebuah sistem
elektronika yang dapat bekerja secara bersama sebagai komponen masukan dan
keluaran dari mesin. Sedangkan untuk perancangan perangkat lunak bertujuan
untuk membuat program untuk mengontrol mekanik dan sistem elektronika
diatas. Tahap terakhir dalam penelitian adalah pengujian kinerja dari mesin.
III.5 Perancangan dan Pembuatan Perangkat Keras
Perancangan perangkat keras atau hardware pada tugas akhir ini meliputi
perancangan dan pembuatan rangka mekanik, perancangan dan pembuatan
motor penggerak dan perancangan mekanik bor.
17
III.5.1 Pembuatan Rangka Mekanik
Rangka mesin dibuat dengan bentuk 3 tingkatan, yaitu rangka bagian
bawah, rangka bagian tengah, dan rangka bagian atas. Rangka bagian bawah
merupakan tempat untuk meletakkan rangkaian elektronik berupa, modul
mikrokontroler, driver motor, power suplay, dan rangkaian elektronik lainnya.
Rangka bagian tengah merupakan daerah gerak sumbu y, mekanik untuk sumbu
y dibuat agar dapat bergerak maju atau mundur,selain itu pada sumbu y juga
terdapat area kerja atau (work space) yaitu tempat memasang PCB sebagai objek
yang akan dilubangi, workspace akan bergerak sesuai dengan penggerak dari
sumbu y. Sedangkan rangka bagian atas merupakan daerah gerak sumbu x.
Mekanik sumbu x dibuat agar dapat bergerak ke kiri atau ke kanan. Pada sumbu
x merupakan tempat dimana mekanik mesin bor dipasang. Kontruksi mekanik
dari mesin dapat dilihat pada gambar berikut.
Gambar 3.3 Kontruksi mekanik mesin pengebor PCB
18
III.5.2 Alat Penggerak
Mesin digerakkan dengan menggunakan motor stepper. Pada sumbu x
motor stepper bergerak searah jarum jam untuk perpindahan sumbu x ke kanan,
dan bergerak berlawan arah jarum jam untuk perpindahan sumbu x ke kiri.
Sedangkan untuk sumbu y motor stepper bergerak searah jarum jam untuk
perpindahan sumbu y ke arah depan dan bergerak berlawan arah jarum jam untuk
perpindahan sumbu y ke belakang. Kontruksi mekanik lengan penggerak dapat
dilihat pada gambar 3.4 berikut
(a) (b)
Gambar 3.4 (a) kontruksi mekanik penggerak sumbu y (b) kontruksi mekanik
penggerak sumbu x
III.5.3 Perancangan Mesin Bor
Mesin Bor dipasang pada bagian sumbu x, dimana motor bor bergerak
seiring dengan pergerakan ulir yang terdapat pada motor stepper sumbu x. Sebagai
penggerak naik dan turun dari mesin bor digunakan motor servo yang berfungsi
untuk menekan dan mengangkat mesin bor dari papan PCB. Mesin bor yang
digunakan adalah mesin bor PCB dengan tegangan masukan 12 V DC dengan arus
minimum 1A. Mesin bor yang digunakan dapat dipasangkan mata bor dengan besar
19
0.5 mm sampai dengan 2mm. Berikut gambar kontruksi dari perancangan mesin bor
yang digunakan
Gambar 3.5 Kontruksi mekanik motor bor
III.6 Perancangan dan Pembuatan Rangkaian Elektronika
Bagian sistem elektronika dirancang sesuai dengan fungsi yang diinginkan, Untuk
pengendali utama digunakan Mikrokontroler AT-Mega128 sebagai pusat kontrol,
dan rangkaian input-output lainnya sesuai dengan fungsi diinginkan
Perancangan Rangkaian Mikrokontroler
Sebagai pengendali utama digunakan mikrokontroler ATMega128
dengan crystal 16 MHz. ATMega128 memiliki pin I/O sebanyak 53 pin
sehingga dapat melakukan pengontrolan motor dan sistem elektronika
lain dalam satu mikrokontroler. Pada mikrokontroler ini terhubung
dengan komponen-komponen elektronika lain berupa driver motor,
MAX-3232, LCD, relay, sensor limit switch dan rangkaian elektronik
20
lainnya. Pemrograman mikronkontroler menggunakan bahasa C dengan
CodeVision AVR sebagai compiler. Berikut ini adalah gambar
rangakaian minimum sistem dari ATMEGA128
Gambar 3.6 Rangkaian sistem mikrokontroler
Perancangan Driver Motor
Driver Motor adalah peralatan yang digunakan untuk mengontrol
kecepatan dan arah putaran motor. Untuk mengontrol motor stepper
digunakan driver motor dual H bridge menggunakan IC l298, dengan
masukan berupa 5V untuk rangakain logic, 12 V untuk rangkaian drive,
dan 4 input sebagai kontrol sinyal diskrit pada setiap motor stepper.
Spesifikasi tersebut sesuai dengan keperluan untuk mengendalikan
motor stepper yang digunakan yaitu 12 V DC input dan 4 input untuk
21
setiap stepper motor. Berikut gambar rangkaian Dual H Bridge dari
L298.
Gambar 3.7 Rangkaian skematik driver motor L298
Perancangan Modul Komunikasi serial
Modul mikrokontroler ATMega128 berkomunikasi dengan PC
melalu MAX3232. Modul MAX3232 digunakan karena level tegangan
pada mikrokontroler berbeda dengan level tegangan pada serial PC.
Level tegangan pada serial PC merupakan level tegangan RS232 (-12V
s/d +12V). Logika ‘1’ pada level tegangan RS232 diwakili oleh tegangan
-12V. Dan logika ‘0’ pada level tegangan RS232 diwakili oleh tegangan
+12V. Pada mikrokontroler ATMega128 yang diberi sumber tegangan 5
V logika ‘1’ diwakili tegangan +5 V, dan logika ‘0’ diwakili oleh 0 V.
22
Karena perbedaan level tegangan itu maka modul MAX3232 dibutuhkan
untuk mengubah level tegangan mikrokontroler ke RS232 dan dari level
tegangan RS232 ke level tegangan mikrokontroler. Untuk melakukan
komunikasi serial, pin RX dan pin TX pada mikrokontroler dihubungkan
dengan pin RX dan TX pada IC MAX-3232, dan Pin VCC pada IC
dihubungkan dengan tegangan 5V pada power suplay dan Pin Ground
dihubungkan pada kabel Ground. Berikut ini adalah gambar rangakaian
dari modul RS3232[3]
Gambar 3.8 Rangkaian schematik modul serial RS3232
Perancangan Suplai daya
Untuk menyuplai daya mesin digunakan power suplay dengan input AC
berupa 220 V, 4A, 50 Hz, dan outuput berupa DC 12V, 13A dan 5V,
25A. Tegangan output 12 V DC digunakan sebagai suplai daya pada
motor stepper, dan tegangan output 5V DC digunakan untuk menyuplai
daya pada rangkaian elektronika yaitu mikrokontroler, LCD, Max-3232,
dan tegangan logic driver motor
23
Rangkaian Interface LCD
Rangkaian Interface LCD pada sistem ini berfungsi untuk menampilkan
jumlah langkah dan status kerja mesin. Rangkaian interface ini
dihubungkan ke mikrokontroller dengan menghubungkan pin Register
Select pada LCD dengan PORT A.0 pada AT-Mega 128 sedangkan pin
Enable pada LCD dihubungkan dengan PORT A.2 pada mikrokontroler,
pin data 11-14 pada LCD dihubungkan dengan PORTA.4-PORTA.7
pada Mikrokontroler serta pin Vcc pada LCD dihubungkan dengan VCC
(5V) dan pin Ground pada LCD dihubungkan dengan ground. Untuk
mengatur tingkat kecerahan LCD maka dapat ditempatkan Variabel
Resistor pada Vee dan Vss. Sedangkan untuk menjaga keamanan
komponen maka dapat dipasang dioda sebagai pengaman dari kesalahan
pemasangan kabel suplay dan regulator agar menjaga kebutuhan
perangkat pada kondisi masukan +5 volt.
Rangkaian Limit Switch
Rangkaian Limit swtich ini berfungsi sebagai sensor penanda titik awal
atau koordinat (0,0) pada mesin. Sensor berada pada posisi open circuit
pada saat push button dalam keadaan bebas atau tidak ditekan, dan
menjadi close circuit pada saat push button ditekan. Rangkaian limit
switch ini dihubungkan dengan mikrokontroler dengan cara
menghubungkan Pin Com pada limit swith dengan pin input pada
mikrokontroler, dan Pin NO (Normally Open) pada ground, sedangkan
24
pada Pin NC (Normally Close) dibiarkan untuk tidak terhubung atau
dalam keadaan mengambang.
III.7 Perancangan dan Pembuatan Perangkat Lunak
Perangkat lunak (software) adalah istilah umum untuk data yang diformat
dan disimpan secara digital, berbeda dengan perangkat keras, perangkat lunak
merupakan bagian sistem komputer yang tidak berwujud. Perancangan ini terbagi
atas perancangan perangkat lunak mikrokontroller dan perangkat lunak user
interface pada komputer.
III.7.1 Perangkat Lunak Mikrokontroler
Perangkat lunak mikrokontroller ini dibuat berdasarkan pada pengendali
utamanya yaitu mikrokontroller ATMega128. Bahasa pemrograman yang
digunakan adalah bahasa pemrograman C dengan CodeVision AVR sebagai
compiler. Kumpulan baris-baris perintah (listing program) yang akan ditulis,
biasanya disimpan dengan ekstensi [*.c atau *.prj]. File ini kemudian di-compile
lalu di-upload ke mikrokontroller dengan menggunakan Downloader DT-HiQ AVR
USB ISP sehingga mikrokontroller dapat bekerja sebagai pengendali sistem sesuai
kinerja yang kita inginkan. Perancangan perangkat lunak mikrokontroller pada
tugas akhir ini bertujuan untuk mengenali dan mengolah data yang dikirim oleh
perangkat input dan sebaliknya untuk mengirim data ke perangkat output lainnya.
Untuk memahami kinerja dari program yang akan ditanamkan pada
mikrokontroller maka perlu dibuat alur program (flowchart) agar kinerja dari piranti
masukan dan keluaran dapat berfungsi dengan benar. Alur program mikrokontroller
dari tugas akhir ini dapat dilihat pada gambar berikut
25
Gambar 3.9Flowchart Sistem
start
Motor X ke
posisi 0
Tunggu
Data
Motor Y ke
posisi 0
Data
Status?
Data nyala
Bor?
Data titik
koordinat?
Pengiriman
Status
Proses Nyala
Bor
Proses Data
Koordinat
Kirim data ke
Aplikasi
Desktop
Selesai Power On? Tidak
Ya
Tidak
Tidak
Tidak
Data Reset?
Tidak
Ya
Ya
Ya
Ya
Proses Data
Koordinat
Posisi koordinat
(0,0)?
Ya
Tidak
Ada Data?
Tidak
26
Prinsip kerja dari sistem ini ialah pada saat dijalankan mesin akan mengenali
posisi dari sumbu x dan sumbu y, apabila posisi tidak menunjukkan titik (0,0),
mikrokontroler akan mengirim data untuk menggerakkan motor pada posisi (0,0).
Setelah posisi koodinat telah berada pada titik (0,0) mesin akan menunggu hingga
ada masukan data berupa posisi koordinat. Data yang diterima kemudian akan
diproses sesuai dengan bit yang diterima. Dalam proses pengiriman, data dikirim
dalam 12 bit dimana pada bit 1 yaitu sebagai penanda awal dimulainya pengiriman
data, Bit 2 yaitu kode untuk proses yang akan dilakukan Bit 3 – 7 untuk nilai
koordiant x, bit 8 – 11 untuk nilai koordinat y, dan bit 12 untuk penanda akhir
pengiriman data. Pada bit ke 2 pada pengiriman terbagi atas pernitah pengeboran,
perintah koordinat dan perintah untuk melakukan restart mesin.
Status dan posisi dari mesin akan ditampilkan melalui display LCD. Dengan
menggunakan komunikasi data berbasis serial maka mikrokontroler dapat
terhubung dengan PC yang berfungsi sebagai user interface untuk mengirim dan
menjalankan mesin.
III.7.2 Perangkat Lunak aplikasi PC.
Sebagai user interface, digunakan aplikasi dari program berorientasi objek
sebagai antarmuka untuk memasukkan titik koordinat. User interface dibuat agat
dapat mempermudah pengoperasian mesin oleh user. Aplikasi diranancang agar
dapat menerima intruksi dari mikrokontroler dan mengirim intruksi ke
mikrokontroler. Untuk dapat mengetahui prinsip kerja perangkat lunak pada PC ini
dapat dilihat pada gambar berikut.
27
Gambar 3.10 Flowchart Aplikasi Antar Muka
Terdapat dua cara dalam mengoperasikan mesin melalui aplikasi yaitu
mencari nilai titik koordinat secara manual dengan cara menggerakkan motor
menggunakan tombol arah up, right, left, dan down pada aplikasi. Setelah koordinat
pengeboran didapatkan, data koordinat posisi kemudian disimpan dalam kolom list
agar dapat digunakan untuk proses selanjutnya dengan menggunakan tombol
submit pada form manual. Dan mode penginputan koordinat dengan cara
start
Pilih Port
Koneksi Port
selesai
Mengarahkan motor
penggerak untuk
mencari koordinat
Mengirim
Data
Cara
memasukkan
data
Mengetikkan Posisi
Koordinat
Menyimpan posisi
koordinat
28
mengetikkan titik koordinat pada form input secara langsung. Data yang
dimasukkan akan dikumpulkan pada kolom list yang kemudian dikirim ke mesin
dengan tombol execute. Dalam mengirim dan menerima data dari mikrokontroler
dilakukan melalui port serial RS 232 pada PC. Untuk lebih jelasnya Berikut gambar
tampilan dari aplikasi user interface dengan menggunakan program berorientasi
objek.
Gambar 3.11 Tampilan Aplikasi Antarmuka
Aplikasi PC yang dibuat kemudian disimpan dalam bentuk file *.exe,
sehingga file ini dapat langsung dijalankan secara langsung pada PC dengan
operating system windows.
1. Frame Input
Kolom input untuk memasukkan titik koordinat pengeboran secara
langsung, kolom sumbu x untuk memasukkan koordinat sumbu x, dan kolom
sumbu y untuk memasukkan koordinat sumbu y. Tombol submit berfungsi
29
untuk memasukkan koordinat yang telah diketik, sedangkan tombol clear
berfungsi untuk menghapus isi dari kolom sumbu x dan sumbu y.
2. Frame input manual
Merupakan bagian untuk memasukkan koordinat input secara
manual, yaitu dengan cara mengarahkan motor penggerak menuju ke titik
pengeboran menggunakan tombol arah. Tombol drill berfungsi untuk
menurunkan dan menaikkan motor bor, sedangkan tombol submit berfungsi
untuk memasukkan koordinat yang telah didapat ke database pengeboran
3. Koneksi port
Berfungsi menghubungkan atau menentukan port yang digunakan
dalam komunikasi serial aplikasi dengan mesin. Apabila port yang
ditentukan telah sesuai status port akan berubah menjadi “port terhubung” .
Koneksi port merupakan langkah pertama yang harus dilakukan sebelum
melakukan intruksi lain pada aplikasi.
4. Data koordinat
Setelah koordinat dimasukkan, koordinat tesebut akan dimasukkan
kedalam database pengeboran dan akan ditampilkan kedalam kolom list
pengeboran. Terdapat dua tombol pada sisi kanan kolom, yaitu tombol clear
yang berfungsi untuk mengosongkan list koordinat dan tombol execute
untuk mengirimkan perintah untuk memulai pengeboran pada mesin.
5. Restart and exit
Tombol restart merupakan tombol untuk melakukan perintah
restart. Sedangkan tombol exit berfungsi untuk keluar dari aplikasi.
30
BAB IV
PENGUJIAN DAN ANALISIS
MESIN PENGEBOR PRINTED CIRCUIT BOARD (PCB) OTOMATIS
Dalam bab ini akan dibahas mengenai pengujian alat serta analisis
berdasarkan perencanaan dari sistem yang telah dibuat. Pengujian ini dilakukan
untuk mengetahui kinerja dari mesin dan mengetahui apakah sistem sudah sesuai
dengan perencanaan atau belum.
Untuk memudahkan dalam menganalisis dan menghindari adanya
kesalahan, pengujian yang dilakukan terbagi menjadi dua bagian, yaitu pengujian
fungsional, dan pengujian kinerja dan kualitas mesin. Pengujian fungsional
merupakan pengujian fungsi keseluruhan perangkat input dan output yang
digunakan. Kemudiam pengujian kinerja dan kualitas merupakan pengujian
keakuratan dan keberhasilan kinerja mesin dalam melakukan pengeboran,
berdasarkan perancangan yang telah dilakukan.
IV.1 Pengujian Fungsional
Pengujian fungsional bertujuan untuk menguji fungsi perangkat masukan
dan perangkat keluaran sesuai dengan alur kerja yang diinstruksikan melalui
barisan program perangkat lunak. Pengujian fungsional dilakukan dalam beberapa
bagian, yaitu:
1. Pengujian Driver Motor dan Motor Penggerak
2. Pengujian Motor Servo dan Motor Bor
3. Pengujian dan analisis komunikasi mesin dan PC
31
IV.1.1 Pengujian fungsional perangkat driver motor dan motor penggerak
IV.1.1.1 Pengujian driver motor
Pengujian dilakukan untuk mengetahui karakteristik dari driver yang
digunakan serta mengetahui apakah perangkat dapat bekerja dengan baik.
Pengujian meliputi pengukuran tegangan output dari driver. Adapun prosedur
pengambilan data pada pengujian ini yaitu :
1. Menyalakan power supply dan memberikan tegangan input 12 V pada
pin VCC dan 0 V (ground) pada pin Ground.
2. Memberikan masukan berupa sinyal digital “high” dan “low” pada
setiap pin input secara bergantian melalui mikrokontroler.
3. Mengukur tegangan dengan menggunakan multimeter pada pin output.
(a) (b)
Gambar 4.1 (a) Driver Motor Saat Diberikan Sinyal High (b) i Saat Diberikan
Sinyal Digital Low
32
Tabel 4.1 Hasil Pengujian Driver Motor
Input Output
PIN1 PIN2 PIN3 PIN4 PIN1 PIN2 PIN3 PIN4
1 0 0 0 11.18 V 0 V 0 V 0 V
0 1 0 0 0 V 11.1 V 0 V 0 V
0 0 1 0 0 V 0 V 11.18 V 0 V
0 0 0 1 V 0 V 0 V 11.18 V
Dari hasil pengujian driver diatas dapat dilihat pada saat pin input pada
driver diberikan sinyal digital “high” dari mikrokontroler, Output pin akan aktif,
dan tegangan keluaran pada output akan bernilai +11.18 V. Sedangkan saat input
pin pada driver diberikan sinyal digital “low” dari mikrokontroler, Output pin
akan tidak aktif, dan tegangan keluaran pada output akan bernilai 0 V.
IV.1.1.2 Pengujian motor penggerak
Motor penggerak pada mesin terdiri dari dua motor stepper, yaitu motor
stepper sumbu x, dan motor stepper sumbu y, dimana tiap motor mempunyai
drivernya sendiri-sendiri yang terhubung ke mikrokontroler. Pengujian dilakukan
dengan cara memberikan sinyal-sinyal diskrit 4 bit secara berkesinambungan
melalui barisan perintah pada mikrokontroler. Pengontrolan yang dilakukan
33
menggunakan metode kontrol half step dengan 8 siklus perlangkah. Sinyal
kemudian diteruskan ke driver yang nantinya mengontrol motor penggerak.
Tabel 4.2 Pengujian Motor Penggerak
Pulsa Masukan Putaran motor Stepper
Putaran Half Step Searah jarum
jam
Putaran Half Step berlawanan
arah jarum jam
Dari pengujian diperolah bahwa motor stepper merespon sinyal keluaran
dari driver dengan baik, motor stepper dapat bergerak searah maupun berlawanan
arah jarum jam.
0
1
0 1
34
IV.1.2 Pengujian Motor Servo dan Motor Bor
Pengujian dilakukan dengan menghubungkan VCC servo pada tegangan
5V dan 0V (Grond) untuk kabel ground, kemudian memberikan pulsa PWM
dengan lebar 20ms pada pin input servo. Untuk mengatur putaran servo diberikan
singnal high atau Ton selama 1ms-2ms untuk setiap 20ms pulsa PWM. Dan
Pengujian motor bor dilakukan dengan memberikan sinyal high atau low dari
PORTD.2 mikrokontroler yang disambungkan pada sebuah relay 5V sebagai
switch untuk mengaktifkan motor bor. Berikut hasil pengujian motor servo dan
motor bor yang dilakukan
Tabel 4.3 Hasil pengujian motor servo dan motor bor.
Pulse on PORTD.2 Motor Servo Motor Bor
1ms to 2ms 1 Down On
2ms to 1ms 0 Up Off
IV.1.3 Pengujian Komunikasi Hardware dan Software
Pengujian komunikasi meliputi pengujian komunikasi serial TTL
menggunakan software HyperTerminal yang terpasang pada laptop. Pengujian
dilakukan dengan mengirimkan data dari mikrokontroler melalui modul max3232
yang kemudian dihubungkan ke laptop menggunakan kabel usb to serial. Data
yang dikirimkan merupakan data dengan bentuk asci dengan nilai 60.
35
Berikut tampilan hasil penerimaan data menggunakan software
Hyperterminal.
Gambar 4.2 Hasil Pengujian tes komunikasi menggunakan software
Hyperterminal
Dari hasil pengujian diperoleh jika perangkat komunikasi dapat berkerja
dengan baik, hal ini diperlihatkan oleh hasil penerimaan data software
Hyperterminal sesuai dengan data yang dikirim dari mikrokontroler. Data yang
ditampilkan pada HyperTerminal merupakan data ASCII yang telah diterjemah
kedalam bentuk karakter yaitu ASCI 60 = huruf A.
36
IV.2 Pengujian Kinerja dan Kualitas
Pengujian kinerja dan kualitas dilakukan dengan mengoperasikan mesin
yang telah dirancang yaitu dengan melakukan beberapa kali tes pengeboran PCB.
Pengujian yang dilakukan terdiri dari 4 bagian, yaitu pengujian Horizontal,
pengujian Vertikal, pengujian membuat lubang ic dan pengujian dengan
menggunakan layout PCB. Pengujian Horizontal yaitu dengan melakukan
pengeboran sepanjang koordinat x++ dengan nilai sumbu y=0. Pengujian Vertikal
yaitu dengan melakukan pengeboran sepanjang koordinat y++ dengan nilai sumbu
x=0. Sedangkan Pengujian dengan layout PCB yaitu dengan melakukan
pengeboran berdasarkan layout PCB yang ingin dibuat.
IV.2.1 Pengujian Jarak Horisontal
Pengujian horizontal dilakukan untuk mengetahui tingkat ketelitian dari
perpindahan sumbu X pada mesin. Pengujian ini dilakukan dengan cara
memberikan kenaikan pada input koordinat X dan memberikan input koordiat
Y=0. Jarak antar titik pengeboran diatur sesuai dengan jarak yang digunakan
dalam standar PCB dot matrix yaitu 2.5mm.
Tabel 4.4
Hasil pengujian horizontal
Titik
Pengeboran
Koordinat Input
(X,Y)
Jarak titik pengeboran
dari titik awal
Keterangan
1 0,0 0 Sesuai
2 2.5,0 2.5 Sesuai
3 5,0 5 Sesuai
37
Tabel 4.4
Hasil pengujian horizontal (Lanjutan)
Titik
Pengeboran
Koordinat Input
(X,Y)
Jarak titik pengeboran
dari titik awal
Keterangan
4 7.5,0 7.5 Sesuai
5 10,0 10 Sesuai
6 12.5,0 12.5 Sesuai
7 15,0 15 Sesuai
8 17.5,0 17.5 Sesuai
9 20,0 20 Sesuai
10 22.5,0 22.5 Sesuai
11 25,0 25 Sesuai
12 27.5,0 27.5 Sesuai
13 30,0 30 Sesuai
14 32.5,0 32.5 Sesuai
15 35,0 35 Sesuai
16 37.5,0 37.5 Sesuai
17 40,0 40 Sesuai
18 0,42.5 42.5 Sesuai
19 0,45 45 Sesuai
20 0,47.5 47.5 Sesuai
Dapat dilihat hasil pengujian horizontal pada Tabel 4.4, pergerakan mesin
untuk sumbu horizontal dengan menggunakan input secara langsung pada
38
koordinat x,y dengan jarak titik x sebesar 2.5 mm, didapatkan hasil yang sesuai
antara koordinat input dan koordinat posisi output. Pengukuran dilakukan dengan
mengukur hasil titik pengeboran menggunakan mistar dengan skala mm dan
membandingkan dengan koordinat masukan.
IV.2.2 Pengujian Jarak Vertikal
Pengujian Vertikal dilakukan untuk mengetahui tingkat ketelitian dari
perpindahan sumbu Y pada mesin. Pengujian ini dilakukan dengan cara
memberikan kenaikan pada input koordinat Y dan memberikan input koordiat
X=0. Jarak antar titik pengeboran diatur sesuai dengan jarak yang digunakan
dalam standar PCB dot matrix yaitu 2.5mm.
Tabel 4.5
Hasil pengujian vertikal
Titik
Pengeboran
Titik Koordinat
(X,Y)
Jarak titik pengeboran
dari sumbux=0
Keterangan
1 0,0 0 Sesuai
2 0,2.5 2.5 Sesuai
3 0,5 5 Sesuai
4 0,7.5 7.5 Sesuai
5 0,10 10 Sesuai
6 0,12.5 12.5 Sesuai
7 0,15 15 Sesuai
8 0,17.5 17.5 Sesuai
9 0,20 20 Sesuai
10 0,22.5 22.5 Sesuai
39
Tabel 4.5
Hasil pengujian vertikal (Lanjutan)
Titik
Pengeboran
Titik Koordinat
(X,Y)
Jarak titik pengeboran
dari sumbux=0
Keterangan
11 0,25 25 Sesuai
12 0,27.5 27.5 Sesuai
13 0,30 30 Sesuai
14 0,32.5 32.5 Sesuai
15 0,35 35 Sesuai
16 0,37.5 37.5 Sesuai
17 0,40 40 Sesuai
18 0,42.5 42.5 Sesuai
19 0,45 45 Sesuai
20 0,47.5 47.5 Sesuai
Dapat dilihat hasil pengujian horizontal pada Tabel 4.5, pergerakan mesin
untuk sumbu vertikal dengan menggunakan input secara langsung pada koordinat
x,y dengan jarak titik y sebesar 2.5 mm, didapatkan hasil yang sesuai antara
koordinat input dan koordinat posisi output. Pengukuran dilakukan dengan
mengukur hasil titik pengeboran menggunakan mistar dengan skala mm dan
membandingkan dengan koordinat masukan.
IV.2.2 Pengujian Membuat Lubang Kaki IC
Pengujian dilakukan dengan meng-input-kan koordinat x,y sehingga
membentuk lubang untuk kaki IC. Jenis IC yang digunakan pada pengujian yaitu
40
IC max 3232 dengan jumlah pin sebanyak 8 x 2. Berikut hasil pengujian dari
percobaan membuat kaki IC.
Gambar 4.3 Hasil Pengujian Vertikal, Pengujian Horizontal dan
pengujian lubang ic
Pada pengujian dengan percobaan pembuatan kaki IC diperoleh titik
pengeboran yang sesuai dengan posisi pin dari kaki IC max3232 yang digunakan.
Koordniat input yang digunakan yaitu : (10,10), (12.5,10), (15,10), (17.5,10),
(20,10), (22.5,10), (25,10), (27.5,18), (25,18), (22.5,18), (20,18), (17.5,18),
(15,18), (12.5,18), (10,18), dengan jumlah total waktu pengeboran dari titik awal
(0,0) yaitu 1 menit 30 detik.
IV.2.3 Pengujian menggunakan layout PCB
Pada pengujian ini dilakukan pengobaran terhadap layout PCB yang telah
dibuat, layout PCB yang digunakan merupakan layout dari rangkaian modul
komunikasi serial TTL dengan jumlah titik pengeboran sebanyak 41 titik
pengeboran. Pengujian dilakukan dengan menentukan koordinat bor secara
manual dengan cara mengarahkan bor menggunakan tombol arah pada aplikasi
41
menuju titik-titik bor pada PCB. Adapun prosedur pengambilan data yang
dilakukan yaitu:
1. Membuka aplikasi user interface mesin pada laptop.
2. Menghubungkan kabel komunikasi data mesin pada port USB laptop.
3. Menyalakan mesin pengebor PCB, dengan cara menekan saklar ON
mesin
4. Menunggu hingga mesin berada pada posisi (0,0) hingga tampilan
status pada PCB menampilkan “input koordinat”.
5. Memilih port pada aplikasi mesin dan menghubungkannya dengan
cara menekan tombol cekport
6. Memasang layout PCB yang akan di bor pada area kerja mesin.
7. Memasukkan koordinat pengeboran dengan cara mengarahkan motor
bor menggunakan tombol arah, atau memasukkan koordinat secara
langsung pada kolom koordinat x dan koordinat y.
8. Memulai pengeboran berdasarkan titik-titik koordinat yang telah di-
input-kan sebelumnya, dengan menekan tombol execute.
9. Menganalisa hasil pengeboran yang dilakukan mesin.
10. Mencatat hasil yang didapatkan.
42
(a) (b)
Gambar 4.4 (a) Hasil output pengeboran PCB, (b) Posisi titik pengeboran
berdasarkan layout PCB
Tabel 4.6 Hasil Pengujian Layout PCB
Titik Bor Sesuai/ Tidak sesuai Selisih jarak
1 Tidak sesuai 1 mm
2 Sesuai <1 mm
3 Tidak sesuai 1 mm
4 Tidak sesuai 1 mm
5 Sesuai 0 mm
6 Sesuai 0 mm
7 Sesuai <1 mm
8 Sesuai <1 mm
9 Sesuai <1 mm
10 Sesuai 0 mm
11 Sesuai 0 mm
12 Sesuai <1 mm
13 Sesuai <1 mm
43
Tabel 4.6 Hasil Pengujian Layout PCB (Lanjutan)
Titik Bor Sesuai/ Tidak sesuai Selisih jarak
14 Sesuai <1 mm
15 Sesuai 0 mm
16 Tidak Sesuai <1 mm
17 Sesuai <1 mm
18 Sesuai <1 mm
19 Sesuai <1 mm
20 Sesuai <1 mm
21 Sesuai <1 mm
22 Sesuai 0 mm
23 Sesuai 0 mm
24 Sesuai 0 mm
25 Sesuai 0 mm
26 Sesuai 0 mm
27 Sesuai <1 mm
28 Sesuai 0 mm
29 Sesuai <1 mm
30 Sesuai 0 mm
31 Sesuai <1 mm
32 Sesuai <1 mm
33 Tidak Sesuai 1 mm
34 Tidak Sesuai 1 mm
44
Tabel 4.6 Hasil Pengujian Layout PCB (Lanjutan)
Titik Bor Sesuai/ Tidak sesuai Selisih jarak
35 Tidak Sesuai 1 mm
36 Sesuai <1 mm
37 Sesuai <1 mm
38 Sesuai <1 mm
39 Sesuai <1 mm
40 Sesuai <1 mm
41 Sesuai <1 mm
IV.3 Analisis Pengujian
Sesuai hasil yang diperoleh pada Tabel 4.6 pada pengujian pengeboran
menggunakan layout PCB, didapatkan 7 hasil pengeboran tidak sesuai dengan
layout yang digunakan yaitu pada titik bor ke 1, 3, dan 4 dengan kesalahan berupa
pergeseran titik bor sejauh 1mm dari titik layout PCB, dan titik 16, 33,34, dan 35
dengan kesalahan berupa pergeseran titilk kurang dari 1mm, tetapi titik bor
mengenai jalur lain pada PCB. Sedangkan untuk 33 titik lainnya telah sesuai
dengan layout walaupun terdapat pergeseran <1 mm dari beberapa titik. Dari
seluruh percobaan diperoleh persentase kesalahan sebagai berikut.
Persentase Kesalahan = 𝐸𝑅𝑅𝑂𝑅
41 X 100%
Berdasarkan dari hasil perhitungan, didapatkan persentase Kesalahan=
17,07 %, dengan pergeseran jarak maksimum sebesar 1mm. Pergeseran titik bor
dari layout disebabkan oleh peng-input-an titik koordinat secara manual dengan
45
menggerakkan motor bor menuju titik bor, sehingga pada saat pergeseran motor
penggerak dapat terjadi hilangnya step dari motor. Kesalahan pengeboran juga
disebabkan dari kontruksi mekanik dari mesin yang kurang baik.
IV.4 Analisis Jarak dan Putaran Motor Stepper
Pada perancangan mesin bor PCB kami menggunakan motor stepper
sebagai motor penggerak, Motor stepper yang digunakan mempunyai resolusi 1.8
atau 200 step tiap putaran pada sumbu x dan resolusi 9 atau 40 step tiap putaran.
Pada sumbu x digunakan ulir yang menggunakan ball screw dengan jarak
pitch 5.2 mm. Dan untuk sumbu y digunakan belt dengan jarak 16.8mm. Dengan
menggunakan metode halfstep maka resolusi motor stepper bisa diperkecil
menjadi 2 kali tiap putaran, maka jarak yang ditempuh dalam 1 step dapat
dihitung sebagai berikut :
Jarak/ step untuk sumbu x.
Jarak 1 step= 1/400 x 5.2 mm =0.013 mm
Jarak/ step untuk sumbu y.
Jarak 1 step= 1/80 x 16.8 mm =0.21 mm
Jadi dengan resolusi gerak 0.013 mm pada sumbu x dan 0.21 pada sumbu
y maka untuk menghasilkan 10 cm dibutuhkan 7692 step pada motor x dan 476
pada motor y.
IV.5 Analisis kecepatan pergerakan mesin
Kecepatan motor penggerak dipengaruhi frekuensi pulsa yang diberikan
untuk menggerakkan motor stepper. Untuk memutar motor satu putaran
dibutuhkan motor stepper harus diberikan pulsa sebanyak 400 kali pada sumbu x
46
dan 80 kali pada sumbu y. Jika frekuensi pulsa sebesar 1 milidetik untuk sumbu x
dan 2 milidetik pada sumbu , maka untuk menggerakkan motor 1 putaran penuh
didapatkan waktu sebagai berikut:
Waktu/ putaran motor x
T = 400 x 1 milidetik = 0.4 detik
1 Putaran Motor
Waktu/ putaran motor y
T = 80 x 2 milidetik = 0.16 detik
1 Putaran Motor
Dengan jarak pitch 5.2 mm, maka kecepatan lengan penggerak sumbu x
adalah 1.3cm/ detik, dan dengan jarak 16.8 mm pada sumbu y maka kecepatan
lengan penggerak sumbu y adalah 10.5 cm/ detik.
46
BAB V
PENUTUP
V.1 Kesimpulan
Setelah melakukan perancangan dan pembuatan mesin pengebor printed
circuit board (PCB) ini, kemudian dilakukan pengujian dan analisisnya, maka
dapat diambil beberapa kesimpulan sebagai berikut:
1. Pada alat yang dibuat digunakan ATMega128 sebagai pusat kendali
mesin dan motor stepper sebagai penggerak sumbu x dan sumbu y.
2. Dari hasil perancangan dihasilkan mesin yang dapat melakukan
pengeboran dengan jarak sesuai standar jarak titik pcb yaitu sebesar 2.5
mm secara vertikal maupun horizontal.
3. Pada pengujian membuat titik bor IC, Mesin berhasil membuat lubang
untuk kaki ic dengan jumlah pin 8 x 2
4. Pada pengujian menggunakan layout PCB, Mesin dapat melakukan
pengeboran dengan keberhasilan 82,93 % pada 41 titik.
5. Aplikasi berbasis objek sebagai aplikasi antarmuka alat dapat berfungsi
dengan baik.
47
V. 2 Saran
Diharapkan alat ini dapat dilakukan pengembangan kedepannya, baik dari
segi aplikasi maupun sensor dan mekaniknya seperti :
1. Perlu adanya umpan balik pada mesin ke mikrokontroler untuk
mengetahui adanya error.
2. Pengembangan aplikasi untuk penginputan dapat dilakukan dengan
melaukan tracing layout atapun mengambil dari file program pembuat
layout PCB yang sudah banyak digunakan.
3. Kontruksi mekanik yang lebih presisi akan membuat pengabilan data
yang lebih baik.
48
DAFTAR PUSTAKA
[1] Haryanto, Bambang Yudho.Rancang bangun mesin bor PCB berbasis
computer numerical control (CNC).Skripsi.Fakultas Teknik, Program
Sarjana, Institut Teknologi Sepuluh November.2006.
[2] Balusubramanyam N and Prasanthi Smt G.Design and Fabrication of an
Automatic PC-Based Drilling Machine. Journal. HCTL Open IJTR Vol. 7.
India. 2014
[3] Thiang, Wicaksono., Handy and Sugiarto, D.G. Kontrol Mesin Bor PCB
Otomatis dengan Menggunakan Programmable Logic Controller.Skripsi.
Jurusan Teknik Elektro, Universitas Kristen Petra.2012
[4] Putra, Penda Aneka. Mesin pemotong akrilik berbasis
mikrokontroler.Skripsi.Fakultas Teknik, Program Sarjana, Universitas Satya
Wacana. Salatiga.2013
[5] Hodges, S.E and R J Richards. Uncalibrated Stereo Vision ForPcb
Drilling.London.IET.1995
[6] Tahir, Zulkifli, Dkk. CNC PCB Drilling Machine using Novel Natural
Approach to Euclidean TSP. Skripsi.Faculty of Information and
Communication Technology, Universiti Teknikal Malaysia Melaka.2010
[7] Michigami, Norio, Dkk.High-performance Printed Circuit Board Production
Equipment for Ultra-high Density Multi-layer Wiring. Journal. Hitachi
Review Vol. 60, No. 5. Japan. 2011
49
[8] Alwis, P.L.S.C Dkk. Automated Printed Circuit Board (Pcb) Drilling
Machine With Efficient Path Planning. SAITM Research Symposium on
Engineering Advancements. Srilanka.2014.
[9] Jodh, Gautam dkk. Design of low Cost CNC Drilling Machine, Journal.
International Journal of Engineering Research and General Science Volume
2, Issue 2. India.2014
[10] Octovhiana,Krisna D.Cepat Mahir Visual Basic 6.0, Ilmu Komputer, Jakarta.
2003
[11] Ibnu. “Komunikasi serial mikrokontroler dengan PC”. Artikel pembelajaran
mikrokontroler MCS-51, .2007
[12] Simanjuntak, S.V. Dasar-dasar Mikroprosesor Edisi Pertama. Kanisius,
Yogyakarta, 2001.
[13] Prasetya, Retna Dkk.Interfacing Port Paralel dan Port Serial Komputer
dengan Visual Basic 6.0, Andi Offset, Yogyakarta. 2004.
[14] Datasheet. Driver L298
Code Vision Page -1
1. #include <mega128.h> 2. #include <delay.h> 3. #include <stdio.h> 4. #include <string.h> 5. #include <alcd.h> 6. #define limitatas PIND.0 7. #define limitbawah PIND.1 8. #define motor1 PORTA 9. #define motor2 PORTF 10. #ifndef RXB8 11. #define RXB8 1 12. #endif 13. #ifndef TXB8 14. #define TXB8 0 15. #endif 16. #ifndef UPE 17. #define UPE 2 18. #endif 19. #ifndef DOR 20. #define DOR 3 21. #endif 22. #ifndef FE 23. #define FE 4 24. #endif 25. #ifndef UDRE 26. #define UDRE 5 27. #endif 28. #ifndef RXC 29. #define RXC 7 30. #endif 31. #define FRAMING_ERROR (1<<FE) 32. #define PARITY_ERROR (1<<UPE) 33. #define DATA_OVERRUN (1<<DOR) 34. #define DATA_REGISTER_EMPTY (1<<UDRE) 35. #define RX_COMPLETE (1<<RXC)
36. unsigned int y, koy; 37. unsigned char stuanx,plhnx,rtsnx,rbuanx,prbuanx,dt,sm,bufx[5]; 38. unsigned char data_terima,lcd[16],terima[15],s,data_servo; 39. unsigned int a, step, kox, x,q; 40. unsigned int px,qx,rx,sx,kox,py,qy,ry,sy,koy,zigx,zigy; 41. unsigned char ss,stuany,plhny,rtsny,rbuany,prbuany, bufy[5]; 42. bit laser=0, kerja=0, slow, kanan, kiri, atas, bawah; 43. // USART0 Receiver interrupt service routine 44. interrupt [USART0_RXC] void usart0_rx_isr(void) 45. { 46. data_terima=UDR0; 47. terima[s]=data_terima; 48. if(data_terima==255) s=0; 49. s++; 50. } 51. void cwx(unsigned int step) // kiri 52. { 53. if(slow==1) 54. { 55. delay_ms(5); 56. } 57. kiri=1; 58. kanan=0; 59. a=0; 60. switch(sm) 61. { 62. case 1: 63. { 64. motor1=0b1010; 65. goto m1; 66. } 67. break; 68. case 2: 69. { 70. motor1=0b0010; 71. goto m2; 72. } 73. break; 74. case 3: 75. { 76. motor1=0b0110; 77. goto m3; 78. } 79. break; 80. case 4:
Code Vision Page -2
81. { 82. motor1=0b0100; 83. goto m4; 84. } 85. break; 86. case 5: 87. { 88. motor1=0b0101; 89. goto m5; 90. } 91. break; 92. case 6: 93. { 94. motor1=0b0001; 95. goto m6; 96. } 97. break; 98. case 7: 99. { 100. motor1=0b1001; 101. goto m7; 102. } 103. break; 104. case 8: 105. { 106. motor1=0b1000; 107. goto m8; 108. } 109. break; 110. } 111. while(1) 112. { 113. motor1=0b1010; 114. sm=1; 115. m1: 116. if (step<=a) break; 117. delay_ms(1); 118. a++; 119. motor1=0b0010; 120. sm=2; 121. m2: 122. if (step<=a) break; 123. delay_ms(1); 124. a++; 125. motor1=0b0110; 126. sm=3;
127. m3: 128. if (step<=a) break; 129. delay_ms(1); 130. a++; 131. motor1=0b0100; 132. sm=4; 133. m4: 134. if (step<=a) break; 135. delay_ms(1); 136. a++; 137. motor1=0b0101; 138. sm=5; 139. m5: 140. if (step<=a) break; 141. delay_ms(1); 142. a++; 143. motor1=0b0001; 144. sm=6; 145. m6: 146. if (step<=a) break; 147. delay_ms(1); 148. a++; 149. motor1=0b1001; 150. sm=7; 151. m7: 152. if (step<=a) break; 153. delay_ms(1); 154. a++; 155. motor1=0b1000; 156. sm=8; 157. m8: 158. if (step<=a) break; 159. delay_ms(1); 160. a++; 161. } 162. } 163. void ccwx(unsigned int step) // kanan 164. { 165. if(slow==1) 166. { 167. delay_ms(5); 168. } 169. kanan=1; 170. kiri=0; 171. a=0; 172. switch(sm) 173. {
Code Vision Page -3
174. case 1: 175. { 176. motor1=0b0101; 177. goto mx1; 178. } 179. break; 180. case 2: 181. { 182. motor1=0b0100; 183. goto mx2; 184. } 185. break; 186. case 3: 187. { 188. motor1=0b0110; 189. goto mx3; 190. } 191. break; 192. case 4: 193. { 194. motor1=0b0010; 195. goto mx4; 196. } 197. break; 198. case 5: 199. { 200. motor1=0b1010; 201. goto mx5; 202. } 203. break; 204. case 6: 205. { 206. motor1=0b1000; 207. goto mx6; 208. } 209. break; 210. case 7: 211. { 212. motor1=0b1001; 213. goto mx7; 214. } 215. break; 216. case 8: 217. { 218. motor1=0b0001; 219. goto mx8;
220. } 221. break; 222. } 223. while(1) 224. { 225. motor1=0b0101; 226. sm=1; 227. mx1: 228. if (step<=a) break; 229. delay_ms(1); 230. a++; 231. motor1=0b0100; 232. sm=2; 233. mx2: 234. if (step<=a) break; 235. delay_ms(1); 236. a++; 237. motor1=0b0110; 238. sm=3; 239. mx3: 240. if (step<=a) break; 241. delay_ms(1); 242. a++; 243. motor1=0b0010; 244. sm=4; 245. mx4: 246. if (step<=a) break; 247. delay_ms(1); 248. a++; 249. motor1=0b1010; 250. sm=5; 251. mx5: 252. if (step<=a) break; 253. delay_ms(1); 254. a++; 255. motor1=0b1000; 256. sm=6; 257. mx6: 258. if (step<=a) break; 259. delay_ms(1); 260. a++; 261. motor1=0b1001; 262. sm=7; 263. mx7: 264. if (step<=a) break; 265. delay_ms(1); 266. a++;
Code Vision Page -4
267. motor1=0b0001; 268. sm=8; 269. mx8: 270. if (step<=a) break; 271. delay_ms(1); 272. a++; 273. } 274. } 275. void cwy(unsigned int step) // belakang 276. { 277. if(slow==1) 278. { 279. delay_ms(100); 280. } 281. bawah=1; 282. atas=0; 283. a=0; 284. switch(sm) 285. { 286. case 1: 287. { 288. motor2=0b1010; 289. goto ay1; 290. } 291. break; 292. case 2: 293. { 294. motor2=0b0010; 295. goto ay2; 296. } 297. break; 298. case 3: 299. { 300. motor2=0b0110; 301. goto ay3; 302. } 303. break; 304. case 4: 305. { 306. motor2=0b0100; 307. goto ay4; 308. } 309. break; 310. case 5: 311. { 312. motor2=0b0101;
313. goto ay5; 314. } 315. break; 316. case 6: 317. { 318. motor2=0b0001; 319. goto ay6; 320. } 321. break; 322. case 7: 323. { 324. motor2=0b1001; 325. goto ay7; 326. } 327. break; 328. case 8: 329. { 330. motor2=0b1000; 331. goto ay8; 332. } 333. break; 334. } 335. while(1) 336. { 337. motor2=0b1010; 338. sm=1; 339. ss=5; 340. ay1: 341. if (step<=a) break; 342. delay_ms(2); 343. a++; 344. motor2=0b0010; 345. sm=2; 346. ss=4; 347. ay2: 348. if (step<=a) break; 349. delay_ms(2); 350. a++; 351. motor2=0b0110; 352. sm=3; 353. ss=3; 354. ay3: 355. if (step<=a) break; 356. delay_ms(2); 357. a++; 358. motor2=0b0100; 359. sm=4;
Code Vision Page -5
360. ss=2; 361. ay4: 362. if (step<=a) break; 363. delay_ms(2); 364. a++; 365. motor2=0b0101; 366. sm=5; 367. ss=1; 368. ay5: 369. if (step<=a) break; 370. delay_ms(2); 371. a++; 372. motor2=0b0001; 373. sm=6; 374. ss=8; 375. ay6: 376. if (step<=a) break; 377. delay_ms(2); 378. a++; 379. motor2=0b1001; 380. sm=7; 381. ss=7; 382. ay7: 383. if (step<=a) break; 384. delay_ms(2); 385. a++; 386. motor2=0b1000; 387. sm=8; 388. ss=6; 389. ay8: 390. if (step<=a) break; 391. delay_ms(2); 392. a++; 393. } 394. } 395. void ccwy(unsigned int step) // depan 396. { 397. if(slow==1) 398. { 399. delay_ms(100); 400. } 401. a=0; 402. atas=1; 403. bawah=0; 404. switch(ss) 405. {
406. case 1: 407. { 408. motor2=0b0101; 409. goto a1; 410. } 411. break; 412. case 2: 413. { 414. motor2=0b0100; 415. goto a2; 416. } 417. break; 418. case 3: 419. { 420. motor2=0b0110; 421. goto a3; 422. } 423. break; 424. case 4: 425. { 426. motor2=0b0010; 427. goto a4; 428. } 429. break; 430. case 5: 431. { 432. motor2=0b1010; 433. goto a5; 434. } 435. break; 436. case 6: 437. { 438. motor2=0b1000; 439. goto a6; 440. } 441. break; 442. case 7: 443. { 444. motor2=0b1001; 445. goto a7; 446. } 447. break; 448. case 8: 449. { 450. motor2=0b0001; 451. goto a8; 452. }
Code Vision Page -6
453. break; 454. } 455. while(1) 456. { 457. motor2=0b0101; 458. ss=1; 459. sm=5; 460. a1: 461. if (step<=a) break; 462. delay_ms(2); 463. a++; 464. motor2=0b0100; 465. ss=2; 466. sm=4; 467. a2: 468. if (step<=a) break; 469. delay_ms(2); 470. a++; 471. motor2=0b0110; 472. ss=3; 473. sm=3; 474. a3: 475. if (step<=a) break; 476. delay_ms(2); 477. a++; 478. motor2=0b0010; 479. ss=4; 480. sm=2; 481. a4: 482. if (step<=a) break; 483. delay_ms(2); 484. a++; 485. motor2=0b1010; 486. ss=5; 487. sm=1; 488. a5: 489. if (step<=a) break; 490. delay_ms(2); 491. a++; 492. motor2=0b1000; 493. ss=6; 494. sm=8; 495. a6: 496. if (step<=a) break; 497. delay_ms(2); 498. a++;
499. motor2=0b1001; 500. ss=7; 501. sm=7; 502. a7: 503. if (step<=a) break; 504. delay_ms(2); 505. a++; 506. motor2=0b0001; 507. ss=8; 508. sm=6; 509. a8: 510. if (step<=a) break; 511. delay_ms(2); 512. a++; 513. } 514. } 515. void data_kirim(char proses) 516. { 517. zigx=kox; 518. zigy=koy; 519. sprintf(bufy,"%d",zigy); 520. sprintf(bufx,"%d",zigx); 521. if (strlen(bufx)== 1) 522. { 523. stuanx=*bufx; 524. plhnx=48; 525. rtsnx=48; 526. rbuanx=48; 527. prbuanx=48; 528. } 529. else if (strlen(bufx)== 2) 530. { 531. stuanx=bufx[1]; 532. plhnx=bufx[0]; 533. rtsnx=48; 534. rbuanx=48; 535. prbuanx=48; 536. } 537. else if (strlen(bufx)== 3) 538. { 539. stuanx=bufx[2]; 540. plhnx=bufx[1]; 541. rtsnx=bufx[0]; 542. rbuanx=48; 543. prbuanx=48; 544. }
Code Vision Page -7
545. else if (strlen(bufx)== 4) 546. { 547. stuanx=bufx[3]; 548. plhnx=bufx[2]; 549. rtsnx=bufx[1]; 550. rbuanx=bufx[0]; 551. prbuanx=48; 552. } 553. else if (strlen(bufx)== 5) 554. { 555. stuanx=bufx[4]; 556. plhnx=bufx[3]; 557. rtsnx=bufx[2]; 558. rbuanx=bufx[1]; 559. prbuanx=bufx[0]; 560. } 561. if (strlen(bufy)== 1) 562. { 563. stuany=*bufy; 564. plhny=48; 565. rtsny=48; 566. rbuany=48; 567. prbuany=48; 568. } 569. else if (strlen(bufy)== 2) 570. { 571. stuany=bufy[1]; 572. plhny=bufy[0]; 573. rtsny=48; 574. rbuany=48; 575. prbuany=48; 576. } 577. else if (strlen(bufy)== 3) 578. { 579. stuany=bufy[2]; 580. plhny=bufy[1]; 581. rtsny=bufy[0]; 582. rbuany=48; 583. prbuany=48; 584. } 585. else if (strlen(bufy)== 4) 586. { 587. stuany=bufy[3]; 588. plhny=bufy[2]; 589. rtsny=bufy[1];
590. rbuany=bufy[0]; 591. prbuany=48; 592. } 593. else if (strlen(bufy)== 5) 594. { 595. stuany=bufy[4]; 596. plhny=bufy[3]; 597. rtsny=bufy[2]; 598. rbuany=bufy[1]; 599. prbuany=bufy[0]; 600. } 601. putchar(255); 602. delay_ms(1); 603. putchar(prbuanx); 604. delay_ms(1); 605. putchar(rbuanx); 606. delay_ms(1); 607. putchar(rtsnx); 608. delay_ms(1); 609. putchar(plhnx); 610. delay_ms(1); 611. putchar(stuanx); 612. delay_ms(1); 613. putchar(prbuany); 614. delay_ms(1); 615. putchar(rbuany); 616. delay_ms(1); 617. putchar(rtsny); 618. delay_ms(1); 619. putchar(plhny); 620. delay_ms(1); 621. putchar(stuany); 622. delay_ms(1); 623. putchar(proses); 624. delay_ms(1); 625. } 626. // Timer 0 overflow interrupt service routine 627. interrupt [TIM0_OVF] void timer0_ovf_isr(void) 628. { 629. q++; 630. if (q==1250) q=0; 631. else if (q<data_servo) PORTB.0=1; 632. else PORTB.0=0;
Code Vision Page -8
633. } 634. // Declare your global variables here 635. void main(void) 636. { 637. // Declare your local variables here 638. // Input/Output Ports initialization 639. // Port A initialization 640. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 641. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 642. PORTA=0x00; 643. DDRA=0xff; 644. // Port B initialization 645. // Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In 646. // State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T 647. PORTB=0x00; 648. DDRB=0x01; 649. // Port C initialization 650. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 651. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 652. PORTC=0x00; 653. DDRC=0xff; 654. // Port D initialization 655. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 656. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 657. PORTD=0b00000011; 658. DDRD=0b00000100; 659. // Port E initialization 660. // Func7=In Func6=In Func5=In Func4=Out Func3=Out Func2=In Func1=In Func0=In 661. // State7=T State6=T State5=T State4=0 State3=0 State2=T State1=T State0=T 662. PORTE=0x00; 663. DDRE=0x00; 664. // Port F initialization 665. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 666. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 667. PORTF=0x00; 668. DDRF=0xff; 669. // Port G initialization
670. // Func4=In Func3=In Func2=In Func1=In Func0=In 671. // State4=T State3=T State2=T State1=T State0=T 672. PORTG=0x00; 673. DDRG=0x00; 674. // Timer/Counter 0 initialization 675. // Clock source: System Clock 676. // Clock value: 16000.000 kHz 677. // Mode: Normal top=0xFF 678. // OC0 output: Disconnected 679. ASSR=0x00; 680. TCCR0=0x01; 681. TCNT0=0x00; 682. OCR0=0x00; 683. // Timer/Counter 1 initialization 684. // Clock source: System Clock 685. // Clock value: 16000.000 kHz 686. // Mode: Fast PWM top=0x00FF 687. // OC1A output: Non-Inv. 688. // OC1B output: Non-Inv. 689. // OC1C output: Discon. 690. // Noise Canceler: Off 691. // Input Capture on Falling Edge 692. // Timer1 Overflow Interrupt: Off 693. // Input Capture Interrupt: Off 694. // Compare A Match Interrupt: Off 695. // Compare B Match Interrupt: Off 696. // Compare C Match Interrupt: Off 697. TCCR1A=0x00; 698. TCCR1B=0x00; 699. TCNT1H=0x00; 700. TCNT1L=0x00; 701. ICR1H=0x00; 702. ICR1L=0x00; 703. OCR1AH=0x00; 704. OCR1AL=0x00; 705. OCR1BH=0x00; 706. OCR1BL=0x00; 707. OCR1CH=0x00; 708. OCR1CL=0x00; 709. // Timer/Counter 2 initialization 710. // Clock source: System Clock 711. // Clock value: Timer2 Stopped 712. // Mode: Normal top=0xFF 713. // OC2 output: Disconnected
Code Vision Page -9
714. TCCR2=0x00; 715. TCNT2=0x00; 716. OCR2=0x00; 717. // Timer/Counter 3 initialization 718. // Clock source: System Clock 719. // Clock value: 16000.000 kHz 720. // Mode: Fast PWM top=0x00FF 721. // OC3A output: Non-Inv. 722. // OC3B output: Non-Inv. 723. // OC3C output: Discon. 724. // Noise Canceler: Off 725. // Input Capture on Falling Edge 726. // Timer3 Overflow Interrupt: Off 727. // Input Capture Interrupt: Off 728. // Compare A Match Interrupt: Off 729. // Compare B Match Interrupt: Off 730. // Compare C Match Interrupt: Off 731. TCCR3A=0x00; 732. TCCR3B=0x00; 733. TCNT3H=0x00; 734. TCNT3L=0x00; 735. ICR3H=0x00; 736. ICR3L=0x00; 737. OCR3AH=0x00; 738. OCR3AL=0x00; 739. OCR3BH=0x00; 740. OCR3BL=0x00; 741. OCR3CH=0x00; 742. OCR3CL=0x00; 743. // External Interrupt(s) initialization 744. // INT0: Off 745. // INT1: Off 746. // INT2: Off 747. // INT3: Off 748. // INT4: Off 749. // INT5: Off 750. // INT6: Off 751. // INT7: Off 752. EICRA=0x00; 753. EICRB=0x00; 754. EIMSK=0x00; 755. // Timer(s)/Counter(s) Interrupt(s) initialization 756. TIMSK=0x01;
757. ETIMSK=0x00; 758. // USART0 initialization 759. // Communication Parameters: 8 Data, 1 Stop, No Parity 760. // USART0 Receiver: On 761. // USART0 Transmitter: On 762. // USART0 Mode: Asynchronous 763. // USART0 Baud Rate: 9600 764. UCSR0A=0x00; 765. UCSR0B=0x98; 766. UCSR0C=0x06; 767. UBRR0H=0x00; 768. UBRR0L=0x67; 769. // USART1 initialization 770. // USART1 disabled 771. UCSR1B=0x00; 772. // Analog Comparator initialization 773. // Analog Comparator: Off 774. // Analog Comparator Input Capture by Timer/Counter 1: Off 775. ACSR=0x80; 776. SFIOR=0x00; 777. // ADC initialization 778. // ADC disabled 779. ADCSRA=0x00; 780. // SPI initialization 781. // SPI disabled 782. SPCR=0x00; 783. // TWI initialization 784. // TWI disabled 785. TWCR=0x00; 786. // Alphanumeric LCD initialization 787. // Connections specified in the 788. // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: 789. // RS - PORTA Bit 0 790. // RD - PORTA Bit 1 791. // EN - PORTA Bit 2 792. // D4 - PORTA Bit 4 793. // D5 - PORTA Bit 5 794. // D6 - PORTA Bit 6 795. // D7 - PORTA Bit 7
Code Vision Page -10
796. // Characters/line: 16 797. lcd_init(16); 798. // Global enable interrupts 799. #asm("sei") 800. lcd_gotoxy(0,0); 801. lcd_puts("BISMILLAH"); 802. delay_ms(1000); 803. while (1) 804. { 805. data_servo=120; 806. RESET: 807. slow=0; 808. data_servo=100; 809. lcd_clear(); 810. lcd_gotoxy(0,0); 811. lcd_puts("preparing machine"); 812. while(limitatas==0) 813. { 814. ccwx(240); 815. } 816. motor1=0x00; 817. while(limitbawah==0) 818. { 819. ccwy(40); 820. } 821. while(limitatas==1) 822. { 823. cwx(1); 824. } 825. motor1=0; 826. while(limitbawah==1) 827. { 828. cwy(1); 829. } 830. x=kox=0; 831. y=koy=0; 832. data_servo=0; 833. kiri=1; 834. kanan=0; 835. bawah=1; 836. atas=0; 837. data_servo=0; 838. while(1)
839. { 840. if(terima[1]==55) 841. { 842. lcd_clear(); 843. lcd_gotoxy(0,0); 844. lcd_puts("processing"); 845. lcd_gotoxy(0,1); 846. lcd_puts("coordinat"); 847. while(1) 848. { 849. px=1000*terima[2]; 850. qx=100*terima[3]; 851. rx=10*terima[4]; 852. sx=terima[5]; 853. py=1000*terima[6]; 854. qy=100*terima[7]; 855. ry=10*terima[8]; 856. sy=terima[9]; 857. zigx=px+qx+rx+sx; 858. zigy=py+qy+ry+sy; 859. kox=zigx; 860. koy=zigy; 861. if (s>=10) break; 862. } 863. laser=1; 864. terima[1]=0; 865. data_terima=0; 866. kerja=1; 867. } 868. else if(data_terima==1 && y<900) 869. { 870. lcd_clear(); 871. lcd_gotoxy(0,0); 872. lcd_puts("processing Y"); 873. while(1) 874. { 875. if(bawah==1) 876. { 877. ccwy(1); 878. } 879. ccwy(1); 880. y++; 881. if (data_terima!=1 || y>=900) break; 882. } 883. koy=y; 884. } 885. else if(data_terima==2 && x<16788)
Code Vision Page -11
886. { 887. lcd_clear(); 888. lcd_gotoxy(0,0); 889. lcd_puts("processing X"); 890. motor1=0x00; 891. while(1) 892. { 893. if (kiri==1) 894. { 895. ccwx(85); 896. } 897. ccwx(1); 898. x++; 899. if (data_terima!=2 || x>=16788) break; 900. } 901. kox=x; 902. } 903. else if(data_terima==3 && limitbawah == 1) 904. { 905. lcd_clear(); 906. lcd_gotoxy(0,0); 907. lcd_puts("processing Y"); 908. motor2=0x00; 909. while(1) 910. { 911. if(atas==1) 912. { 913. cwy(1); 914. } 915. cwy(1); 916. if (y>0)y--; 917. if (data_terima!=3 || y==0 || limitbawah== 0) break; 918. } 919. koy=y; 920. } 921. else if (data_terima==4 && limitatas == 1) 922. { 923. motor1=0; 924. lcd_clear(); 925. lcd_gotoxy(0,0); 926. lcd_puts("processing X"); 927. motor1=0x00; 928. while(1) 929. { 930. if (kanan==1) 931. {
932. cwx(85); 933. } 934. cwx(1); 935. if(x>0) x--; 936. if (data_terima!=4 || limitatas==0 || x==0) break; 937. } 938. kox=x; 939. } 940. else if (data_terima==250) 941. { 942. data_terima=0; 943. goto RESET; 944. } 945. else if (data_terima==6) 946. { 947. slow=1; 948. data_servo=82; 949. } 950. else if (data_terima==7) 951. { 952. slow=0; 953. data_servo=130; 954. } 955. else 956. { 957. laser=0; 958. } 959. // if(kox<1)kox=0; 960. // if(koy<1)koy=0; 961. if (kerja==1) 962. { 963. if(kox>x) 964. { 965. step=kox-x; 966. if (kiri==1) 967. { 968. step=step+90; 969. } 970. ccwx(step); 971. x=kox; 972. } 973. else if(kox<x) 974. { 975. step=x-kox; 976. if (kanan==1)
Code Vision Page -12
977. { 978. step=step+90; 979. } 980. cwx(step); 981. x=kox; 982. } 983. else if(kox==x) 984. { 985. motor1=0x00; 986. } 987. if(koy>y) 988. { 989. if(bawah==1) 990. { 991. ccwy(1); 992. } 993. step=koy-y; 994. ccwy(step); 995. y=koy; 996. } 997. else if(koy<y) 998. { 999. if(atas==1) 1000. { 1001. cwy(1); 1002. } 1003. step=y-koy; 1004. cwy(step); 1005. y=koy; 1006. } 1007. kerja=0; 1008. } 1009. motor1=motor2=0x00; 1010. if (laser==1) 1011. { 1012. data_servo=80; 1013. delay_ms(150); 1014. PORTD.2=1; 1015. for (;data_servo>65;data_servo--) 1016. { 1017. if(data_servo==76) 1018. { 1019. delay_ms(500); 1020. } 1021. delay_ms(100); 1022. }
1023. for (;data_servo>50;data_servo--) 1024. { 1025. delay_ms(50); 1026. } 1027. data_servo=120; 1028. delay_ms(500); 1029. PORTD.2=0; 1030. } 1031. data_kirim(254); 1032. lcd_gotoxy(0,0); 1033. lcd_puts("input coordinate"); 1034. lcd_gotoxy(0,1); 1035. sprintf(lcd,"x=%3d y=%3d",x,y); 1036. lcd_puts(lcd); 1037. } 1038. } 1039. }
Visual basic Page -1
1. Dim koordinatx(0 To 100) As Integer, koordinaty(0 To 100) As
Integer, a As Integer, angka As Integer
2. Dim kox As String, koy As String
3. Dim koxx As String, koyy As String
4. Dim px As Integer, qx As Integer, rx As Integer, sx As
Integer, tx As Integer, py As Integer, qy As Integer, ry As
Integer, sy As Integer, ty As Integer, stat As Integer
5. Dim hx As String, ix As String, jx As String, kx As String, lx
As String, hy As String, iy As String, jy As String, ky As
String, ly As String
6. Dim u As String, data(0 To 15) As String
7. Dim g As Integer, t As Integer, sd As Integer, i As Integer
8. Dim Nx As String, Ny As String, kodestat As Byte, led As Byte
9. Dim Bilx As String, Bily As String
10. Private Sub clear1_Click()
11. sumbux.Text = "0"
12. sumbuy.Text = "0"
13. End Sub
14. Private Sub cmndatas_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
15. If (MSComm1.PortOpen = False) Then
16. Beep
17. MsgBox "pilih port"
18. Else
19. MSComm1.Output = Chr(1)
20. End If
21. End Sub
22. Private Sub cmndatas_MouseUp(Button As Integer, Shift As
Integer, X As Single, Y As Single)
23. If (MSComm1.PortOpen = False) Then
24. Beep
25. MsgBox "pilih port"
26. Else
27. MSComm1.Output = Chr(99)
28. End If
29. End Sub
30. Private Sub cmndbawah_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
31. If (MSComm1.PortOpen = False) Then 32. Beep
33. MsgBox "pilih port"
34. Else
35. MSComm1.Output = Chr(3)
36. End If
37. End Sub
38. Private Sub cmndbawah_MouseUp(Button As Integer, Shift As
Integer, X As Single, Y As Single)
39. If (MSComm1.PortOpen = False) Then
40. Beep
41. MsgBox "pilih port"
42. Else
43. MSComm1.Output = Chr(99)
44. End If
45. End Sub
46. Private Sub cmndclear_Click()
47. Listkoordinat.Clear
48. a = 0
49. End Sub
50. Private Sub cmnddelete_Click()
51. If (Listkoordinat.ListCount = 0 Or Listkoordinat.ListIndex = -
1) Then
52. Beep
53. MsgBox "pilih list"
54. Else
55. Listkoordinat.RemoveItem Listkoordinat.ListIndex
56. a = a - 1
57. End If
58. End Sub
59. Private Sub Cmndexit_Click()
60. End
61. End Sub
62. Private Sub cmndkanan_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
63. If (MSComm1.PortOpen = False) Then
64. Beep
65. MsgBox "pilih port"
Visual basic Page -2
66. Else
67. MSComm1.Output = Chr(2)
68. End If
69. End Sub
70. Private Sub cmndkanan_MouseUp(Button As Integer, Shift As
Integer, X As Single, Y As Single)
71. If (MSComm1.PortOpen = False) Then
72. Beep
73. MsgBox "pilih port"
74. Else
75. MSComm1.Output = Chr(99)
76. End If
77. End Sub
78. Private Sub cmndkiri_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
79. If (MSComm1.PortOpen = False) Then
80. Beep
81. MsgBox "pilih port"
82. Else
83. MSComm1.Output = Chr(4)
84. End If
85. End Sub
86. Private Sub cmndkiri_MouseUp(Button As Integer, Shift As
Integer, X As Single, Y As Single)
87. If (MSComm1.PortOpen = False) Then
88. Beep
89. MsgBox "pilih port"
90. Else
91. MSComm1.Output = Chr(99)
92. End If
93. End Sub
94. Private Sub cmndkirim_Click()
95. If (MSComm1.PortOpen = False) Then
96. Beep
97. MsgBox "pilih port"
98. Else
99. For i = 0 To a - 1 100. clear1.Enabled = False
101. cmndatas.Enabled = False
102. cmndkanan.Enabled = False
103. cmndbawah.Enabled = False
104. cmndkiri.Enabled = False
105. cmndclear.Enabled = False
106. cmndkirim.Enabled = False
107. Cmndport.Enabled = False
108. cmndrestart.Enabled = False
109. submit1.Enabled = False
110. submit2.Enabled = False
111. Command1.Enabled = False
112. labeleksekusi.Caption = i
113. stat = 0
114. Bilx = CStr(koordinatx(i))
115. Nx = Len(Bilx)
116. Select Case Nx
117. Case 1
118. px = 0
119. qx = 0
120. rx = 0
121. sx = Val(Bilx)
122. Case 2
123. px = 0
124. qx = 0
125. rx = Val(Mid(Bilx, 1, 1))
126. sx = Val(Mid(Bilx, 2, 1))
127. Case 3
128. px = 0
129. qx = Val(Mid(Bilx, 1, 1))
130. rx = Val(Mid(Bilx, 2, 1))
131. sx = Val(Mid(Bilx, 3, 1))
132. Case 4
133. px = Val(Mid(Bilx, 1, 1))
134. qx = Val(Mid(Bilx, 2, 1))
135. rx = Val(Mid(Bilx, 3, 1))
136. sx = Val(Mid(Bilx, 4, 1))
137. Case 5
138. px = Val(Mid(Bilx, 1, 2))
139. qx = Val(Mid(Bilx, 3, 1))
140. rx = Val(Mid(Bilx, 4, 1))
141. sx = Val(Mid(Bilx, 5, 1))
142. End Select
Visual basic Page -3
143. Bily = CStr(koordinaty(i))
144. Ny = Len(Bily)
145. Select Case Ny
146. Case 1
147. py = 0
148. qy = 0
149. ry = 0
150. sy = Val(Bily)
151. Case 2
152. py = 0
153. qy = 0
154. ry = Val(Mid(Bily, 1, 1))
155. sy = Val(Mid(Bily, 2, 1))
156. Case 3
157. py = 0
158. qy = Val(Mid(Bily, 1, 1))
159. ry = Val(Mid(Bily, 2, 1))
160. sy = Val(Mid(Bily, 3, 1))
161. Case 4
162. py = Val(Mid(Bily, 1, 1))
163. qy = Val(Mid(Bily, 2, 1))
164. ry = Val(Mid(Bily, 3, 1))
165. sy = Val(Mid(Bily, 4, 1))
166. Case 5
167. py = Val(Mid(Bily, 1, 2))
168. qy = Val(Mid(Bily, 3, 1))
169. ry = Val(Mid(Bily, 4, 1))
170. sy = Val(Mid(Bily, 5, 1))
171. End Select
172. stat = 0
173. Do While stat = 0
174. DoEvents
175. Loop
176. MSComm1.Output = Chr(255)
177. MSComm1.Output = Chr(55)
178. MSComm1.Output = Chr(px)
179. MSComm1.Output = Chr(qx)
180. MSComm1.Output = Chr(rx)
181. MSComm1.Output = Chr(sx)
182. MSComm1.Output = Chr(py)
183. MSComm1.Output = Chr(qy)
184. MSComm1.Output = Chr(ry)
185. MSComm1.Output = Chr(sy)
186. stat = 0
187. Next i
188. labeleksekusi.Caption = i 189. clear1.Enabled = True
190. cmndatas.Enabled = True
191. cmndkanan.Enabled = True
192. cmndbawah.Enabled = True
193. cmndkiri.Enabled = True
194. cmndclear.Enabled = True
195. cmndkirim.Enabled = True
196. Cmndport.Enabled = True
197. cmndrestart.Enabled = True
198. submit1.Enabled = True
199. submit2.Enabled = True
200. Command1.Enabled = True
201. End If
202. labeleksekusi.Caption = "0"
203. End Sub
204. Private Sub Cmndport_Click()
205. On Error GoTo AdaError
206. Cmndport.Enabled = False
207. MSComm1.CommPort = Comboport.Text
208. Label6.Caption = MSComm1.CommPort
209. MSComm1.PortOpen = True
210. Exit Sub
211. AdaError:
212. errmsg = "port salah"
213. MsgBox errmsg, vbCritical + vbOKOnly, Me.Caption
214. Cmndport.Enabled = True
215. End Sub
216. Private Sub cmndrestart_Click()
217. MSComm1.Output = Chr(250)
218. End Sub
219. Private Sub Comboport_KeyPress(KeyAscii As Integer)
220. If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or
KeyAscii = vbKeyBack) Then
221. Beep
222. KeyAscii = 0
223. End If
224. End Sub
Visual basic Page -4
225. Private Sub Command1_Click()
226. If (MSComm1.PortOpen = False) Then
227. Beep
228. MsgBox "pilih port"
229. Else
230. If led = 0 Then
231. led = 1
232. MSComm1.Output = Chr(6)
233. Command1.Caption = "drill down"
234. Command1.BackColor = RGB(255, 0, 0)
235. Else
236. led = 0
237. MSComm1.Output = Chr(7)
238. Command1.Caption = "drill off"
239. Command1.BackColor = &H8000000F
240. End If
241. End If
242. End Sub
243. Private Sub Command2_Click()
244. MSComm1.Output = Chr(255)
245. MSComm1.Output = Chr(5)
246. MSComm1.Output = Chr(2)
247. MSComm1.Output = Chr(4)
248. MSComm1.Output = Chr(3)
249. End Sub
250. Private Sub Form_Load()
251. MSComm1.Settings = "9600,N,8,1"
252. 'MSComm1.PortOpen = True
253. End Sub
254. Private Sub MSComm1_OnComm()
255. If MSComm1.InBufferCount > 0 Then
256. u = MSComm1.Input
257. g = Asc(u)
258. If g = 255 Then
259. t = 0
260. End If
261. If g = 254 Then
262. stat = 1
263. End If
264. If g > 47 And g < 58 Then
265. t = t + 1
266. data(t) = u
267. hx = Val(data(1))
268. ix = Val(data(2))
269. jx = Val(data(3))
270. kx = Val(data(4))
271. lx = Val(data(5))
272. hy = Val(data(6))
273. iy = Val(data(7))
274. jy = Val(data(8))
275. ky = Val(data(9))
276. ly = Val(data(10))
277. If (t >= 10) Then
278. kox = Int(hx * 10000 + ix * 1000 + jx * 100 + kx * 10 + lx)
279. koy = Int(hy * 10000 + iy * 1000 + jy * 100 + ky * 10 + ly)
280. koxx = Int(kox / 76.31)
281. koyy = Int(koy / 4.76)
282. t = 0
283. End If
284. End If
285. Labelx.Caption = koxx
286. Labely.Caption = koyy
287. End If
288. End Sub
289. Private Sub submit1_Click()
290. If (sumbux.Text > 220 Or sumbuy.Text > 200) Then
291. Beep
292. MsgBox "nilai melewati limit"
293. Else
294. Listkoordinat.AddItem sumbux.Text & "," & sumbuy.Text
295. koordinatx(a) = sumbux.Text * 76.76666
296. koordinaty(a) = sumbuy.Text * 4.76
297. a = a + 1
298. End If
299. End Sub
300. Private Sub submit2_Click()
301. Listkoordinat.AddItem Labelx.Caption & "," & Labely.Caption
302. koordinatx(a) = kox
303. koordinaty(a) = koy
Visual basic Page -5
304. a = a + 1
305. End Sub
306. Private Sub sumbux_KeyPress(KeyAscii As Integer)
307. If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or
KeyAscii = Asc(".") Or KeyAscii = vbKeyBack) Then
308. Beep
309. KeyAscii = 0
310. End If
311. End Sub
312. Private Sub sumbuy_KeyPress(KeyAscii As Integer)
313. If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or
KeyAscii = Asc(".") Or KeyAscii = vbKeyBack) Then
314. Beep
315. KeyAscii = 0
316. End If
317. End Sub
318. Private Sub Timer1_Timer()
319. If MSComm1.PortOpen = True Then
320. labelstatus.Caption = "Port terhubung"
321. Else
322. labelstatus.Caption = "periksa port"
323. End If
324. labeldata.Caption = a
325. End Sub