Anda di halaman 1dari 80

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 ZALDY YUNUS


D411 10 262 D411 10 264

JURUSAN ELEKTRO FAKULTAS TEKNIK


UNIVERSITAS HASANUDDIN
MAKASSAR
2015
ii
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.

iii
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

iv
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.

v
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

vi
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

vii
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

viii
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

ix
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

x
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

xi
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

xii
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

1
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.

2
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.

3
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.

4
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:

5
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.

6
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.

7
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

8
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

9
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

10
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

11
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)

12
 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.

13
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

Penggerak Sumbu X

User Penggerak Sumbu Y


Mikrokontroler
Interface
Motor Bor

LCD

Catu Daya DC

Gambar 3.1 Blok Diagram Sistem Mesin Pengebor Printed Circuit Board
(PCB)

14
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

B A

Gambar 3.2 Diagram Alir Perancangan Mesin Pengebor PCB

15
B A

Pembuatan Model Elektronik

Pembuatan Software

Tidak
Uji Coba

Sesuai

Selesai

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.

16
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

17
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

18
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

19
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

20
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.

21
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

22
 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

23
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

24
start

Tidak
Power On? Selesai

Ya

Tidak Motor X ke
Posisi koordinat
(0,0)? posisi 0

Ya
Kirim data ke
Aplikasi Tunggu Motor Y ke
Desktop Data posisi 0

Tidak
Ada Data?

Ya Data
Pengiriman
Status Status?

Tidak

Proses Nyala Ya Data nyala


Bor Bor?

Tidak

Proses Data Ya Data titik


Koordinat koordinat?

Tidak

Ya Data Reset?
Tidak

Gambar 3.9Flowchart Sistem

25
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.

26
start

Pilih Port

Koneksi Port

Cara Mengarahkan motor


memasukkan penggerak untuk
data mencari koordinat

Mengetikkan Posisi Menyimpan posisi


Koordinat koordinat

Mengirim
Data

selesai

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

27
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

28
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.

29
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

30
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

31
Tabel 4.1 Hasil Pengujian Driver Motor

Input Output

PIN1 PIN2 PIN3 PIN4 PIN1 PIN2 PIN3 PIN4

1 0 0 0 11.18 V 0V 0V 0V

0 1 0 0 0V 11.1 V 0V 0V

0 0 1 0 0V 0V 11.18 V 0V

0 0 0 1 V 0V 0V 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

32
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

0 1

Putaran Half Step Searah jarum

jam

0 1

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.

33
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.

34
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.

35
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 Koordinat Input Jarak titik pengeboran
Keterangan
Pengeboran (X,Y) dari titik awal

1 0,0 0 Sesuai

2 2.5,0 2.5 Sesuai

3 5,0 5 Sesuai

36
Tabel 4.4
Hasil pengujian horizontal (Lanjutan)
Titik Koordinat Input Jarak titik pengeboran
Keterangan
Pengeboran (X,Y) dari titik awal

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

37
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 Titik Koordinat Jarak titik pengeboran
Keterangan
Pengeboran (X,Y) dari sumbux=0

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

38
Tabel 4.5
Hasil pengujian vertikal (Lanjutan)
Titik Titik Koordinat Jarak titik pengeboran
Keterangan
Pengeboran (X,Y) dari sumbux=0

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

39
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

40
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.

41
(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

42
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

43
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 = X 100%
41

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

44
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

45
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.

46
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.

47
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

48
[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

49
LAMPIRAN
1. #include <mega128.h>
2. #include <delay.h> 36. unsigned int y, koy;
3. #include <stdio.h> 37. unsigned char stuanx,plhnx,rtsnx,rbuanx,prbuanx,dt,sm,bufx[5];
4. #include <string.h> 38. unsigned char data_terima,lcd[16],terima[15],s,data_servo;
5. #include <alcd.h> 39. unsigned int a, step, kox, x,q;
40. unsigned int px,qx,rx,sx,kox,py,qy,ry,sy,koy,zigx,zigy;
6. #define limitatas PIND.0 41. unsigned char ss,stuany,plhny,rtsny,rbuany,prbuany, bufy[5];
7. #define limitbawah PIND.1 42. bit laser=0, kerja=0, slow, kanan, kiri, atas, bawah;
43. // USART0 Receiver interrupt service routine
8. #define motor1 PORTA 44. interrupt [USART0_RXC] void usart0_rx_isr(void)
9. #define motor2 PORTF 45. {
46. data_terima=UDR0;
47. terima[s]=data_terima;
10. #ifndef RXB8 48. if(data_terima==255) s=0;
11. #define RXB8 1 49. s++;
12. #endif 50. }

13. #ifndef TXB8 51. void cwx(unsigned int step) // kiri


14. #define TXB8 0 52. {
15. #endif 53. if(slow==1)
54. {
16. #ifndef UPE 55. delay_ms(5);
17. #define UPE 2 56. }
18. #endif 57. kiri=1;
58. kanan=0;
19. #ifndef DOR 59. a=0;
20. #define DOR 3 60. switch(sm)
21. #endif 61. {
62. case 1:
22. #ifndef FE 63. {
23. #define FE 4 64. motor1=0b1010;
24. #endif 65. goto m1;
66. }
25. #ifndef UDRE 67. break;
26. #define UDRE 5 68. case 2:
27. #endif 69. {
70. motor1=0b0010;
28. #ifndef RXC 71. goto m2;
29. #define RXC 7 72. }
30. #endif 73. break;
74. case 3:
31. #define FRAMING_ERROR (1<<FE) 75. {
32. #define PARITY_ERROR (1<<UPE) 76. motor1=0b0110;
33. #define DATA_OVERRUN (1<<DOR) 77. goto m3;
34. #define DATA_REGISTER_EMPTY (1<<UDRE) 78. }
35. #define RX_COMPLETE (1<<RXC) 79. break;
80. case 4:

Code Vision Page -1


81. { 127. m3:
82. motor1=0b0100; 128. if (step<=a) break;
83. goto m4; 129. delay_ms(1);
84. } 130. a++;
85. break; 131. motor1=0b0100;
86. case 5: 132. sm=4;
87. { 133. m4:
88. motor1=0b0101; 134. if (step<=a) break;
89. goto m5; 135. delay_ms(1);
90. } 136. a++;
91. break; 137. motor1=0b0101;
92. case 6: 138. sm=5;
93. { 139. m5:
94. motor1=0b0001; 140. if (step<=a) break;
95. goto m6; 141. delay_ms(1);
96. } 142. a++;
97. break; 143. motor1=0b0001;
98. case 7: 144. sm=6;
99. { 145. m6:
100. motor1=0b1001; 146. if (step<=a) break;
101. goto m7; 147. delay_ms(1);
102. } 148. a++;
103. break; 149. motor1=0b1001;
104. case 8: 150. sm=7;
105. { 151. m7:
106. motor1=0b1000; 152. if (step<=a) break;
107. goto m8; 153. delay_ms(1);
108. } 154. a++;
109. break; 155. motor1=0b1000;
110. } 156. sm=8;
111. while(1) 157. m8:
112. { 158. if (step<=a) break;
113. motor1=0b1010; 159. delay_ms(1);
114. sm=1; 160. a++;
115. m1: 161. }
116. if (step<=a) break; 162. }
117. delay_ms(1); 163. void ccwx(unsigned int step) // kanan
118. a++; 164. {
119. motor1=0b0010; 165. if(slow==1)
120. sm=2; 166. {
121. m2: 167. delay_ms(5);
122. if (step<=a) break; 168. }
123. delay_ms(1); 169. kanan=1;
124. a++; 170. kiri=0;
125. motor1=0b0110; 171. a=0;
126. sm=3; 172. switch(sm)
173. {

Code Vision Page -2


174. case 1: 220. }
175. { 221. break;
176. motor1=0b0101; 222. }
177. goto mx1; 223. while(1)
178. } 224. {
179. break; 225. motor1=0b0101;
180. case 2: 226. sm=1;
181. { 227. mx1:
182. motor1=0b0100; 228. if (step<=a) break;
183. goto mx2; 229. delay_ms(1);
184. } 230. a++;
185. break; 231. motor1=0b0100;
186. case 3: 232. sm=2;
187. { 233. mx2:
188. motor1=0b0110; 234. if (step<=a) break;
189. goto mx3; 235. delay_ms(1);
190. } 236. a++;
191. break; 237. motor1=0b0110;
192. case 4: 238. sm=3;
193. { 239. mx3:
194. motor1=0b0010; 240. if (step<=a) break;
195. goto mx4; 241. delay_ms(1);
196. } 242. a++;
197. break; 243. motor1=0b0010;
198. case 5: 244. sm=4;
199. { 245. mx4:
200. motor1=0b1010; 246. if (step<=a) break;
201. goto mx5; 247. delay_ms(1);
202. } 248. a++;
203. break; 249. motor1=0b1010;
204. case 6: 250. sm=5;
205. { 251. mx5:
206. motor1=0b1000; 252. if (step<=a) break;
207. goto mx6; 253. delay_ms(1);
208. } 254. a++;
209. break; 255. motor1=0b1000;
210. case 7: 256. sm=6;
211. { 257. mx6:
212. motor1=0b1001; 258. if (step<=a) break;
213. goto mx7; 259. delay_ms(1);
214. } 260. a++;
215. break; 261. motor1=0b1001;
216. case 8: 262. sm=7;
217. { 263. mx7:
218. motor1=0b0001; 264. if (step<=a) break;
219. goto mx8; 265. delay_ms(1);
266. a++;

Code Vision Page -3


267. motor1=0b0001; 313. goto ay5;
268. sm=8; 314. }
269. mx8: 315. break;
270. if (step<=a) break; 316. case 6:
271. delay_ms(1); 317. {
272. a++; 318. motor2=0b0001;
273. } 319. goto ay6;
274. } 320. }
275. void cwy(unsigned int step) // belakang 321. break;
276. { 322. case 7:
277. if(slow==1) 323. {
278. { 324. motor2=0b1001;
279. delay_ms(100); 325. goto ay7;
280. } 326. }
281. bawah=1; 327. break;
282. atas=0; 328. case 8:
283. a=0; 329. {
284. switch(sm) 330. motor2=0b1000;
285. { 331. goto ay8;
286. case 1: 332. }
287. { 333. break;
288. motor2=0b1010; 334. }
289. goto ay1; 335. while(1)
290. } 336. {
291. break; 337. motor2=0b1010;
292. case 2: 338. sm=1;
293. { 339. ss=5;
294. motor2=0b0010; 340. ay1:
295. goto ay2; 341. if (step<=a) break;
296. } 342. delay_ms(2);
297. break; 343. a++;
298. case 3: 344. motor2=0b0010;
299. { 345. sm=2;
300. motor2=0b0110; 346. ss=4;
301. goto ay3; 347. ay2:
302. } 348. if (step<=a) break;
303. break; 349. delay_ms(2);
304. case 4: 350. a++;
305. { 351. motor2=0b0110;
306. motor2=0b0100; 352. sm=3;
307. goto ay4; 353. ss=3;
308. } 354. ay3:
309. break; 355. if (step<=a) break;
310. case 5: 356. delay_ms(2);
311. { 357. a++;
312. motor2=0b0101; 358. motor2=0b0100;
359. sm=4;

Code Vision Page -4


360. ss=2; 406. case 1:
361. ay4: 407. {
362. if (step<=a) break; 408. motor2=0b0101;
363. delay_ms(2); 409. goto a1;
364. a++; 410. }
365. motor2=0b0101; 411. break;
366. sm=5; 412. case 2:
367. ss=1; 413. {
368. ay5: 414. motor2=0b0100;
369. if (step<=a) break; 415. goto a2;
370. delay_ms(2); 416. }
371. a++; 417. break;
372. motor2=0b0001; 418. case 3:
373. sm=6; 419. {
374. ss=8; 420. motor2=0b0110;
375. ay6: 421. goto a3;
376. if (step<=a) break; 422. }
377. delay_ms(2); 423. break;
378. a++; 424. case 4:
379. motor2=0b1001; 425. {
380. sm=7; 426. motor2=0b0010;
381. ss=7; 427. goto a4;
382. ay7: 428. }
383. if (step<=a) break; 429. break;
384. delay_ms(2); 430. case 5:
385. a++; 431. {
386. motor2=0b1000; 432. motor2=0b1010;
387. sm=8; 433. goto a5;
388. ss=6; 434. }
389. ay8: 435. break;
390. if (step<=a) break; 436. case 6:
391. delay_ms(2); 437. {
392. a++; 438. motor2=0b1000;
393. } 439. goto a6;
394. } 440. }
395. void ccwy(unsigned int step) // depan 441. break;
396. { 442. case 7:
397. if(slow==1) 443. {
398. { 444. motor2=0b1001;
399. delay_ms(100); 445. goto a7;
400. } 446. }
401. a=0; 447. break;
402. atas=1; 448. case 8:
403. bawah=0; 449. {
404. switch(ss) 450. motor2=0b0001;
405. { 451. goto a8;
452. }

Code Vision Page -5


453. break; 499. motor2=0b1001;
454. } 500. ss=7;
455. while(1) 501. sm=7;
456. { 502. a7:
457. motor2=0b0101; 503. if (step<=a) break;
458. ss=1; 504. delay_ms(2);
459. sm=5; 505. a++;
460. a1: 506. motor2=0b0001;
461. if (step<=a) break; 507. ss=8;
462. delay_ms(2); 508. sm=6;
463. a++; 509. a8:
464. motor2=0b0100; 510. if (step<=a) break;
465. ss=2; 511. delay_ms(2);
466. sm=4; 512. a++;
467. a2: 513. }
468. if (step<=a) break; 514. }
469. delay_ms(2); 515. void data_kirim(char proses)
470. a++; 516. {
471. motor2=0b0110; 517. zigx=kox;
472. ss=3; 518. zigy=koy;
473. sm=3; 519. sprintf(bufy,"%d",zigy);
474. a3: 520. sprintf(bufx,"%d",zigx);
475. if (step<=a) break;
476. delay_ms(2); 521. if (strlen(bufx)== 1)
477. a++; 522. {
478. motor2=0b0010; 523. stuanx=*bufx;
479. ss=4; 524. plhnx=48;
480. sm=2; 525. rtsnx=48;
481. a4: 526. rbuanx=48;
482. if (step<=a) break; 527. prbuanx=48;
483. delay_ms(2); 528. }
484. a++; 529. else if (strlen(bufx)== 2)
485. motor2=0b1010; 530. {
486. ss=5; 531. stuanx=bufx[1];
487. sm=1; 532. plhnx=bufx[0];
488. a5: 533. rtsnx=48;
489. if (step<=a) break; 534. rbuanx=48;
490. delay_ms(2); 535. prbuanx=48;
491. a++; 536. }
492. motor2=0b1000; 537. else if (strlen(bufx)== 3)
493. ss=6; 538. {
494. sm=8; 539. stuanx=bufx[2];
495. a6: 540. plhnx=bufx[1];
496. if (step<=a) break; 541. rtsnx=bufx[0];
497. delay_ms(2); 542. rbuanx=48;
498. a++; 543. prbuanx=48;
544. }

Code Vision Page -6


545. else if (strlen(bufx)== 4) 590. rbuany=bufy[0];
546. { 591. prbuany=48;
547. stuanx=bufx[3]; 592. }
548. plhnx=bufx[2]; 593. else if (strlen(bufy)== 5)
549. rtsnx=bufx[1]; 594. {
550. rbuanx=bufx[0]; 595. stuany=bufy[4];
551. prbuanx=48; 596. plhny=bufy[3];
552. } 597. rtsny=bufy[2];
553. else if (strlen(bufx)== 5) 598. rbuany=bufy[1];
554. { 599. prbuany=bufy[0];
555. stuanx=bufx[4]; 600. }
556. plhnx=bufx[3];
557. rtsnx=bufx[2]; 601. putchar(255);
558. rbuanx=bufx[1]; 602. delay_ms(1);
559. prbuanx=bufx[0]; 603. putchar(prbuanx);
560. } 604. delay_ms(1);
605. putchar(rbuanx);
561. if (strlen(bufy)== 1) 606. delay_ms(1);
562. { 607. putchar(rtsnx);
563. stuany=*bufy; 608. delay_ms(1);
564. plhny=48; 609. putchar(plhnx);
565. rtsny=48; 610. delay_ms(1);
566. rbuany=48; 611. putchar(stuanx);
567. prbuany=48; 612. delay_ms(1);
568. } 613. putchar(prbuany);
569. else if (strlen(bufy)== 2) 614. delay_ms(1);
570. { 615. putchar(rbuany);
571. stuany=bufy[1]; 616. delay_ms(1);
572. plhny=bufy[0]; 617. putchar(rtsny);
573. rtsny=48; 618. delay_ms(1);
574. rbuany=48; 619. putchar(plhny);
575. prbuany=48; 620. delay_ms(1);
576. } 621. putchar(stuany);
577. else if (strlen(bufy)== 3) 622. delay_ms(1);
578. { 623. putchar(proses);
579. stuany=bufy[2]; 624. delay_ms(1);
580. plhny=bufy[1]; 625. }
581. rtsny=bufy[0];
582. rbuany=48;
583. prbuany=48; 626. // Timer 0 overflow interrupt service routine
584. } 627. interrupt [TIM0_OVF] void timer0_ovf_isr(void)
585. else if (strlen(bufy)== 4) 628. {
586. { 629. q++;
587. stuany=bufy[3]; 630. if (q==1250) q=0;
588. plhny=bufy[2]; 631. else if (q<data_servo) PORTB.0=1;
589. rtsny=bufy[1]; 632. else PORTB.0=0;

Code Vision Page -7


633. } 670. // Func4=In Func3=In Func2=In Func1=In Func0=In
671. // State4=T State3=T State2=T State1=T State0=T
634. // Declare your global variables here 672. PORTG=0x00;
673. DDRG=0x00;
635. void main(void)
636. { 674. // Timer/Counter 0 initialization
637. // Declare your local variables here 675. // Clock source: System Clock
676. // Clock value: 16000.000 kHz
638. // Input/Output Ports initialization 677. // Mode: Normal top=0xFF
639. // Port A initialization 678. // OC0 output: Disconnected
640. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 679. ASSR=0x00;
641. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 680. TCCR0=0x01;
642. PORTA=0x00; 681. TCNT0=0x00;
643. DDRA=0xff; 682. OCR0=0x00;

644. // Port B initialization 683. // Timer/Counter 1 initialization


645. // Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In 684. // Clock source: System Clock
646. // State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T 685. // Clock value: 16000.000 kHz
647. PORTB=0x00; 686. // Mode: Fast PWM top=0x00FF
648. DDRB=0x01; 687. // OC1A output: Non-Inv.
688. // OC1B output: Non-Inv.
649. // Port C initialization 689. // OC1C output: Discon.
650. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 690. // Noise Canceler: Off
651. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 691. // Input Capture on Falling Edge
652. PORTC=0x00; 692. // Timer1 Overflow Interrupt: Off
653. DDRC=0xff; 693. // Input Capture Interrupt: Off
694. // Compare A Match Interrupt: Off
654. // Port D initialization 695. // Compare B Match Interrupt: Off
655. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 696. // Compare C Match Interrupt: Off
656. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 697. TCCR1A=0x00;
657. PORTD=0b00000011; 698. TCCR1B=0x00;
658. DDRD=0b00000100; 699. TCNT1H=0x00;
700. TCNT1L=0x00;
659. // Port E initialization 701. ICR1H=0x00;
660. // Func7=In Func6=In Func5=In Func4=Out Func3=Out Func2=In Func1=In Func0=In 702. ICR1L=0x00;
661. // State7=T State6=T State5=T State4=0 State3=0 State2=T State1=T State0=T 703. OCR1AH=0x00;
662. PORTE=0x00; 704. OCR1AL=0x00;
663. DDRE=0x00; 705. OCR1BH=0x00;
706. OCR1BL=0x00;
664. // Port F initialization 707. OCR1CH=0x00;
665. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 708. OCR1CL=0x00;
666. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
667. PORTF=0x00; 709. // Timer/Counter 2 initialization
668. DDRF=0xff; 710. // Clock source: System Clock
711. // Clock value: Timer2 Stopped
669. // Port G initialization 712. // Mode: Normal top=0xFF
713. // OC2 output: Disconnected

Code Vision Page -8


714. TCCR2=0x00;
715. TCNT2=0x00; 757. ETIMSK=0x00;
716. OCR2=0x00;
758. // USART0 initialization
717. // Timer/Counter 3 initialization 759. // Communication Parameters: 8 Data, 1 Stop, No Parity
718. // Clock source: System Clock 760. // USART0 Receiver: On
719. // Clock value: 16000.000 kHz 761. // USART0 Transmitter: On
720. // Mode: Fast PWM top=0x00FF 762. // USART0 Mode: Asynchronous
721. // OC3A output: Non-Inv. 763. // USART0 Baud Rate: 9600
722. // OC3B output: Non-Inv. 764. UCSR0A=0x00;
723. // OC3C output: Discon. 765. UCSR0B=0x98;
724. // Noise Canceler: Off 766. UCSR0C=0x06;
725. // Input Capture on Falling Edge 767. UBRR0H=0x00;
726. // Timer3 Overflow Interrupt: Off 768. UBRR0L=0x67;
727. // Input Capture Interrupt: Off
728. // Compare A Match Interrupt: Off 769. // USART1 initialization
729. // Compare B Match Interrupt: Off 770. // USART1 disabled
730. // Compare C Match Interrupt: Off 771. UCSR1B=0x00;
731. TCCR3A=0x00;
732. TCCR3B=0x00; 772. // Analog Comparator initialization
733. TCNT3H=0x00; 773. // Analog Comparator: Off
734. TCNT3L=0x00; 774. // Analog Comparator Input Capture by Timer/Counter 1: Off
735. ICR3H=0x00; 775. ACSR=0x80;
736. ICR3L=0x00; 776. SFIOR=0x00;
737. OCR3AH=0x00;
738. OCR3AL=0x00; 777. // ADC initialization
739. OCR3BH=0x00; 778. // ADC disabled
740. OCR3BL=0x00; 779. ADCSRA=0x00;
741. OCR3CH=0x00;
742. OCR3CL=0x00; 780. // SPI initialization
781. // SPI disabled
743. // External Interrupt(s) initialization 782. SPCR=0x00;
744. // INT0: Off
745. // INT1: Off 783. // TWI initialization
746. // INT2: Off 784. // TWI disabled
747. // INT3: Off 785. TWCR=0x00;
748. // INT4: Off
749. // INT5: Off 786. // Alphanumeric LCD initialization
750. // INT6: Off 787. // Connections specified in the
751. // INT7: Off 788. // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
752. EICRA=0x00; 789. // RS - PORTA Bit 0
753. EICRB=0x00; 790. // RD - PORTA Bit 1
754. EIMSK=0x00; 791. // EN - PORTA Bit 2
792. // D4 - PORTA Bit 4
755. // Timer(s)/Counter(s) Interrupt(s) initialization 793. // D5 - PORTA Bit 5
756. TIMSK=0x01; 794. // D6 - PORTA Bit 6
795. // D7 - PORTA Bit 7

Code Vision Page -9


796. // Characters/line: 16 839. {
797. lcd_init(16); 840. if(terima[1]==55)
841. {
798. // Global enable interrupts 842. lcd_clear();
799. #asm("sei") 843. lcd_gotoxy(0,0);
844. lcd_puts("processing");
800. lcd_gotoxy(0,0); 845. lcd_gotoxy(0,1);
801. lcd_puts("BISMILLAH"); 846. lcd_puts("coordinat");
802. delay_ms(1000); 847. while(1)
848. {
803. while (1) 849. px=1000*terima[2];
804. { 850. qx=100*terima[3];
805. data_servo=120; 851. rx=10*terima[4];
806. RESET: 852. sx=terima[5];
807. slow=0; 853. py=1000*terima[6];
808. data_servo=100; 854. qy=100*terima[7];
809. lcd_clear(); 855. ry=10*terima[8];
810. lcd_gotoxy(0,0); 856. sy=terima[9];
811. lcd_puts("preparing machine"); 857. zigx=px+qx+rx+sx;
812. while(limitatas==0) 858. zigy=py+qy+ry+sy;
813. { 859. kox=zigx;
814. ccwx(240); 860. koy=zigy;
815. } 861. if (s>=10) break;
816. motor1=0x00; 862. }
817. while(limitbawah==0) 863. laser=1;
818. { 864. terima[1]=0;
819. ccwy(40); 865. data_terima=0;
820. } 866. kerja=1;
821. while(limitatas==1) 867. }
822. { 868. else if(data_terima==1 && y<900)
823. cwx(1); 869. {
824. } 870. lcd_clear();
825. motor1=0; 871. lcd_gotoxy(0,0);
826. while(limitbawah==1) 872. lcd_puts("processing Y");
827. { 873. while(1)
828. cwy(1); 874. {
829. } 875. if(bawah==1)
830. x=kox=0; 876. {
831. y=koy=0; 877. ccwy(1);
832. data_servo=0; 878. }
833. kiri=1; 879. ccwy(1);
834. kanan=0; 880. y++;
835. bawah=1; 881. if (data_terima!=1 || y>=900) break;
836. atas=0; 882. }
837. data_servo=0; 883. koy=y;
838. while(1) 884. }
885. else if(data_terima==2 && x<16788)

Code Vision Page -10


886. { 932. cwx(85);
887. lcd_clear(); 933. }
888. lcd_gotoxy(0,0); 934. cwx(1);
889. lcd_puts("processing X"); 935. if(x>0) x--;
890. motor1=0x00; 936. if (data_terima!=4 || limitatas==0 || x==0) break;
891. while(1) 937. }
892. { 938. kox=x;
893. if (kiri==1)
894. { 939. }
895. ccwx(85); 940. else if (data_terima==250)
896. } 941. {
897. ccwx(1); 942. data_terima=0;
898. x++; 943. goto RESET;
899. if (data_terima!=2 || x>=16788) break; 944. }
900. } 945. else if (data_terima==6)
901. kox=x; 946. {
902. } 947. slow=1;
903. else if(data_terima==3 && limitbawah == 1) 948. data_servo=82;
904. { 949. }
905. lcd_clear(); 950. else if (data_terima==7)
906. lcd_gotoxy(0,0); 951. {
907. lcd_puts("processing Y"); 952. slow=0;
908. motor2=0x00; 953. data_servo=130;
909. while(1) 954. }
910. { 955. else
911. if(atas==1) 956. {
912. { 957. laser=0;
913. cwy(1); 958. }
914. }
915. cwy(1); 959. // if(kox<1)kox=0;
916. if (y>0)y--; 960. // if(koy<1)koy=0;
917. if (data_terima!=3 || y==0 || limitbawah== 0) break; 961. if (kerja==1)
918. } 962. {
919. koy=y; 963. if(kox>x)
920. } 964. {
921. else if (data_terima==4 && limitatas == 1) 965. step=kox-x;
922. { 966. if (kiri==1)
923. motor1=0; 967. {
924. lcd_clear(); 968. step=step+90;
925. lcd_gotoxy(0,0); 969. }
926. lcd_puts("processing X"); 970. ccwx(step);
927. motor1=0x00; 971. x=kox;
928. while(1) 972. }
929. { 973. else if(kox<x)
930. if (kanan==1) 974. {
931. { 975. step=x-kox;
976. if (kanan==1)

Code Vision Page -11


977. { 1023. for (;data_servo>50;data_servo--)
978. step=step+90; 1024. {
979. } 1025. delay_ms(50);
980. cwx(step); 1026. }
981. x=kox; 1027. data_servo=120;
982. } 1028. delay_ms(500);
983. else if(kox==x) 1029. PORTD.2=0;
984. { 1030. }
985. motor1=0x00; 1031. data_kirim(254);
986. }
987. if(koy>y) 1032. lcd_gotoxy(0,0);
988. { 1033. lcd_puts("input coordinate");
989. if(bawah==1) 1034. lcd_gotoxy(0,1);
990. { 1035. sprintf(lcd,"x=%3d y=%3d",x,y);
991. ccwy(1); 1036. lcd_puts(lcd);
992. } 1037. }
993. step=koy-y; 1038. }
994. ccwy(step); 1039. }
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. }

Code Vision Page -12


1. Dim koordinatx(0 To 100) As Integer, koordinaty(0 To 100) As 31. If (MSComm1.PortOpen = False) Then
Integer, a As Integer, angka As Integer 32. Beep
2. Dim kox As String, koy As String 33. MsgBox "pilih port"
3. Dim koxx As String, koyy As String 34. Else
4. Dim px As Integer, qx As Integer, rx As Integer, sx As 35. MSComm1.Output = Chr(3)
Integer, tx As Integer, py As Integer, qy As Integer, ry As 36. End If
Integer, sy As Integer, ty As Integer, stat As Integer 37. End Sub
5. Dim hx As String, ix As String, jx As String, kx As String, lx 38. Private Sub cmndbawah_MouseUp(Button As Integer, Shift As
As String, hy As String, iy As String, jy As String, ky As Integer, X As Single, Y As Single)
String, ly As String 39. If (MSComm1.PortOpen = False) Then
6. Dim u As String, data(0 To 15) As String 40. Beep
7. Dim g As Integer, t As Integer, sd As Integer, i As Integer 41. MsgBox "pilih port"
8. Dim Nx As String, Ny As String, kodestat As Byte, led As Byte 42. Else
9. Dim Bilx As String, Bily As String 43. MSComm1.Output = Chr(99)
44. End If
45. End Sub

10. Private Sub clear1_Click()


11. sumbux.Text = "0"
12. sumbuy.Text = "0" 46. Private Sub cmndclear_Click()
13. End Sub 47. Listkoordinat.Clear
48. a = 0
49. 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 50. Private Sub cmnddelete_Click()
16. Beep 51. If (Listkoordinat.ListCount = 0 Or Listkoordinat.ListIndex = -
17. MsgBox "pilih port" 1) Then
18. Else 52. Beep
19. MSComm1.Output = Chr(1) 53. MsgBox "pilih list"
20. End If 54. Else
21. End Sub 55. Listkoordinat.RemoveItem Listkoordinat.ListIndex
56. a = a - 1
57. End If
58. 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 59. Private Sub Cmndexit_Click()
25. MsgBox "pilih port" 60. End
26. Else 61. End Sub
27. MSComm1.Output = Chr(99)
28. End If
29. 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
30. Private Sub cmndbawah_MouseDown(Button As Integer, Shift As 64. Beep
Integer, X As Single, Y As Single) 65. MsgBox "pilih port"

Visual basic Page -1


66. Else 99. For i = 0 To a - 1
67. MSComm1.Output = Chr(2) 100. clear1.Enabled = False
68. End If 101. cmndatas.Enabled = False
69. End Sub 102. cmndkanan.Enabled = False
103. cmndbawah.Enabled = False
104. cmndkiri.Enabled = False
105. cmndclear.Enabled = False
70. Private Sub cmndkanan_MouseUp(Button As Integer, Shift As 106. cmndkirim.Enabled = False
Integer, X As Single, Y As Single) 107. Cmndport.Enabled = False
71. If (MSComm1.PortOpen = False) Then 108. cmndrestart.Enabled = False
72. Beep 109. submit1.Enabled = False
73. MsgBox "pilih port" 110. submit2.Enabled = False
74. Else 111. Command1.Enabled = False
75. MSComm1.Output = Chr(99)
76. End If
77. End Sub
112. labeleksekusi.Caption = i
113. stat = 0
114. Bilx = CStr(koordinatx(i))
78. Private Sub cmndkiri_MouseDown(Button As Integer, Shift As 115. Nx = Len(Bilx)
Integer, X As Single, Y As Single) 116. Select Case Nx
79. If (MSComm1.PortOpen = False) Then 117. Case 1
80. Beep 118. px = 0
81. MsgBox "pilih port" 119. qx = 0
82. Else 120. rx = 0
83. MSComm1.Output = Chr(4) 121. sx = Val(Bilx)
84. End If 122. Case 2
85. End Sub 123. px = 0
124. qx = 0
125. rx = Val(Mid(Bilx, 1, 1))
126. sx = Val(Mid(Bilx, 2, 1))
86. Private Sub cmndkiri_MouseUp(Button As Integer, Shift As 127. Case 3
Integer, X As Single, Y As Single) 128. px = 0
87. If (MSComm1.PortOpen = False) Then 129. qx = Val(Mid(Bilx, 1, 1))
88. Beep 130. rx = Val(Mid(Bilx, 2, 1))
89. MsgBox "pilih port" 131. sx = Val(Mid(Bilx, 3, 1))
90. Else 132. Case 4
91. MSComm1.Output = Chr(99) 133. px = Val(Mid(Bilx, 1, 1))
92. End If 134. qx = Val(Mid(Bilx, 2, 1))
93. End Sub 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))
94. Private Sub cmndkirim_Click() 140. rx = Val(Mid(Bilx, 4, 1))
95. If (MSComm1.PortOpen = False) Then 141. sx = Val(Mid(Bilx, 5, 1))
96. Beep 142. End Select
97. MsgBox "pilih port"
98. Else

Visual basic Page -2


143. Bily = CStr(koordinaty(i)) 188. labeleksekusi.Caption = i
144. Ny = Len(Bily) 189. clear1.Enabled = True
145. Select Case Ny 190. cmndatas.Enabled = True
146. Case 1 191. cmndkanan.Enabled = True
147. py = 0 192. cmndbawah.Enabled = True
148. qy = 0 193. cmndkiri.Enabled = True
149. ry = 0 194. cmndclear.Enabled = True
150. sy = Val(Bily) 195. cmndkirim.Enabled = True
151. Case 2 196. Cmndport.Enabled = True
152. py = 0 197. cmndrestart.Enabled = True
153. qy = 0 198. submit1.Enabled = True
154. ry = Val(Mid(Bily, 1, 1)) 199. submit2.Enabled = True
155. sy = Val(Mid(Bily, 2, 1)) 200. Command1.Enabled = True
156. Case 3 201. End If
157. py = 0 202. labeleksekusi.Caption = "0"
158. qy = Val(Mid(Bily, 1, 1)) 203. End Sub
159. ry = Val(Mid(Bily, 2, 1))
160. sy = Val(Mid(Bily, 3, 1))
161. Case 4
162. py = Val(Mid(Bily, 1, 1)) 204. Private Sub Cmndport_Click()
163. qy = Val(Mid(Bily, 2, 1)) 205. On Error GoTo AdaError
164. ry = Val(Mid(Bily, 3, 1)) 206. Cmndport.Enabled = False
165. sy = Val(Mid(Bily, 4, 1)) 207. MSComm1.CommPort = Comboport.Text
166. Case 5 208. Label6.Caption = MSComm1.CommPort
167. py = Val(Mid(Bily, 1, 2)) 209. MSComm1.PortOpen = True
168. qy = Val(Mid(Bily, 3, 1)) 210. Exit Sub
169. ry = Val(Mid(Bily, 4, 1))
170. sy = Val(Mid(Bily, 5, 1))
171. End Select 211. AdaError:
172. stat = 0 212. errmsg = "port salah"
173. Do While stat = 0 213. MsgBox errmsg, vbCritical + vbOKOnly, Me.Caption
174. DoEvents 214. Cmndport.Enabled = True
175. Loop 215. End Sub
176. MSComm1.Output = Chr(255)
177. MSComm1.Output = Chr(55)
178. MSComm1.Output = Chr(px)
179. MSComm1.Output = Chr(qx) 216. Private Sub cmndrestart_Click()
180. MSComm1.Output = Chr(rx) 217. MSComm1.Output = Chr(250)
181. MSComm1.Output = Chr(sx) 218. End Sub
182. MSComm1.Output = Chr(py) 219. Private Sub Comboport_KeyPress(KeyAscii As Integer)
183. MSComm1.Output = Chr(qy) 220. If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or
184. MSComm1.Output = Chr(ry) KeyAscii = vbKeyBack) Then
185. MSComm1.Output = Chr(sy) 221. Beep
186. stat = 0 222. KeyAscii = 0
223. End If
224. End Sub

187. Next i

Visual basic Page -3


225. Private Sub Command1_Click() 263. End If
226. If (MSComm1.PortOpen = False) Then
227. Beep
228. MsgBox "pilih port"
229. Else 264. If g > 47 And g < 58 Then
230. If led = 0 Then 265. t = t + 1
231. led = 1 266. data(t) = u
232. MSComm1.Output = Chr(6) 267. hx = Val(data(1))
233. Command1.Caption = "drill down" 268. ix = Val(data(2))
234. Command1.BackColor = RGB(255, 0, 0) 269. jx = Val(data(3))
235. Else 270. kx = Val(data(4))
236. led = 0 271. lx = Val(data(5))
237. MSComm1.Output = Chr(7) 272. hy = Val(data(6))
238. Command1.Caption = "drill off" 273. iy = Val(data(7))
239. Command1.BackColor = &H8000000F 274. jy = Val(data(8))
240. End If 275. ky = Val(data(9))
241. End If 276. ly = Val(data(10))
242. End Sub 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)
243. Private Sub Command2_Click() 281. koyy = Int(koy / 4.76)
244. MSComm1.Output = Chr(255) 282. t = 0
245. MSComm1.Output = Chr(5) 283. End If
246. MSComm1.Output = Chr(2) 284. End If
247. MSComm1.Output = Chr(4) 285. Labelx.Caption = koxx
248. MSComm1.Output = Chr(3) 286. Labely.Caption = koyy
249. End Sub 287. End If
288. End Sub

250. Private Sub Form_Load()


251. MSComm1.Settings = "9600,N,8,1" 289. Private Sub submit1_Click()
252. 'MSComm1.PortOpen = True 290. If (sumbux.Text > 220 Or sumbuy.Text > 200) Then
253. End Sub 291. Beep
292. MsgBox "nilai melewati limit"
293. Else
294. Listkoordinat.AddItem sumbux.Text & "," & sumbuy.Text
254. Private Sub MSComm1_OnComm() 295. koordinatx(a) = sumbux.Text * 76.76666
255. If MSComm1.InBufferCount > 0 Then 296. koordinaty(a) = sumbuy.Text * 4.76
256. u = MSComm1.Input 297. a = a + 1
257. g = Asc(u) 298. End If
299. End Sub

258. If g = 255 Then


259. t = 0 300. Private Sub submit2_Click()
260. End If 301. Listkoordinat.AddItem Labelx.Caption & "," & Labely.Caption
261. If g = 254 Then 302. koordinatx(a) = kox
262. stat = 1 303. koordinaty(a) = koy

Visual basic Page -4


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

Visual basic Page -5

Anda mungkin juga menyukai