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
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 masingmasing 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
Penggerak Sumbu Y
User 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
Posisi koordinat (0,0)?
Tidak
Motor X ke posisi 0
Ya Kirim data ke Aplikasi Desktop
Tunggu Data
Motor Y ke posisi 0
Tidak Ada Data?
Pengiriman Status
Ya
Data Status? Tidak
Proses Nyala Bor
Ya
Data nyala Bor? Tidak
Proses Data Koordinat
Ya
Data titik 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 memasukkan data
Mengarahkan motor penggerak untuk mencari koordinat
Mengetikkan Posisi Koordinat
Menyimpan posisi 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.
Titik
Tabel 4.4 Hasil pengujian horizontal 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
Titik
Tabel 4.4 Hasil pengujian horizontal (Lanjutan) 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.
Titik
Tabel 4.5 Hasil pengujian vertikal 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
Titik
Tabel 4.5 Hasil pengujian vertikal (Lanjutan) 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 diinput-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 =
𝐸𝑅𝑅𝑂𝑅 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
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. 2. 3. 4. 5.
#include <mega128.h> #include <delay.h> #include <stdio.h> #include <string.h> #include
6. 7.
#define limitatas PIND.0 #define limitbawah PIND.1
8. 9.
#define motor1 PORTA #define motor2 PORTF
10. 11. 12.
#ifndef RXB8 #define RXB8 1 #endif
13. 14. 15.
#ifndef TXB8 #define TXB8 0 #endif
16. 17. 18.
#ifndef UPE #define UPE 2 #endif
19. 20. 21.
#ifndef DOR #define DOR 3 #endif
22. 23. 24.
#ifndef FE #define FE 4 #endif
25. 26. 27.
#ifndef UDRE #define UDRE 5 #endif
28. 29. 30.
#ifndef RXC #define RXC 7 #endif
31. 32. 33. 34. 35.
#define FRAMING_ERROR (1<
36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
unsigned int y, koy; unsigned char stuanx,plhnx,rtsnx,rbuanx,prbuanx,dt,sm,bufx[5]; unsigned char data_terima,lcd[16],terima[15],s,data_servo; unsigned int a, step, kox, x,q; unsigned int px,qx,rx,sx,kox,py,qy,ry,sy,koy,zigx,zigy; unsigned char ss,stuany,plhny,rtsny,rbuany,prbuany, bufy[5]; bit laser=0, kerja=0, slow, kanan, kiri, atas, bawah; // USART0 Receiver interrupt service routine interrupt [USART0_RXC] void usart0_rx_isr(void) { data_terima=UDR0; terima[s]=data_terima; if(data_terima==255) s=0; s++; }
51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80.
void cwx(unsigned int step) // kiri { if(slow==1) { delay_ms(5); } kiri=1; kanan=0; a=0; switch(sm) { case 1: { motor1=0b1010; goto m1; } break; case 2: { motor1=0b0010; goto m2; } break; case 3: { motor1=0b0110; goto m3; } break; case 4:
Code Vision Page -1
81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126.
{ motor1=0b0100; goto m4; } break; case 5: { motor1=0b0101; goto m5; } break; case 6: { motor1=0b0001; goto m6; } break; case 7: { motor1=0b1001; goto m7; } break; case 8: { motor1=0b1000; goto m8; } break; } while(1) { motor1=0b1010; sm=1; m1: if (step<=a) break; delay_ms(1); a++; motor1=0b0010; sm=2; m2: if (step<=a) break; delay_ms(1); a++; motor1=0b0110; sm=3;
127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173.
m3: if (step<=a) break; delay_ms(1); a++; motor1=0b0100; sm=4; m4: if (step<=a) break; delay_ms(1); a++; motor1=0b0101; sm=5; m5: if (step<=a) break; delay_ms(1); a++; motor1=0b0001; sm=6; m6: if (step<=a) break; delay_ms(1); a++; motor1=0b1001; sm=7; m7: if (step<=a) break; delay_ms(1); a++; motor1=0b1000; sm=8; m8: if (step<=a) break; delay_ms(1); a++; } } void ccwx(unsigned int step) // kanan { if(slow==1) { delay_ms(5); } kanan=1; kiri=0; a=0; switch(sm) {
Code Vision Page -2
174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219.
case 1: { motor1=0b0101; goto mx1; } break; case 2: { motor1=0b0100; goto mx2; } break; case 3: { motor1=0b0110; goto mx3; } break; case 4: { motor1=0b0010; goto mx4; } break; case 5: { motor1=0b1010; goto mx5; } break; case 6: { motor1=0b1000; goto mx6; } break; case 7: { motor1=0b1001; goto mx7; } break; case 8: { motor1=0b0001; goto mx8;
220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266.
} break; } while(1) { motor1=0b0101; sm=1; mx1: if (step<=a) break; delay_ms(1); a++; motor1=0b0100; sm=2; mx2: if (step<=a) break; delay_ms(1); a++; motor1=0b0110; sm=3; mx3: if (step<=a) break; delay_ms(1); a++; motor1=0b0010; sm=4; mx4: if (step<=a) break; delay_ms(1); a++; motor1=0b1010; sm=5; mx5: if (step<=a) break; delay_ms(1); a++; motor1=0b1000; sm=6; mx6: if (step<=a) break; delay_ms(1); a++; motor1=0b1001; sm=7; mx7: if (step<=a) break; delay_ms(1); a++;
Code Vision Page -3
267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312.
motor1=0b0001; sm=8; mx8: if (step<=a) break; delay_ms(1); a++; } } void cwy(unsigned int step) // belakang { if(slow==1) { delay_ms(100); } bawah=1; atas=0; a=0; switch(sm) { case 1: { motor2=0b1010; goto ay1; } break; case 2: { motor2=0b0010; goto ay2; } break; case 3: { motor2=0b0110; goto ay3; } break; case 4: { motor2=0b0100; goto ay4; } break; case 5: { motor2=0b0101;
313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359.
goto ay5; } break; case 6: { motor2=0b0001; goto ay6; } break; case 7: { motor2=0b1001; goto ay7; } break; case 8: { motor2=0b1000; goto ay8; } break; } while(1) { motor2=0b1010; sm=1; ss=5; ay1: if (step<=a) break; delay_ms(2); a++; motor2=0b0010; sm=2; ss=4; ay2: if (step<=a) break; delay_ms(2); a++; motor2=0b0110; sm=3; ss=3; ay3: if (step<=a) break; delay_ms(2); a++; motor2=0b0100; sm=4;
Code Vision Page -4
360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405.
ss=2; ay4: if (step<=a) break; delay_ms(2); a++; motor2=0b0101; sm=5; ss=1; ay5: if (step<=a) break; delay_ms(2); a++; motor2=0b0001; sm=6; ss=8; ay6: if (step<=a) break; delay_ms(2); a++; motor2=0b1001; sm=7; ss=7; ay7: if (step<=a) break; delay_ms(2); a++; motor2=0b1000; sm=8; ss=6; ay8: if (step<=a) break; delay_ms(2); a++; } } void ccwy(unsigned int step) // depan { if(slow==1) { delay_ms(100); } a=0; atas=1; bawah=0; switch(ss) {
406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452.
case 1: { motor2=0b0101; goto a1; } break; case 2: { motor2=0b0100; goto a2; } break; case 3: { motor2=0b0110; goto a3; } break; case 4: { motor2=0b0010; goto a4; } break; case 5: { motor2=0b1010; goto a5; } break; case 6: { motor2=0b1000; goto a6; } break; case 7: { motor2=0b1001; goto a7; } break; case 8: { motor2=0b0001; goto a8; }
Code Vision Page -5
453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498.
break; } while(1) { motor2=0b0101; ss=1; sm=5; a1: if (step<=a) break; delay_ms(2); a++; motor2=0b0100; ss=2; sm=4; a2: if (step<=a) break; delay_ms(2); a++; motor2=0b0110; ss=3; sm=3; a3: if (step<=a) break; delay_ms(2); a++; motor2=0b0010; ss=4; sm=2; a4: if (step<=a) break; delay_ms(2); a++; motor2=0b1010; ss=5; sm=1; a5: if (step<=a) break; delay_ms(2); a++; motor2=0b1000; ss=6; sm=8; a6: if (step<=a) break; delay_ms(2); a++;
499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520.
motor2=0b1001; ss=7; sm=7; a7: if (step<=a) break; delay_ms(2); a++; motor2=0b0001; ss=8; sm=6; a8: if (step<=a) break; delay_ms(2); a++; } } void data_kirim(char proses) { zigx=kox; zigy=koy; sprintf(bufy,"%d",zigy); sprintf(bufx,"%d",zigx);
521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544.
if (strlen(bufx)== 1) { stuanx=*bufx; plhnx=48; rtsnx=48; rbuanx=48; prbuanx=48; } else if (strlen(bufx)== 2) { stuanx=bufx[1]; plhnx=bufx[0]; rtsnx=48; rbuanx=48; prbuanx=48; } else if (strlen(bufx)== 3) { stuanx=bufx[2]; plhnx=bufx[1]; rtsnx=bufx[0]; rbuanx=48; prbuanx=48; }
Code Vision Page -6
545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560.
else if (strlen(bufx)== 4) { stuanx=bufx[3]; plhnx=bufx[2]; rtsnx=bufx[1]; rbuanx=bufx[0]; prbuanx=48; } else if (strlen(bufx)== 5) { stuanx=bufx[4]; plhnx=bufx[3]; rtsnx=bufx[2]; rbuanx=bufx[1]; prbuanx=bufx[0]; }
561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589.
if (strlen(bufy)== 1) { stuany=*bufy; plhny=48; rtsny=48; rbuany=48; prbuany=48; } else if (strlen(bufy)== 2) { stuany=bufy[1]; plhny=bufy[0]; rtsny=48; rbuany=48; prbuany=48; } else if (strlen(bufy)== 3) { stuany=bufy[2]; plhny=bufy[1]; rtsny=bufy[0]; rbuany=48; prbuany=48; } else if (strlen(bufy)== 4) { stuany=bufy[3]; plhny=bufy[2]; rtsny=bufy[1];
590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600.
rbuany=bufy[0]; prbuany=48; } else if (strlen(bufy)== 5) { stuany=bufy[4]; plhny=bufy[3]; rtsny=bufy[2]; rbuany=bufy[1]; prbuany=bufy[0]; }
601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625.
putchar(255); delay_ms(1); putchar(prbuanx); delay_ms(1); putchar(rbuanx); delay_ms(1); putchar(rtsnx); delay_ms(1); putchar(plhnx); delay_ms(1); putchar(stuanx); delay_ms(1); putchar(prbuany); delay_ms(1); putchar(rbuany); delay_ms(1); putchar(rtsny); delay_ms(1); putchar(plhny); delay_ms(1); putchar(stuany); delay_ms(1); putchar(proses); delay_ms(1); }
626. 627. 628. 629. 630. 631. 632.
// Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { q++; if (q==1250) q=0; else if (q
Code Vision Page -7
633.
}
634.
// Declare your global variables here
635. 636. 637.
void main(void) { // Declare your local variables here
638. 639. 640. 641. 642. 643.
// Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0xff;
644. 645. 646. 647. 648.
// Port B initialization // Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x01;
649. 650. 651. 652. 653.
// Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0xff;
654. 655. 656. 657. 658.
// Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0b00000011; DDRD=0b00000100;
659. 660. 661. 662. 663.
// Port E initialization // Func7=In Func6=In Func5=In Func4=Out Func3=Out Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=0 State3=0 State2=T State1=T State0=T PORTE=0x00; DDRE=0x00;
664. 665. 666. 667. 668.
// Port F initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTF=0x00; DDRF=0xff;
669.
// Port G initialization
670. 671. 672. 673.
// Func4=In Func3=In Func2=In Func1=In Func0=In // State4=T State3=T State2=T State1=T State0=T PORTG=0x00; DDRG=0x00;
674. 675. 676. 677. 678. 679. 680. 681. 682.
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000.000 kHz // Mode: Normal top=0xFF // OC0 output: Disconnected ASSR=0x00; TCCR0=0x01; TCNT0=0x00; OCR0=0x00;
683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708.
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000.000 kHz // Mode: Fast PWM top=0x00FF // OC1A output: Non-Inv. // OC1B output: Non-Inv. // OC1C output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off // Compare C Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; OCR1CH=0x00; OCR1CL=0x00;
709. 710. 711. 712. 713.
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected
Code Vision Page -8
714. 715. 716.
TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742.
// Timer/Counter 3 initialization // Clock source: System Clock // Clock value: 16000.000 kHz // Mode: Fast PWM top=0x00FF // OC3A output: Non-Inv. // OC3B output: Non-Inv. // OC3C output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer3 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off // Compare C Match Interrupt: Off TCCR3A=0x00; TCCR3B=0x00; TCNT3H=0x00; TCNT3L=0x00; ICR3H=0x00; ICR3L=0x00; OCR3AH=0x00; OCR3AL=0x00; OCR3BH=0x00; OCR3BL=0x00; OCR3CH=0x00; OCR3CL=0x00;
743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754.
// External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off // INT3: Off // INT4: Off // INT5: Off // INT6: Off // INT7: Off EICRA=0x00; EICRB=0x00; EIMSK=0x00;
755. 756.
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01;
757.
ETIMSK=0x00;
758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768.
// USART0 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART0 Receiver: On // USART0 Transmitter: On // USART0 Mode: Asynchronous // USART0 Baud Rate: 9600 UCSR0A=0x00; UCSR0B=0x98; UCSR0C=0x06; UBRR0H=0x00; UBRR0L=0x67;
769. 770. 771.
// USART1 initialization // USART1 disabled UCSR1B=0x00;
772. 773. 774. 775. 776.
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;
777. 778. 779.
// ADC initialization // ADC disabled ADCSRA=0x00;
780. 781. 782.
// SPI initialization // SPI disabled SPCR=0x00;
783. 784. 785.
// TWI initialization // TWI disabled TWCR=0x00;
786. 787. 788. 789. 790. 791. 792. 793. 794. 795.
// Alphanumeric LCD initialization // Connections specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTA Bit 0 // RD - PORTA Bit 1 // EN - PORTA Bit 2 // D4 - PORTA Bit 4 // D5 - PORTA Bit 5 // D6 - PORTA Bit 6 // D7 - PORTA Bit 7
Code Vision Page -9
796. 797.
// Characters/line: 16 lcd_init(16);
798. 799.
// Global enable interrupts #asm("sei")
800. 801. 802.
lcd_gotoxy(0,0); lcd_puts("BISMILLAH"); delay_ms(1000);
803. 804. 805. 806. 807. 808. 809. 810. 811. 812. 813. 814. 815. 816. 817. 818. 819. 820. 821. 822. 823. 824. 825. 826. 827. 828. 829. 830. 831. 832. 833. 834. 835. 836. 837. 838.
while (1) { data_servo=120; RESET: slow=0; data_servo=100; lcd_clear(); lcd_gotoxy(0,0); lcd_puts("preparing machine"); while(limitatas==0) { ccwx(240); } motor1=0x00; while(limitbawah==0) { ccwy(40); } while(limitatas==1) { cwx(1); } motor1=0; while(limitbawah==1) { cwy(1); } x=kox=0; y=koy=0; data_servo=0; kiri=1; kanan=0; bawah=1; atas=0; data_servo=0; while(1)
839. 840. 841. 842. 843. 844. 845. 846. 847. 848. 849. 850. 851. 852. 853. 854. 855. 856. 857. 858. 859. 860. 861. 862. 863. 864. 865. 866. 867. 868. 869. 870. 871. 872. 873. 874. 875. 876. 877. 878. 879. 880. 881. 882. 883. 884. 885.
{ if(terima[1]==55) { lcd_clear(); lcd_gotoxy(0,0); lcd_puts("processing"); lcd_gotoxy(0,1); lcd_puts("coordinat"); while(1) { px=1000*terima[2]; qx=100*terima[3]; rx=10*terima[4]; sx=terima[5]; py=1000*terima[6]; qy=100*terima[7]; ry=10*terima[8]; sy=terima[9]; zigx=px+qx+rx+sx; zigy=py+qy+ry+sy; kox=zigx; koy=zigy; if (s>=10) break; } laser=1; terima[1]=0; data_terima=0; kerja=1; } else if(data_terima==1 && y<900) { lcd_clear(); lcd_gotoxy(0,0); lcd_puts("processing Y"); while(1) { if(bawah==1) { ccwy(1); } ccwy(1); y++; if (data_terima!=1 || y>=900) break; } koy=y; } else if(data_terima==2 && x<16788)
Code Vision Page -10
886. 887. 888. 889. 890. 891. 892. 893. 894. 895. 896. 897. 898. 899. 900. 901. 902. 903. 904. 905. 906. 907. 908. 909. 910. 911. 912. 913. 914. 915. 916. 917. 918. 919. 920. 921. 922. 923. 924. 925. 926. 927. 928. 929. 930. 931.
{ lcd_clear(); lcd_gotoxy(0,0); lcd_puts("processing X"); motor1=0x00; while(1) { if (kiri==1) { ccwx(85); } ccwx(1); x++; if (data_terima!=2 || x>=16788) break; } kox=x; } else if(data_terima==3 && limitbawah == 1) { lcd_clear(); lcd_gotoxy(0,0); lcd_puts("processing Y"); motor2=0x00; while(1) { if(atas==1) { cwy(1); } cwy(1); if (y>0)y--; if (data_terima!=3 || y==0 || limitbawah== 0) break; } koy=y; } else if (data_terima==4 && limitatas == 1) { motor1=0; lcd_clear(); lcd_gotoxy(0,0); lcd_puts("processing X"); motor1=0x00; while(1) { if (kanan==1) {
932. 933. 934. 935. 936. 937. 938.
cwx(85); } cwx(1); if(x>0) x--; if (data_terima!=4 || limitatas==0 || x==0) break; } kox=x;
939. 940. 941. 942. 943. 944. 945. 946. 947. 948. 949. 950. 951. 952. 953. 954. 955. 956. 957. 958.
} else if (data_terima==250) { data_terima=0; goto RESET; } else if (data_terima==6) { slow=1; data_servo=82; } else if (data_terima==7) { slow=0; data_servo=130; } else { laser=0; }
959. 960. 961. 962. 963. 964. 965. 966. 967. 968. 969. 970. 971. 972. 973. 974. 975. 976.
// if(kox<1)kox=0; // if(koy<1)koy=0; if (kerja==1) { if(kox>x) { step=kox-x; if (kiri==1) { step=step+90; } ccwx(step); x=kox; } else if(kox<x) { step=x-kox; if (kanan==1)
Code Vision Page -11
977. 978. 979. 980. 981. 982. 983. 984. 985. 986. 987. 988. 989. 990. 991. 992. 993. 994. 995. 996. 997. 998. 999. 1000. 1001. 1002. 1003. 1004. 1005. 1006. 1007. 1008. 1009. 1010. 1011. 1012. 1013. 1014. 1015. 1016. 1017. 1018. 1019. 1020. 1021. 1022.
{ step=step+90; } cwx(step); x=kox; } else if(kox==x) { motor1=0x00; } if(koy>y) { if(bawah==1) { ccwy(1); } step=koy-y; ccwy(step); y=koy; } else if(koy65;data_servo--) { if(data_servo==76) { delay_ms(500); } delay_ms(100); }
1023. 1024. 1025. 1026. 1027. 1028. 1029. 1030. 1031.
for (;data_servo>50;data_servo--) { delay_ms(50); } data_servo=120; delay_ms(500); PORTD.2=0; } data_kirim(254);
1032. 1033. 1034. 1035. 1036. 1037. 1038. 1039.
lcd_gotoxy(0,0); lcd_puts("input coordinate"); lcd_gotoxy(0,1); sprintf(lcd,"x=%3d y=%3d",x,y); lcd_puts(lcd); } } }
Code Vision Page -12
1.
6. 7. 8. 9.
Dim koordinatx(0 To 100) As Integer, koordinaty(0 To 100) As Integer, a As Integer, angka As Integer Dim kox As String, koy As String Dim koxx As String, koyy As String 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 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 Dim u As String, data(0 To 15) As String Dim g As Integer, t As Integer, sd As Integer, i As Integer Dim Nx As String, Ny As String, kodestat As Byte, led As Byte Dim Bilx As String, Bily As String
10. 11. 12. 13.
Private Sub clear1_Click() sumbux.Text = "0" sumbuy.Text = "0" End Sub
14.
Private Sub cmndatas_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port" Else MSComm1.Output = Chr(1) End If End Sub
2. 3. 4. 5.
15. 16. 17. 18. 19. 20. 21.
22. 23. 24. 25. 26. 27. 28. 29.
30.
Private Sub cmndatas_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port" Else MSComm1.Output = Chr(99) End If End Sub
Private Sub cmndbawah_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port" Else MSComm1.Output = Chr(3) End If End Sub Private Sub cmndbawah_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port" Else MSComm1.Output = Chr(99) End If End Sub
46. 47. 48. 49.
Private Sub cmndclear_Click() Listkoordinat.Clear a = 0 End Sub
50. 51. 52. 53. 54. 55. 56. 57. 58.
Private Sub cmnddelete_Click() If (Listkoordinat.ListCount = 0 Or Listkoordinat.ListIndex = 1) Then Beep MsgBox "pilih list" Else Listkoordinat.RemoveItem Listkoordinat.ListIndex a = a - 1 End If End Sub
59. 60. 61.
Private Sub Cmndexit_Click() End End Sub
62.
Private Sub cmndkanan_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port"
63. 64. 65.
Visual basic Page -1
66. 67. 68. 69.
Else MSComm1.Output = Chr(2) End If End Sub
70.
Private Sub cmndkanan_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port" Else MSComm1.Output = Chr(99) End If End Sub
71. 72. 73. 74. 75. 76. 77.
78. 79. 80. 81. 82. 83. 84. 85.
86.
Private Sub cmndkiri_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port" Else MSComm1.Output = Chr(4) End If End Sub
87. 88. 89. 90. 91. 92. 93.
Private Sub cmndkiri_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port" Else MSComm1.Output = Chr(99) End If End Sub
94. 95. 96. 97. 98.
Private Sub cmndkirim_Click() If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port" Else
99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111.
For i = 0 To a - 1 clear1.Enabled = False cmndatas.Enabled = False cmndkanan.Enabled = False cmndbawah.Enabled = False cmndkiri.Enabled = False cmndclear.Enabled = False cmndkirim.Enabled = False Cmndport.Enabled = False cmndrestart.Enabled = False submit1.Enabled = False submit2.Enabled = False Command1.Enabled = False
112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142.
labeleksekusi.Caption = i stat = 0 Bilx = CStr(koordinatx(i)) Nx = Len(Bilx) Select Case Nx Case 1 px = 0 qx = 0 rx = 0 sx = Val(Bilx) Case 2 px = 0 qx = 0 rx = Val(Mid(Bilx, 1, 1)) sx = Val(Mid(Bilx, 2, 1)) Case 3 px = 0 qx = Val(Mid(Bilx, 1, 1)) rx = Val(Mid(Bilx, 2, 1)) sx = Val(Mid(Bilx, 3, 1)) Case 4 px = Val(Mid(Bilx, 1, 1)) qx = Val(Mid(Bilx, 2, 1)) rx = Val(Mid(Bilx, 3, 1)) sx = Val(Mid(Bilx, 4, 1)) Case 5 px = Val(Mid(Bilx, 1, 2)) qx = Val(Mid(Bilx, 3, 1)) rx = Val(Mid(Bilx, 4, 1)) sx = Val(Mid(Bilx, 5, 1)) End Select
Visual basic Page -2
143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186.
Bily = CStr(koordinaty(i)) Ny = Len(Bily) Select Case Ny Case 1 py = 0 qy = 0 ry = 0 sy = Val(Bily) Case 2 py = 0 qy = 0 ry = Val(Mid(Bily, 1, 1)) sy = Val(Mid(Bily, 2, 1)) Case 3 py = 0 qy = Val(Mid(Bily, 1, 1)) ry = Val(Mid(Bily, 2, 1)) sy = Val(Mid(Bily, 3, 1)) Case 4 py = Val(Mid(Bily, 1, 1)) qy = Val(Mid(Bily, 2, 1)) ry = Val(Mid(Bily, 3, 1)) sy = Val(Mid(Bily, 4, 1)) Case 5 py = Val(Mid(Bily, 1, 2)) qy = Val(Mid(Bily, 3, 1)) ry = Val(Mid(Bily, 4, 1)) sy = Val(Mid(Bily, 5, 1)) End Select stat = 0 Do While stat = 0 DoEvents Loop MSComm1.Output = Chr(255) MSComm1.Output = Chr(55) MSComm1.Output = Chr(px) MSComm1.Output = Chr(qx) MSComm1.Output = Chr(rx) MSComm1.Output = Chr(sx) MSComm1.Output = Chr(py) MSComm1.Output = Chr(qy) MSComm1.Output = Chr(ry) MSComm1.Output = Chr(sy) stat = 0
187.
Next i
188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203.
labeleksekusi.Caption = i clear1.Enabled = True cmndatas.Enabled = True cmndkanan.Enabled = True cmndbawah.Enabled = True cmndkiri.Enabled = True cmndclear.Enabled = True cmndkirim.Enabled = True Cmndport.Enabled = True cmndrestart.Enabled = True submit1.Enabled = True submit2.Enabled = True Command1.Enabled = True End If labeleksekusi.Caption = "0" End Sub
204. 205. 206. 207. 208. 209. 210.
Private Sub Cmndport_Click() On Error GoTo AdaError Cmndport.Enabled = False MSComm1.CommPort = Comboport.Text Label6.Caption = MSComm1.CommPort MSComm1.PortOpen = True Exit Sub
211. 212. 213. 214. 215.
AdaError: errmsg = "port salah" MsgBox errmsg, vbCritical + vbOKOnly, Me.Caption Cmndport.Enabled = True End Sub
216. 217. 218. 219. 220.
Private Sub cmndrestart_Click() MSComm1.Output = Chr(250) End Sub Private Sub Comboport_KeyPress(KeyAscii As Integer) If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then Beep KeyAscii = 0 End If End Sub
221. 222. 223. 224.
Visual basic Page -3
225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242.
Private Sub Command1_Click() If (MSComm1.PortOpen = False) Then Beep MsgBox "pilih port" Else If led = 0 Then led = 1 MSComm1.Output = Chr(6) Command1.Caption = "drill down" Command1.BackColor = RGB(255, 0, 0) Else led = 0 MSComm1.Output = Chr(7) Command1.Caption = "drill off" Command1.BackColor = &H8000000F End If End If End Sub
243. 244. 245. 246. 247. 248. 249.
Private Sub Command2_Click() MSComm1.Output = Chr(255) MSComm1.Output = Chr(5) MSComm1.Output = Chr(2) MSComm1.Output = Chr(4) MSComm1.Output = Chr(3) End Sub
250. 251. 252. 253.
Private Sub Form_Load() MSComm1.Settings = "9600,N,8,1" 'MSComm1.PortOpen = True End Sub
254. 255. 256. 257.
Private Sub MSComm1_OnComm() If MSComm1.InBufferCount > 0 Then u = MSComm1.Input g = Asc(u)
258. 259. 260. 261. 262.
If g = 255 Then t = 0 End If If g = 254 Then stat = 1
263.
End If
264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288.
If g > 47 And g < 58 Then t = t + 1 data(t) = u hx = Val(data(1)) ix = Val(data(2)) jx = Val(data(3)) kx = Val(data(4)) lx = Val(data(5)) hy = Val(data(6)) iy = Val(data(7)) jy = Val(data(8)) ky = Val(data(9)) ly = Val(data(10)) If (t >= 10) Then kox = Int(hx * 10000 + ix * 1000 + jx * 100 + kx * 10 + lx) koy = Int(hy * 10000 + iy * 1000 + jy * 100 + ky * 10 + ly) koxx = Int(kox / 76.31) koyy = Int(koy / 4.76) t = 0 End If End If Labelx.Caption = koxx Labely.Caption = koyy End If End Sub
289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299.
Private Sub submit1_Click() If (sumbux.Text > 220 Or sumbuy.Text > 200) Then Beep MsgBox "nilai melewati limit" Else Listkoordinat.AddItem sumbux.Text & "," & sumbuy.Text koordinatx(a) = sumbux.Text * 76.76666 koordinaty(a) = sumbuy.Text * 4.76 a = a + 1 End If End Sub
300. 301. 302. 303.
Private Sub submit2_Click() Listkoordinat.AddItem Labelx.Caption & "," & Labely.Caption koordinatx(a) = kox koordinaty(a) = koy
Visual basic Page -4
304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325.
a = a + 1 End Sub Private Sub sumbux_KeyPress(KeyAscii As Integer) If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = Asc(".") Or KeyAscii = vbKeyBack) Then Beep KeyAscii = 0 End If End Sub Private Sub sumbuy_KeyPress(KeyAscii As Integer) If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = Asc(".") Or KeyAscii = vbKeyBack) Then Beep KeyAscii = 0 End If End Sub Private Sub Timer1_Timer() If MSComm1.PortOpen = True Then labelstatus.Caption = "Port terhubung" Else labelstatus.Caption = "periksa port" End If labeldata.Caption = a End Sub
Visual basic Page -5