Rancangan Perangkat Lunak G Code Interpreter untuk Pengendalian CNC 3 Aksis Berbasis Mikrokontroler FREDY ANDRIAN ALFATAH EKSTENSI TEKNIK ELEKTRO UNIVERSITAS INDONESIA E-mail : [email protected] Skripsi ini membahas tentang perancangan dan pembuatan G Code interpreter menggunakan Microsoft Visual Studio 2010. Perangkat lunak tersebut diimplementasikan pada mesin kartesian CNC 3 aksis dengan perantara rangkaian mikrokontroler yang berfungsi sebagai indexer atau motion card. Mesin CNC 3 aksis yang digunakan berfungsi untuk membuktikan bahwa software dapat menerjemahkan G Code menjadi gerak interpolasi linier dan gerak interpolasi melingkar. Software yang dirancang mampu membuat mesin bekerja dengan kecepatan mencapai 1000 mm/men, ketelitian 1 mm, serta melakukan interpolasi pada bidang XY. Kata Kunci : Perangkat lunak, G Code Interpreter, interpolasi linier, interpolasi melingkar, CNC. I. PENDAHULUAN Di industri manufaktur, CNC Mill bisa memiliki fungsi sebagai mesin produksi utama, yaitu sebagai mesin untuk proses di jalur produksi, serta bisa juga sebagai mesin pendukung, yaitu mesin pembuat mekanisme pendukung yang biasanya dilakukan di bengkel pabrik. Pada industri otomotif, mesin CNC Mill bisa digunakan sebagai mesin milling blok mesin otomotif itu sendiri, serta juga digunakan untuk proses milling komponen jig yang digunakan pada proses di jalur produksi dan perakitan. Keberadaan mesin CNC Mill di industri tentu akan diiringi dengan kebutuhan tenaga kerja yang memiliki ketrampilan yang cukup memadai untuk mengoperasikan serta merawat mesin tersebut. Oleh sebab itu, penting bagi pelajar di bidang teknik untuk memahami cara kerja mesin CNC Mill. Harga mesin CNC Mill relatif mahal. Sebagai alternatif bisa dikembangkan mesin sederhana yang mampu melakukan gerak tiga aksis dengan harga yang relatif lebih murah untuk institusi pendidikan. Dalam skripsi ini akan dirancang dan dibuat perangkat lunak G Code interpreter. Perangkat lunak diaplikasikan untuk menggerakkan mesin CNC 3 aksis. Fungsi mesin CNC 3 aksis adalah untuk membuktikan bahwa perangkat lunak dapat menerjemahkan G Code menjadi gerak interpolasi linier dan gerak interpolasi melingkar. Perangkat lunak yang dirancang ada dua macam, program Human Machine Interface (HMI) dan perangkat lunak mikrokontroler sebagai indexer. HMI diprogram dengan Microsoft Visual Studio 2010 dengan bahasa basic. HMI ditanam dalam personal computer (PC) yang dilengkapi port serial RS232. Dengan menggunakan komunikasi serial RS232, HMI di PC mengirim data ke indexer yang kemudian oleh indexer dikonversikan menjadi gerak mekanik mesin CNC 3 aksis. Tujuan akhir pembahasan adalah: a. Membuat perangkat lunak HMI G Code interpreter dengan Microsoft Visual Studio 2010 untuk menghasilkan data yang dibutuhkan indexer dalam menggerakkan mesin CNC 3 aksis. b. Membuat perangkat lunak mikrokontroler pengendali stepper motor driver sehingga dapat menghasilkan pulsa yang dibutuhkan untuk menggerakkan mesin CNC 3 aksis sesuai dengan data program G Code yang dikirim HMI dari PC. Dalam skripsi ini, pembahasan dibatasi pada G Code yang digunakan, bidang interpolasi, serta pengkhususan pembahasan pada perangkat lunak G Code interpreter tersebut. Perangkat lunak yang dibuat dibatasi untuk menterjemahkan kode G00, G01, G02, G03, G53, G54, G55, G56, G57, G58, G59, G90 dan G91. Gerak interpolasi yang dilakukan adalah gerak interpolasi pada bidang XY. Mesin CNC 3 aksis yang dipergunakan hanya berfungsi untuk menguji dan membuktikan bahwa perangkat lunak mampu menerjemahkan kode G Code menjadi gerak mesin, yaitu gerak interpolasi linier dan gerak interpolasi melingkar. Mesin CNC menggunakan tiga buah stepper motor bersama dengan stepper motor driver sebagai aktuator penggerak sumbu. Sistem kendali yang digunakan adalah sistem open loop, demikian pula untuk komunikasi serial yang digunakan antara PC dengan mikrokontroler. Kondisi komunikasi serial PC dengan mikrokontroler diasumsikan ideal tanpa kesalahan. II. LANDASAN TEORI 2.1 G Code Mesin CNC selalu dilengkapi dengan kontrol pengendali dimana pengguna dapat mengetikkan kode G Code. Pada layar tersebut juga terdapat fungsi - fungsi set up awal mesin dan operasi manual. Set awal mesin disebut proses zero return, yaitu pencarian posisi nol absolut mesin. Proses zero return bertujuan untuk mensinkronkan posisi aktual mesin dengan layar pengendali. Setelah dilakukan proses zero return, pengguna dapat melakukan membuat program pada menu Edit. Rancangan perangkat..., Fredy Andrian Alfatah, FT UI, 2013 Tabel 1. Perintah G Code Dasar Kode G00 G01 G02 G03 G53 G54 G90 G91 Fungsi Pergerakan aksis dengan kecepatan penuh Pergerakan aksis dengan kecepatan proses pemakanan Perpindahan aksis berputar searah jarum dengan jari jari tertentu pada kecepatan proses pemakanan Perpindahan aksis berputar berlawanan arah jarum dengan jari jari tertentu pada kecepatan proses pemakanan Sistem Koordinat Mesin Sistem Koordinat Kerja (Working Coordinat System) Pergerakan absolute Pergerakan increamental Tabel 1 memperlihatkan daftar perintah G Code yang digunakan untuk mengoperasikan mesin CNC 3 aksis. Penjelasan dari perintah tersebut adalah sebagai berikut: 1. G00 dan G01 Fungsi kedua kode ini adalah untuk memerintahkan pergerakan interpolasi ketiga aksis kartesian mesin. Pergerakan dilakukan menurut kecepatan tertentu yang sudah dispesifikasikan oleh pembuat mesin, dan dipilih dengan memasukkan kode kecepatan. Berikut format perintah yang digunakan : G01 X000.0 Y000.0 Z000.0 F000 Huruf X, Y, dan Z disertai angka adalah titik koordinat yang hendak dituju dari pergerakan tersebut. Kecepatan pergerakan diperoleh dari angka yang mengikuti huruf F. 2. G90 dan G91 Kedua kode ini berfungsi untuk menentukan apakah pergerakan tool mengacu pada titik nol mula – mula (Working Coordinate System), atau mengacu pada titik saat ini tool berada. Kedua kode ini dicantumkan di awal kode pergerakan G00, G01, G02 dan G03. Jika menggunakan G90, maka titik koordinat yang dituju adalah absolut atau mengacu pada nol sistem koordinat kerja. 3. G02 dan G03 Selain gerak linier, mesin CNC juga dituntut mampu melakukan gerak rotasi. Untuk melakukan gerak rotasi searah jarum jam atau clock wise (CW) digunakan perintah G02. Untuk melakukan gerak rotasi berlawanan arah jarum jam atau counter clock wise (CCW) digunakan perintah G03. Penulisan perintah ini adalah sebagai berikut : G90 G02 X 5.0 Y 3.0 I 5.0 J 3.0 F 500 G91 G03 X 5.0 Y 3.0 I 5.0 J 3.0 F 500 G90 dan G91 adalah penanda dari jenis atau tipe koordinat yang digunakan seperti penjelasan sebelumnya. Huruf X dan Y diikuti angka menunjukkan titik koordinat yang ingin dituju. Huruf I dan J menunjukkan letak titik pusat lingkaran relatif terhadap titik tool saat ini. 4. Working Coordinate System Sistem koordinat mesin memiliki titik nol absolut yang tetap karena menggunakan hardware untuk penanda posisi nol. Terkadang dalam suatu proses pengerjaan, terdapat situasi khusus seperti dicontohkan gambar 1, dimana terdapat empat benda kerja dalam satu meja mesin. I II X,Y (4,4) X,Y (12,4) III Machine Home IV X,Y (4,1) X,Y (12,1) Gambar 1. WCS Anggaplah keempat benda kerja tersebut akan mengalami proses yang sama. Pembuat program tidak perlu membuat program yang berbeda untuk tiap benda kerja. Program cukup dibuat satu, namun dipanggil dengan sistem koordinat kerja yang berbeda. Misal pada gambar 1 titik koordinat benda I disimpan dalam G54, titik koordinat benda II disimpan di G55 dan seterusnya sampai titik koordinat benda IV di G57. Titik tersebut kemudian disebut titik koordinat kerja atau Working Coordinate System. Dengan memasukkan kode tersebut sebelum memanggil perintah gerak maka titik koordinat yang digunakan adalah titik koordinat memori Working Coordinate System yang terakhir dipanggil. 2.2 Mesin CNC Secara umum CNC bisa digambarkan menjadi tiga bagian penting, yaitu : HMI, Control Unit dan Mechanical Unit. Human Machine Interface atau HMI bersama dengan Electrical Control Unit bisa dianggap sebagai satu kesatuan kita sebut saja Unit Kendali CNC. Unit Kendali CNC memiliki Central Processing Unit atau CPU yang berfungsi mengendalikan semua fungsi fungsi CNC. Manusia atau operator memberikan masukan melalui HMI yang diteruskan ke CPU dan disimpan ke dalam unit memori untuk diolah. Ketika operator memberikan perintah kepada mesin untuk mulai bekerja, maka semua data dalam memori yang diberikan sebelumnya dibaca kembali dan diolah menjadi gerakan. CPU menggerakkan aksis mesin melalui perantara motion card. Motion Card bertugas merubah input data aksis dan kecepatan menjadi sinyal perintah yang diteruskan ke unit motor driver. HUMAN MACHINE INTERFACE CPU I / O RS232 MOTION CARD / INDEXER MOTOR DRIVE MECHANICAL SYSTEM MANUSIA / OPERATOR ELECTRICAL CONTROL UNIT Gambar 2. Bagan Mesin CNC Rancangan perangkat..., Fredy Andrian Alfatah, FT UI, 2013 Sistem closed loop pada gerakan aksis atau biasa disebut servosystem berada pada unit driver dengan motor yang digunakan. Jika motor tidak dilengkapi encoder maka sistem merupakan open loop. Sistem seperti ini biasanya menggunakan stepper motor. Selain sebagai pengendali driver, motion card juga bertugas mengendalikan spindle motor driver. Berbeda dengan aksis yang memerlukan kendali posisi dan kecepatan, spindle hanya membutuhkan kendali kecepatan. Untuk membatasi gerak motor aksis, unit mekanis dilengkapi limit switch yang dibaca oleh unit I/O. Jika gerakan aksis melewati batas maka I/O unit menerima sinyal limit switch, diteruskan ke CPU dan CPU mengirim sinyal stop ke motor driver. Selain itu, unit I/O juga berfungsi untuk menyalakan coolant pump, lampu dan fungsi lain jika ada. III. PERANCANGAN DAN PEMBUATAN Sumbu Z Sumbu Y 2.3 Mikrokontroler PIC Secara sederhana dapat disebutkan bahwa mikrokontroler adalah mikroprosesor yang dilengkapi dengan periferal dan peralatan pendukung yang tidak ada pada internal mikroprosesor. Satu mikrokontroler terdiri dari central processing unit, memori dan I/O yang dapat diprogram, yang semuanya dikemas ke dalam satu chip. Salah satu jenis mikrokontroler adalah PIC 18F452 keluaran Microchip Technology Inc. Mikrokontroler ini menggunakan arsitektur Harvard yang memisahkan memori program dari memori data. Jumlah I/O yang tersedia adalah sebanyak 33 dengan 8 di antaranya bisa digunakan sebagai pembaca sinyal analog 10 (sepuluh) bit. Spesifikasi lebih chip ditunjukkan oleh tabel 2. Tabel 2. Spesifikasi PIC 18F452 Spesifikasi Keterangan OPERATING FREQUENCY PROGRAM MEMORY EEPROM I/O COMMUNICATION 4Mhz – 20 MHz 32 KBytes 256 bytes 33 ADDRESSABLE USART Mikrokontroler PIC 18F452 memiliki internal flash program memory sebesar 32 Kbytes artinya sama dengan 16384 word instruksi. Port terbagi menjadi lima, yaitu enam pin port A, tiga pin port E, dan masing – masing delapan pin untuk port B, C dan D. Konfigurasi letak kaki – kaki bisa dilihat pada gambar 3. Sumbu X Gambar 4. Perangkat Keras Mekanik Perangkat keras mekanik hanya akan dipaparkan secara singkat untuk memeperlihatkan spesifikasi secara umum. Pada Gambar 4 ditunjukkan mesin dibagi menjadi tiga sumbu kartesian X, Y dan Z. Sumbu X memiliki jangkauan mencapai 315 mm. Sumbu Y memiliki jangkauan mencapai 580 mm. Sumbu Z memiliki jangkauan mencapai 140 mm. Ketiga sumbu menggunakan ball screw dengan pitch 5 mm yang artinya untuk setiap satu putaran akan memberikan perubahan gerak linier sejauh 5 mm. Untuk mengkonversikan gerak rotari motor jadi gerak linier diperlihatkan dengan gambar 5. Stepper motor dihubungkan dengan ball screw menggunakan coupling. Fungsi coupling selain sebagai penghubung juga sebagai pengaman mekanik. Jika terjadi kegagalan di pergerakan ball screw, kerusakan terjadi lebih dahulu pada coupling. Meja atau tool terhubung dengan nut ball screw dan bergerak secara linier. Sebagai sensor batas atau pembatas jangkaun gerak dipasang dua limit switch di ujung pergerakan. Jika limit switch teraktifkan oleh sentuhan meja yang bergerak maka sinyal akan diterima kontrol dan kontrol menghentikan putaran motor. Karena pada sistem yang dibuat tidak menggunakan reduksi, baik roda gigi atau yang lain, maka setiap satu putaran motor akan menghasilkan satu putaran ball screw yang berarti menghasilkan gerak linier sejauh 5 mm. Meja penggerak Mo tor Step per Limit switch Ball Screw Gambar 5. Skema Gerak Mesin dengan Motor Stepper Gambar 3. Konfigurasi pin mikrokontroler 18F452 Rancangan perangkat..., Fredy Andrian Alfatah, FT UI, 2013 Stepper motor yg digunakan dalam sistem mesin kartesian yang dibuat adalah stepper motor dari Autonics. Tegangan kerja stepper motor adalah 3,54 V DC. Ketelitian untuk satu step mencapai 0,72o, yang berarti untuk satu putaran dibutuhkan 500 step atau 500 sinyal pulsa digital. Frekuensi maksimum yang mampu direspon oleh driver adalah 500 kpps dengan lebar pulsa minimum yang bisa dibaca adalah 1 us. Tegangan pulsa pengendali yang dibutuhkan adalah 5 V. Supaya PC dapat mengendalikan stepper motor driver maka dibutuhkan indexer. Indexer dirancang dengan menggunakan mikrokontroler PIC 18F452. Untuk menggerakkan tiga stepper motor dibutuhkan enam pin keluaran. Mode yang digunakan adalah mode pertama yaitu 1 pulsa kecepatan dan 1 pulsa arah. Sebagai kendali arah digunakan pin D.1 sebagai arah sumbu Z, pin A.1 sebagai arah sumbu X dan pin A.3 sebagai arah sumbu Y. Sebagai kendali kecepatan digunakan pin D0 sebagai kecepatan sumbu Z, pin A0 sebagai kecepatan sumbu X dan pin A2 sebagai kecepatan sumbu Y. Agar pergerakan sumbu tidak melebihi batas maksimal kontruksi mekanik, maka dipasang dua limit switch di masing masing sumbu untuk memberi batas minimum dan maksimum. Karena sinyal “batas tercapai” terjadi saat kontrol sedang menggerakkan stepper motor, maka sinyal “batas tercapai” dimasukkan ke dalam kategori iterrupt signal. Interrupt signal akan memproses prosedur tertentu yang sudah disiapkan sekalipun kontrol sedang menjalankan prosedur lain yang mungkin belum selesai dikerjakan. Port yang memiliki fasilitas ini terdapat pada port B. Oleh alasaan tersebut semua sinyal batas aksis diumpankan ke port B. Adapun diagram indexer dengan PIC 18F452 seperti yang telah dijelaskan, ditunjukkan oleh gambar 6. 13 1 XCW XCCW YCW YCCW Z+ ZX+ XY+ Y- U1 OSC1/CLKI MCLR/VPP RC0/T1OSO/T1CKI RC1/T1OSI/CCP2A RC2/CCP1 RA0/AN0 RC3/SCK/SCL RA1/AN1 RC4/SDI/SDA RA2/AN2/VREFRC5/SDO RA3/AN3/VREF+ RC6/TX/CK RC7/RX/DT RA4/T0CKI RA5/AN4/SS/LVDIN RA6/OSC2/CLKO RD0/PSP0 RD1/PSP1 RB0/INT0 RD2/PSP2 RB1/INT1 RD3/PSP3 RB2/INT2 RD4/PSP4 RB3/CCP2B RD5/PSP5 RB4 RD6/PSP6 RB5/PGM RD7/PSP7 RB6/PGC RB7/PGD RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 2 3 4 5 6 7 14 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 X0 Y0 Z0 19 20 21 22 27 28 29 30 ZCW ZCCW Perangkat lunak HMI dirancang agar memiliki tampilan sederhana dan mudah dimengerti oleh pengguna. Untuk perancangan disini, tampilan dibuat menjadi dua bagian. Bagian pertama adalah bagian set up mesin, dimana pengguna bisa melakukan proses zero return, operasi manual mesin, dan set up sistem koordinat kerja ke memori G54 sampai G59. Gambar 7. Tampilan Bagian Set Up Mesin Pada gambar 7 ditunjukkan bagaimana tampilan menu Set Up HMI. Pada bagian tersebut terdapat posisi koordinat G54 sampai dengan G59. Angka yang ditunjukkan merupakan posisi WCS terhadap posisi nol mesin. Sebagai contoh, jika posisi koordinat mesin pada titik origin nol, sementara posisi WCS yang dipakai adalah G54 dengan posisi origin X,Y,Z (-10, -10, -10), maka posisi yang ditunjukkan oleh koordinat absolut adalah (10,10,10), sebab posisi nol mesin adalah terhadap G54 mesin adalah (10, 10, 10). Bagian editing sintaks G Code ditunjukkan oleh gambar 8. Sintaks G Code ditulis dengan memilih WCS, sistem aksis yang digunakan, mode pergerakan, feed rate, serta mengisi titik koordinat yang dibutuhkan. Dengan menekan tombol add kode akan ditambahkan ke code list. Program dijalankan dengan menekan tombol run. Program disimpan dalam file txt. Programmer juga bisa menulis program dengan txt editor kemudian membuka kode ke dalam code list. 8 9 10 PIC18F452 C2 1 11 12 10 9 U2 3 1u C1+ C1- T1IN R1OUT T2IN R2OUT T1OUT R1IN T2OUT R2IN C2+ C2- VS+ VS- C1 4 5 14 13 7 8 2 6 C4 1u C3 1u MAX232 1u P1 1 6 2 7 3 8 4 9 Gambar 8. Tampilan DCD DSR RXD RTS TXD CTS DTR RI ERROR COMPIM Gambar 6. Indexer atau Motion Card bagian Editor G Code Kode yang ditulis akan dideteksi satu persatu pada saat tombol ditekan. Pengelolaan WCS, mode aksis dan mode pergerakan dilakukan di PC di mana program ditanam. Data yang dikirim ke motion card atau indexer Rancangan perangkat..., Fredy Andrian Alfatah, FT UI, 2013 hanyalah pergerakan increamental. Jika program menggunakan mode aksis absolut maka aksis diubah terlebih dahulu ke dalam bentuk increamental. Misal posisi saat ini adalah X1,Y1 absolut dan kode akan menggerakan tool ke posisi X2,Y2 absolut maka aksis increamental adalah jarak antara dua titik tersebut yang dapat diperoleh dengan : Xincreament = X2 – X1 Yincreament = Y2 – Y1 start Baca Data Serial dari PC Set Lebar Pulsa Set Jarak Tempuh Kirim Pulsa ke Driver TIDAK Apakah jarak telah tercapai ? YA Kirim sinyal “selesai” ke PC Finish Gambar 9. Indexer Flowchart Alur kerja program indexer diperlihatkan oleh gambar 9. Ketika motion card atau indexer siap maka motion card atau indexer akan menunggu sejumlah data dari PC. Kode yang digunakan adalah : HSERIN [MD, X1, X2, SX, LX1, LX2, Y1, Y2, SY, LY1, LY2, Z1, Z2, SZ, LZ1, LZ2, DUMMY1 ] Jumlah data adalah 16, namun ditambahkan data dummy sebagai penutup data yang otomatis terkirim. Jangkauan maksimum mesin adalah 580 mm. Karena angka yang dikirim memiliki ketelitian sampai 0,01 mm, maka angka 58000 mewakili nilai maksimum 580,00. Dalam 1 byte angka desimal yang bisa dikirim adalah 255. Solusi pengiriman data dilakukan dengan membagi angka jangkauan menjadi dua bagian. Variabel X1 menampung angka hasil bagi jangkauan sumbu X dengan 255. Variabel X2 menampung sisa hasil bagi. Sehingga, jika jangkauan diberi variabel XC maka nilai jangkauan diperoleh dengan sintaks : XC = X1 * 255 + X2 Arah putar sumbu X ditentukan oleh SX. Jika SX bernilai 0 maka putaran ke arah negatif sebaliknya jika SX bernilai 1 putaran kea rah positif. Kecepatan putar ditentukan oleh lebar pulsa. Perhitungan lebar pulsa dilakukan dengan cara yang sama dengan penentuaan jangkauan. Hanya saja data yang diperoleh adalah ½ lebar pulsa. Jika ½ lebar pulsa adalah LX, maka setiap LX tercapai sinyal akan dirubah ke kondisi berlawanan, yaitu jika 1 ke 0 dan jika 0 ke 1. Setiap terjadi perubahan dari 0 ke 1 maka terjadi pergerakan sejauh 0,72o atau 0,01 mm. Variabel untuk menghitung perubahan gerak tersebut adalah KX untuk sumbu X. Adapun untuk kode lebih lengkap adalah sebagai berikut : I=I+1 IF KX < XC THEN IF I = LX THEN PORTA.0 = NOT PORTA.0 I=0 IF PORTA.0 = 1 THEN KX = KX + 1 ENDIF ENDIF ENDIF Proses pemberian sinyal akan terus dilakukan selama posisi X yang ditunjukkan oleh KX belum mencapai set poin yang ditunjukkan oleh XC. Variabel I merupakan penghitung untuk menentukan lebar ½ pulsa. Jika I telah sama dengan LX maka kondisi lebar ½ pulsa tercapai dan kondisi sinyal diinversikan. Jika terjadi perubahan pada pin A0 menjadi 5 V atau dibaca 1 oleh compiler, berarti terjadi satu langkah stepper sehingga I dikembalikan ke nol untuk menghitung ulang dan KX ditambah 1. Proses terus diulang hingga KX = XC yang berarti posisi telah tercapai. Dalam proses menjalankan serangkaian kode tersebut dibutuhkan waktu oleh mikrokontroler. Dari hasil percobaan, diperoleh bahwa satu siklus untuk proses interpolasi membutuhkan sekitar 72 us. Jadi untuk satu pulsa, lebar terkecil adalah sekitar 144 us, yaitu dengan Rancangan perangkat..., Fredy Andrian Alfatah, FT UI, 2013 hitungan counter I = 0 ke I = 1 dan kembali I = 0. Namun demikian, motor hanya mampu merespon untuk counter terkecil I = 0 sampai I = 4 atau 4 hitungan atau 4 siklus. Jadi lebar pulsa terkecil yang bisa direspon adalah 576 us. 72 us Counter I 1 2 3 4 1 2 3 4 Motor Driver Pulse 1 step gerakan motor Gambar 10. Pengaruh I terhadap kecepatan motor Counter I berfungsi menentukan lebar pulsa yang diberikan ke stepper motor driver. Kecepatan putar motor yang digunakan dikendalikan dengan memberikan pulsa dengan frekuensi tertentu ke driver. Gambar 10 menunjukkan bagaimana lebar pulsa pengendali driver dihasilkan. Jika lebar pulsa sempit maka frekuensi akan tinggi dan motor akan bergerak lebih cepat. IV. PENGUJIAN 1. Pengujian Indexer Pengujian indexer dilakukan dengan perintah gerak maksimum. Dari hasil pengujian osiloskop pada posisi Volt/Div 5 V dan Time/Div 250 ms diperoleh data sesuai gambar 11. Dengan melihat gambar didapat pulsa digital dengan tegangan 1 Vpp atau 5 V. Frekuensi tersebut adalah frekuensi tertinggi yang bisa direspon oleh stepper motor dalam sistem kontruksi yang digunakan. Dari gambar dapat dilihat bahwa periode untuk satu pulsa adalah 2,3 div atau 250 us x 2,3 div yaitu mendekati 575us. Gambar 11. Uji Sinyal Frekuensi Maksimum Dari periode bisa didapat kecepatan maksimum dari sistem yang dibuat. Pertama dihitung frekuensi : F = 1000000/T dengan T adalah periode dan 10000000 adalah 1 detik dalam satuan us (1 detik = 1000000 us) maka dapat diperoleh : F = 1000000/575 F = 1739,13 pps Dari frekuensi maksimum 1739,13 pps kemudian dibagi dengan 500 yaitu banyaknya pulsa yang diperlukan untuk satu putaran motor. Jumlah putaran per detik = 1739,13 / 500 = 3,48 rps Dengan demikian kecepatan linier per detik dapat dihitung dengan mengalikan kecepatan rotasi dengan jarak yang ditempuh dalam 1 putaran yaitu pitch dari ball screw 5mm. Feed Rate = 3,48 * 5 = 17,39 mm / detik Feed Rate = 17,39 * 60 = 1043,48 mm / menit Dengan demikian bisa diambil kesimpulan mesin dapat bekerja pada kecepatan maksimum sekitar 1000mm/menit. 2. Pengujian Algoritma Interpolasi Linier Interpolasi linier yang dibuat adalah gerak interpolasi untuk aksis X dan aksis Y. Sedang gerak aksis Z dilakukan independen terpisah dari gerak aksis X dan Y. Gerak interpolasi diperoleh dengan memberikan lebar pulsa yang berbeda antara sumbu X dengan sumbu Y. Proses ini dilakukan dengan melihat jarak tempuh resultan dan kecepatan pemakanan (feed rate). Dengan mengetahui jarak tempuh X dan jarak tempuh Y maka dapat diketahui pula kecepatan sumbu X dan kecepatan sumbu Y. Misal pada kecepatan maksimum 1000 mm/menit dilakukan gerak dari titik X,Y (0,0) menuju X,Y(4,3). Resultan diperoleh dengan : RL = √((XL)2+(YL)2) Dimana XL dan YL adalah jarak tempuh X dan Y sehingga : RL = √((X2 – X1)2+(Y2 – Y1)2) RL = 5 Langkah berikutnya menetukan sinus dan cosines sudut resultan RL, dengan : SinV = YL / RL = 0,6 CosV = XL / RL = 0,8 Sehingga kita bisa mengukur kecepatan masing masing sumbu, misal untuk sumbu Y adalah : Kecepatan Y = Feed Rate x SinV / 60 Kecepatan Y = 10 (dalam mm per detik) Putaran per detik = Kecepatan Y / 5 = 2 Pulsa per detik = Putaran per detik x 500 = 1000 Lebar Pulsa = 1000000 / Pulsa per detik = 1000 us Dalam mengaplikasikan angka tersebut menjadi gerak digunakan kode dalam mikrokontroler yang berperan sebagai indexer. Idealnya, siklus pengulangan adalah 1us agar diperoleh gerak yang presisi. Namun karena adanya proses pembacaan kode dalam mikrokontroler untuk menghasilkan pulsa, membutuhkan waktu sekitar 144us Rancangan perangkat..., Fredy Andrian Alfatah, FT UI, 2013 untuk ½ pulsa. Oleh sebab itu untuk memperoleh lebar pulsa 1000us counter yang digunakan adalah per 144us. Karena counter dilakukan untuk setengah pulsa, maka perhitungan counter adalah : Counter Y = 1000 / 144 = 7 Dengan cara yang sama maka diperoleh kecepatan di X: Lebar pulsa = 750 us Counter X = 5 Semua hasil perhitungan dibulatkan karena mikrokontroler hanya menerima data dalam byte sebesar 1 byte. (a) 07, pada saat kecepatan feed rate ditingkatkan menjadi 500 mm/m ketelitian berkurang menjadi kisaran angka 0,7 sampai dengan 0,15. Dengan demikian mesin memiliki karakteristik yang menurun ketelitiannya saat kecepatan proses bertambah. 2. Pengujian Algoritma Interpolasi Sirkular Gerak interpolasi sirkular pada dasarnya merupakan segmen dari gerak interpolasi linier. Input data oleh programmer berupa titik pusat lingkaran dan titik tujuan akhir kemudian dipilah menjadi segmen gerak interpolasi linier. Hal tersebut dilakukan dengan menggunakan persamaan lingkaran : X2 + Y2 = R2 Input pusat lingkaran, kita sebut saja I dan J, mula – mula kita gunakan untuk mendapatkan radius (R). Dengan menjadikan I dan J sebagai titik nol maka posisi saat ini tool berada adalah – I dan – J. Segmen pertama diperoleh dengan menambah atau mengurangi – I dengan angka tertentu, missal 1 untuk pergerakan 1 mm. Jika Xo dan Yo adalah titik tujuan segmen pertama, maka kedua titik diperoleh dengan langkah berikut : R2 = X2 + Y2 = = I2 + J2 Xo = – I – 1 atau Xo = – I + 1 Yo = √ ( R2 – Xo ) Pengurangan atau penambahan Xo tergantung dengan arah putar dan posisi tool terhadap I dan J sebagai acuan. Pengurangan dilakukan jika arah putar adalah berlawanan arah jarum dan tool ada di kuadran 1 atau 2. Pengurangan juga dilakukan jika arah putar searah jarum jam dengan tool berada di kuadran 3 atau 4. Selain kedua kondisi tersebut, maka dilakukan terhadap Xo untuk mendapat segemen berikutnya. Proses pencarian segmen akan dihentikan jika tool telah mencapai titik tujuan akhir lingkaran. (b) Gambar 12. Pengujian algoritma interpolasi linier Dari pengujian algoritma tersebut diperoleh data seperti ditunjukkan oleh gambar 12. Pada gambar 12 (a) ditunjukkan hasil pengujian gerak interpolasi pada kecepatan 100 mm/m. Sebagai perbandingan pada gambar 12 (b) ditunjukkan ketika pengujian dilakukan pada kecepatan yang lebih cepat. Sumbu X merepresentasikan tidak adanya kesalahan gerak mekanis. Sumbu Y positif merepresentasikan kelebihan langkah dari kondisi gerak aktual mekanis. Sedangkan sumbu Y negatif merepresentasikan kekurangan langkah dari gerak aktual mekanis. Dari kedua gambar tersebut dapat disimpulkan bahwa semakin cepat aksis bergerak, semakin besar pula kemungkinan kesalahan yang terjadi. Jika pada gambar 12 (a) kesalahan berkisar dari angka – 0,1 sampai dengan 0, Gambar 13. Pengujian Gerak Interpolasi Sirkular Pengujian pada algoritma ini dilakukan dengan cara yang sama dengan pengujian gerak interpolasi linier. Rancangan perangkat..., Fredy Andrian Alfatah, FT UI, 2013 Dalam setiap segmen gerakan mesin dilakukan pengukuran gerak aktual. Hasil pengukuran gerak aktual tersebut kemudian dibandingkan dengan hasil perhitungan ideal. Dari hasil perbandingan berupa grafik berbentuk lingkaran akan bisa dilihat kondisi sebenarnya dari gerakan yang telah dilakukan mesin. IV. KESIMPULAN Hasil pengujian telah ditampilkan dan dijelaskan. Dari semua hasil yang diperoleh dan dijelaskan maka dapat dirangkum kesimpulan sebagai berikut : a. G Code interpreter dapat membaca kode G Code dasar yaitu G90, G91, G01, G02 dan G03. b. Perangkat keras indexer dapat menterjemahkan data dari komputer pengendali menjadi sinyal perintah yang dibutuhkan oleh driver dari stepper motor. c. Mesin CNC 3 aksis dengan kontruksi kartesian dapat beroperasi dengan G Code interpreter dan indexer yang dibuat, dengan ketelitian 1 mm. d. Mesin dapat dioperasikan dengan kecepatan maksimum mencapai 1000 mm/m. V. DAFTAR ACUAN Bai, Ying. 2005. The Windows Serial Port Programming Handbook. United States of America: CRC Press. Curran, Kelly dan Stenerson, Jon. 2007. Computer Numerical Control operation and Programming (3rd ed.). Columbus, Ohio: Pearson Education. De Silva, Clarence W. 2010. Mechatronics: A Foundation Course. Boca Raton, Florida: CRC Press. Grier, Richard. 2004. Visual Basic Programmer’s Gude to Serial Communication (4th ed.). Standwood: Mabry Publishing. Peatman, John B. 2003. Embedded Design with the PIC 18F452 Microcontroller. Upper Saddle River, New Jersey: Pearson Education. Subagio, Dalmasius Ganjar. 2008. Teknik Pemrograman CNC Bubut dan Frais. Jakarta: LIPI. Sutrisno. 2008. Aplikasi Bahasa G Code dan M Code untuk Kontrol Gerak PCI 1864 pada Mesin Cartesian di Polman ASTRA dengan menggunakan Visual Basic 6.0. Jakarta: Polman ASTRA. Rancangan perangkat..., Fredy Andrian Alfatah, FT UI, 2013