PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK …repository.polman-bandung.ac.id/downloadfile.php... ·...

6
STEMAN 2016 ISBN 978-979-17047-6-2 G-15 PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK CONTROLLER MESIN CNC GRAFIR 2,5 D BERBASIS MICROCONTROLLER STM32F103 (ARM CORTEX-M3) DENGAN BAHASA PEMOGRAMAN C-ARDUINO Indra Agung Ariwi Saputro 1 dan M.Ali Suparman 2 1) Mahasiswa Jurusan Teknik Manufaktur 2) Dosen Jurusan Teknik Manufaktur Politeknik Manufaktur Negeri Bandung Jalan Kanayakan No.21 - Dago, Bandung - 40135 Phone/Fax : 022.250 0241 / 250 2649 Email : 1) [email protected] , 2) [email protected] Abstrak Pemrosesan perintah berupa NC-Code yang terdiri dari G-Code dan M-code standar yang diproses pada controller mesin CNC merupakan suatu proses pengolahan data yang rumit. Pada controller terdapat bagian microcontroller yang di dalamnya dilakukan pemrosesan, perhitungan, dan penalaran data secara otomatis (algoritma) dari data yang dikirimkan oleh interface yang berinteraksi dengan manusia. Keluaran akhir dari pengolahan data ini akan menjadi gerakan mesin secara otomatis sesuai dengan perintah yang dikirimkan oleh manusia ke mesin. Untuk itu diperlukanlah pembuatan program (firmware) di microcontroller untuk menerjemahkan (interpret) perintah dari G/M-Code menjadikeluaran sinyal pulse-pulse yang akan memutarkanmotor servo.Tujuan dari penelitian ini adalah untuk mengotomasikan mesin CNC grafir 2,5D (2 axis X dan Y mampu gerak simultan) dengan menggunakan microcontroller STM32F103 (ARM Cortex-M3) sebagai controller-nya. Informasi perintah berupa G/M-Code di interpretasikan setiap baris perintahnya, kemudian diolah menjadi gerakan interpolasi linear dan circular untuk menggerakan mesin CNC secara otomatis. Diawali dengan membuat algoritmanya, kemudian diterjemahkan ke dalam bahasa pemrograman dengan menggunakan bahasa-C Arduino menjadi sebuah firmware yang akan dimuat di dalam microcontroller.Pengujian dilakukan dengan cara menabulasikan (ploting) hasil interpolasi pada grafik dan membandingkannya dengan lintasan yang sebenarnya. Hasil menunjukkan bahwa nilai max error pada interpolasi linear sebesar 1,231 step, sedangkan errorpada interpolasi circular sebesar 1,14 step. Kata kunci: Microcontroller,CNC, G/M-Code, Bahasa C-Arduino, Pemrograman, Interpolasi. 1. Pendahuluan Perkembangan teknologi manufaktur di jaman modern ini semakin berkembang pesat, salah satu perkembangannya dalam penggunaan sistem komputer untuk proses manufaktur. Salah satu mesin yang diintegrasikan dengan komputer di dalam industri manufaktur adalah mesin CNC. CNC adalah akronim dari C (Computerized) dan NC (Numerical Control). Computerized merupakan sistem yang ter-integrasi dengan komputer, sedangkan NC (Numerical Control) adalah perintah-perintah yang diinformasikan dalam bentuk kode numerik yang terdiri dari huruf, angka, dan simbol. Salah satu bagian terpenting dari mesin CNC yang berfungsi sebagai pengendali utama dan bekerja layaknya sebagai “otak” adalah bagian Controller atau perangkat pengendali [1].Bagian controller mesin CNC bertugas untuk menerjemahkan perintah yang terdiri dari G-Code dan M-Code, menjadi keluaran pulsa- pulsa yang akan dikirimkan ke sebuah driver motor servo, kemudian driver akan memutarkan motor servo sesuai dengan perintah yang diberikan. Proses di dalam controller CNC tersebut membutuhkan perangkat keras (hardware) menggunakan microcontroller. Di dalam microcontroller terdapat pemrosesan, perhitungan, dan penalaran data secara otomatis (algoritma) yang dilakukan dengan rantaian operasi logika dan matematika yang tulis dalam bentuk sebuah program (firmware) dengan bahasa yang dimengerti oleh komputer dan manusia. Pembuatan algoritma dan program (firmware) untuk pengolahan data informasi perintah menjadi gerakan mesin CNC menggunakan

Transcript of PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK …repository.polman-bandung.ac.id/downloadfile.php... ·...

Page 1: PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK …repository.polman-bandung.ac.id/downloadfile.php... · steman 2016 isbn 978-979-17047-6-2

STEMAN 2016 ISBN 978-979-17047-6-2

G-15

PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK CONTROLLER MESIN CNC GRAFIR 2,5 D BERBASIS

MICROCONTROLLER STM32F103 (ARM CORTEX-M3) DENGAN BAHASA PEMOGRAMAN C-ARDUINO

Indra Agung Ariwi Saputro1 dan M.Ali Suparman2

1)Mahasiswa Jurusan Teknik Manufaktur 2) Dosen Jurusan Teknik Manufaktur

Politeknik Manufaktur Negeri Bandung Jalan Kanayakan No.21 - Dago, Bandung - 40135

Phone/Fax : 022.250 0241 / 250 2649 Email :1)[email protected] , 2)[email protected]

Abstrak

Pemrosesan perintah berupa NC-Code yang terdiri dari G-Code dan M-code standar yang diproses pada controller mesin CNC merupakan suatu proses pengolahan data yang rumit. Pada controller terdapat bagian microcontroller yang di dalamnya dilakukan pemrosesan, perhitungan, dan penalaran data secara otomatis (algoritma) dari data yang dikirimkan oleh interface yang berinteraksi dengan manusia. Keluaran akhir dari pengolahan data ini akan menjadi gerakan mesin secara otomatis sesuai dengan perintah yang dikirimkan oleh manusia ke mesin. Untuk itu diperlukanlah pembuatan program (firmware) di microcontroller untuk menerjemahkan (interpret) perintah dari G/M-Code menjadikeluaran sinyal pulse-pulse yang akan memutarkanmotor servo.Tujuan dari penelitian ini adalah untuk mengotomasikan mesin CNC grafir 2,5D (2 axis X dan Y mampu gerak simultan) dengan menggunakan microcontroller STM32F103 (ARM Cortex-M3) sebagai controller-nya. Informasi perintah berupa G/M-Code di interpretasikan setiap baris perintahnya, kemudian diolah menjadi gerakan interpolasi linear dan circular untuk menggerakan mesin CNC secara otomatis. Diawali dengan membuat algoritmanya, kemudian diterjemahkan ke dalam bahasa pemrograman dengan menggunakan bahasa-C Arduino menjadi sebuah firmware yang akan dimuat di dalam microcontroller.Pengujian dilakukan dengan cara menabulasikan (ploting) hasil interpolasi pada grafik dan membandingkannya dengan lintasan yang sebenarnya. Hasil menunjukkan bahwa nilai max error pada interpolasi linear sebesar 1,231 step, sedangkan errorpada interpolasi circular sebesar 1,14 step.

Kata kunci: Microcontroller,CNC, G/M-Code, Bahasa C-Arduino, Pemrograman, Interpolasi.

1. Pendahuluan

Perkembangan teknologi manufaktur di

jaman modern ini semakin berkembang pesat, salah satu perkembangannya dalam penggunaan sistem komputer untuk proses manufaktur. Salah satu mesin yang diintegrasikan dengan komputer di dalam industri manufaktur adalah mesin CNC. CNC adalah akronim dari C (Computerized) dan NC (Numerical Control). Computerized merupakan

sistem yang ter-integrasi dengan komputer, sedangkan NC (Numerical Control) adalah perintah-perintah yang diinformasikan dalam bentuk kode numerik yang terdiri dari huruf, angka, dan simbol.

Salah satu bagian terpenting dari mesin CNC yang berfungsi sebagai pengendali utama dan bekerja layaknya sebagai “otak” adalah

bagian Controller atau perangkat pengendali [1].Bagian controller mesin CNC bertugas untuk menerjemahkan perintah yang terdiri dari G-Code dan M-Code, menjadi keluaran pulsa-pulsa yang akan dikirimkan ke sebuah driver motor servo, kemudian driver akan memutarkan motor servo sesuai dengan perintah yang diberikan. Proses di dalam controller CNC tersebut membutuhkan perangkat keras (hardware) menggunakan microcontroller. Di dalam microcontroller terdapat pemrosesan, perhitungan, dan penalaran data secara otomatis (algoritma) yang dilakukan dengan rantaian operasi logika dan matematika yang tulis dalam bentuk sebuah program (firmware) dengan bahasa yang dimengerti oleh komputer dan manusia. Pembuatan algoritma dan program (firmware) untuk pengolahan data informasi perintah menjadi gerakan mesin CNC menggunakan

Page 2: PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK …repository.polman-bandung.ac.id/downloadfile.php... · steman 2016 isbn 978-979-17047-6-2

STEMAN 2016 ISBN 978-979-17047-6-2

G-16

microcontroller STM32F103 yang akan dibahas pada karya tulis ini.

2. Metodologi Penelitian 2.1. Interpolasi Linear 2.1.1. Perintah Gerakan

Gambar 1 Pergerakan Linear

Gerakan linear (lintasan garis lurus)

diperintah dengan G-Code G01 dan G00. Perintah G01 digunakan untuk gerakan dengan kecepatan yang ditentukan oleh pengaturan feedrate dari F-Code, sedangkanuntuk perintah G00 sama seperti G01, namun digunakan untuk gerakan rapid (cepat). Kecepatan gerakan G00 ini tidak dipengaruhi oleh pengaturan feedrate [1].

2.1.2. Perhitungan dan Algoritma

Algoritma yang digunakan untuk interpolasi linear menggunakan algoritma Bresenham. Algoritma ini membuat garis dengan cara membentuk titik-titik yang berdekatan dengan garis lurus (garis vektor) yang sesungguhnya, ilustrasi terlihat pada gambar 2. Pada dasarnya metode ini digunakan untuk menampilkan garis dari titik-titik(pixel) di layar monitor dengan proses rasterisasi (mengubah data garis vektor menjadi gambar raster dari pixel). Prinsip kerja algoritma ini dapat juga dimanfaatkan untuk proses interpolasi linear pada mesin CNC [2].

Gambar 2 Proses Rasterisasi Gambar

Vektor

a. Perhitungan

Gambar 3 Perhitungan Interpolasi Linear

Dari gambar 3 dapat terlihat beberapa

variabel penting yang akan digunakan dalam proses kalkulasi. Semua gerakan dihitung dari posisi titik origin benda (nol benda) sebagai titik acuannya. Nilai pX dan pY merupakan posisi absolute dari Titik Awal (posisi terakhir toolpost berhenti). Nilai target X dan target Y merupakan posisi absolute dari Titik Target (posisi titik yang akan dituju). Pergerakan simultan dilakukan pada bidang kerja sumbuX dan Y.

Nilai gradien (slope) dari garis dapat dinyatakan sebagai 풅풀 풅푿. Dimana komponen nilai dX dan dY didapat dari persamaan berikut ini,

푑푋 = 푡푎푟푔푒푡푋 − 푝푋 (1)

푑푌 = 푡푎푟푔푒푡푌 − 푝푌 (2) Misalkan dari perhitungan didapat nilai dX

=8 dan nilai dY = 32, maka gradien garis yang terbentuk 풅풀 풅푿 = 32

8 = 41 . Artinya setiap

4 step (pulse) gerakan dari motor Y setara dengan 1 step gerakan dari motor X, sehingga gerakan akan membentuk garis lurus dengan gradien 4 1.

Pada algoritma ini, gerakan stepdiawali dari nilai terbesar antara dX dan dY. Jika didapatnilai dY lebih besar (>) dari dX, maka gerakan step diawali dari motor Y terlebih dahulu. Setiap satu gerakan step motor Y, terdapat variabel counter yang akan ditambahkan dengan nilai dX, dan terus ditambahkan selama melakukan gerakan step. Saat nilai counter tersebut sudah bernilai lebih

Page 3: PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK …repository.polman-bandung.ac.id/downloadfile.php... · steman 2016 isbn 978-979-17047-6-2

STEMAN 2016 ISBN 978-979-17047-6-2

G-17

besar atau sama dengan (≥)nilai dY, maka controllermulai melakukan gerakan step pada motor X. Proses ini terus berulang hingga nilai step sudah mencapai posisi tujuan (titik akhir).

b. Algoritma

Berikut adalah flowchartyang dibuat untuk algoritma interpolasi linear. Terdapat beberapa variabel beserta tipe datanya yang digunakan.

Tabel 1 Tipe data variabel interpolasi linear

Variabel Tipe Data targetX, targetY integer

pX, pY integer dX, dY integer

arahX, arahY boolean count integer

i integer Data input yang dimasukan berupa nilai

Titik Target yang disimpan dalam variabel targetX dan targetY. Data didapat dari perintah G-Code yang dikirim untuk diproses interpolasi linear.

Gambar 4 Algoritma Interpolasi Linear (1)

Gambar 5 Algoritma Interpolasi Linear (2) Pada flowchart di gambar 4, terdapat variabel arahX dan arahY. Variabel ini digunakan untuk menentukan putaran arah dari motor X dan Y apakah CW atau CCW berdasarkan dari nilai dX dan dY yang didapat bernilai positif atau negatif. Flowchart di gambar 5 terdapat proses iterasi yang dilakukan terus berulang (looping) hingga mencapai titik target. Jika dX >dY bernilai true, maka proses iterasi dilakukan sebanyak dX kali. Sedangkan jika false, maka iterasi sebanyak dY kali. Banyaknya iterasi yang sudah dilakukan dicatat oleh variabel i. Setelah proses iterasi tercapai sampai target, variabel pX dan pYakan mencatat posisi X dan Yterbaruberdasarkan dari nilai targetX dan targetY yang di input-kan, setelah itu proses interpolasi selesai dilakukan.

Page 4: PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK …repository.polman-bandung.ac.id/downloadfile.php... · steman 2016 isbn 978-979-17047-6-2

STEMAN 2016 ISBN 978-979-17047-6-2

G-18

2.2. Interpolasi Circular 2.2.1. Perintah Gerakan

Gerakan circular (lintasan melingkar) diperintah menggunakan G-code G02 dan G03. G02 digunakan untuk gerakancircular dengan arah CW (searah jarum jam), sedangkan G03 sebaliknya yaitu untuk arah CCW (berlawanan jarum jam). Posisi akhir atau titik target dari lintasan circular ditetapkan oleh nilai X dan Y.Posisi dari pusat lingkaran lintasancircular, ditetapkan oleh nilai I (pada arah X) dan J (pada arah Y), [1]. Posisi pusat lingkaran dihitung relativedari posisi awal pergerakan (bukan posisi absolute), seperti terlihat pada gambar 6.

Gambar 6 Pergerakan Circular

2.2.2. Perhitungan dan Algoritma Algoritma yang digunakan untuk menggerakan toolpostpada lintasan melingkar (arc), yaitu dengan cara membuat garis-garis kecil dengan membagi lingkaran menjadi banyak segmen, sehingga gerakan yang dilakukan adalah point-to-point menggunakan interpolasi linear yang dilakukan terus berulang, [1,3]. Hasil pendekatan point-to-point akan memiliki nilaierror (penyimpangan) dari lintasan yang seharusnya. Ilustrasinya terlihat pada gambar 7.

Gambar 7 Pembentukan BusurPoint-to-Point

a. Perhitungan

Gambar 8Perhitungan Interpolasi Circular

Dari gambar 8 diatas dapat terlihat variabel-variabelpenting dan berikut perhitungannya. Menghitung posisi absolute pusat busur.

푐푋 = 퐼 + 푝푋 (3) 푐푌 = 퐽 + 푝푌 (4)

Menghitung nilai dX dan dY. 푑푋 = 푝푋 − 푐푋 (5) 푑푌 = 푝푌 − 푐푌 (6)

Menghitung radius busur. 푟푎푑푖푢푠 = √푑푋 + 푑푌 (7)

Menghitung sudut-sudut (satuan radian).

푎푝푙ℎ푎1 = tan (8)

푎푝푙ℎ푎2 = tan (9) 푡ℎ푒푡푎 = 푎푙푝ℎ푎2− 푎푙푝ℎ푎1 (10)

Menghitung panjang busur. 푝푎푛푗푎푛푔 = 푡ℎ푒푡푎 × 푟푎푑푖푢푠 (11)

Menghitung Total Pembagian (Segmen)

푡표푡푎푙푆푒푔푚푒푛 = 푟표푢푛푑푢푝 (12) Menghitung porsi busur (pada iterasi ke-n)

푝표푟푠푖 = 푖푡표푡푎푙푆푒푔푚푒푛 (13)

Menghitung alpha3 (pada iterasi ke-n) 푎푝푙ℎ푎3 = (푡ℎ푒푡푎 × 푝표푟푠푖) + 푎푙푝ℎ푎1(14)

Menghitung titik baru (pada iterasi ke-n) 푛푋 = 푐푋 + {cos(푎푙푝ℎ푎3) × 푟푎푑푖푢푠}(15)

푛푌 = 푐푌 + {sin(푎푙푝ℎ푎3) × 푟푎푑푖푢푠} (16)

Page 5: PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK …repository.polman-bandung.ac.id/downloadfile.php... · steman 2016 isbn 978-979-17047-6-2

STEMAN 2016 ISBN 978-979-17047-6-2

G-19

b. Algoritma Berikut adalah flowchart yang dibuat untuk

algoritma interpolasi circular.Terdapat beberapa variabel beserta tipe datanya yang digunakan.

Tabel 2 Tipe data variabel interpolasi

circular Variabel Tipe Data

Arah integer targetX , targetY , I , J integer

cX , cY , dX , dY integer radius float

alpha1 , alpha2 , theta float panjang float

totalSegmen , i integer porsi , alpha3 float

nX , nY integer

Gambar 9 Algoritma Interpolasi Circular (1)

Gambar 10 Algoritma Interpolasi Circular (2)

Proses iterasi dalam melakukan gerakan

linear menggunakan interpolasi linear, dilakukan sebanyak totalSegmen. Besarnya total segmen bergantung dari nilai konstanta resolusiArc. Pada program yang dibuat, nilai resolusiArc ditetapkan sebesar 4 step. Artinya setiap panjang busur 4 step, akan terbentuk satu segmen. Setiap satu segmen akan terbentuk gerakan linear di kedua titik ujung pada juring busur segmen.

Page 6: PEMBUATAN PROGRAM G-CODEINTERPRETER UNTUK …repository.polman-bandung.ac.id/downloadfile.php... · steman 2016 isbn 978-979-17047-6-2

STEMAN 2016 ISBN 978-979-17047-6-2

G-20

3. Hasil dan Pembahasan Percobaan hasil interpolasi dilakukan dengan

membentuk 3 macam garis yang berbeda, yaitu: No Linear Circular (i) G01 X5 Y12 G03 X0 Y10 I-10 (ii) G01 X8 Y8 G03 X0 Y20 I-20 (iii) G01 X8 Y2 G03 X0 Y30 I-30

*Satuan jarak dalam satuan step(pulse)

Gambar 11 Percobaan Interpolasi Linear

Gambar 12 Percobaan Interpolasi Circular

Percobaan dilakukan dengan membuat 3

macam lintasan yang berbeda. Semua satuan jarak yang digunakan masih dalam bentuk satuan step (pulse). Pada interpolasi linear, didapat nilai max error terbesarnya adalah 1,231 step, sedangkan pada interpolasi circular, didapat nilai max error terbesarnya adalah 1,14 step. Jika ditinjau lebih detail lagi, nilai error untuk interpolasi circular seharusnya akan lebih besar lagi,dikarenakan interpolasi circular terbentuk dari banyak garis lurus yang dihasilkan menggunakan interpolasi linear, sedangkan interpolasi linear itu sendiri memiliki nilai error. Sehingga nilai error yang sesungguhnya untuk interpolasi circular adalah gabungan error interpolasi linear dan circular.

4. Kesimpulan Program (firmware) G-Code interpreter

dibuat untuk menghasilkan gerakan lintasan linear dan circular pada mesin CNC dengan cara meng-interpolasi-kan lintasan tool (toolpath).

Interpolasi linear dibuat dengan menggunakan algoritma Bresenham, sedangkan untuk interpolasi circular, menggunakan pendekatan point-to-point untuk membentuk busur (arc).

Hasil uji coba interpolasi untuk 3 macam garis, menunjukkan bahwa pada interpolasi linear terdapat nilai max error1,231 step. Sedangkan pada interpolasi circular, max error1,14 step.

Daftar Pustaka

[1] Suh, Suk Hwan, dkk. Theory and Design of CNC System. (2008). Springer, London.

[2] Royer, Dan. How to Build an 2-axis Arduino CNC Gcode Interpreter. (2013). Diakses tanggal 20 April 2016, dari https://www.marginallyclever.com/2013/08/how-to-build-an-2-axis-arduino-cnc-gcode-interpreter/

[3] Royer, Dan. How To Improve The 2-axis CNC Gcode Interpreter to Understand Arcs. (2014). Diakses tanggal 20 April 2016, dari https://www.marginallyclever.com/2014/03/how-to-improve-the-2-axis-cnc-gcode-interpreter-to-understand-arcs/