mesin pengebor printed circuit board (pcb)...

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 D411 10 262 ZALDY YUNUS D411 10 264 JURUSAN ELEKTRO FAKULTAS TEKNIK UNIVERSITAS HASANUDDIN MAKASSAR 2015

Upload: lamlien

Post on 13-Feb-2018

221 views

Category:

Documents


2 download

TRANSCRIPT

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

ii

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

LAMPIRAN

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