BAB IV PEMBAHASAN 4.1 Perancangan Kendali Back Gauge Berbasis Arduino Sistem yang akan dirancang akan terbagi menjadi dua bagian, yaitu perancangan perangkat keras ( Hardware ) dan perancangan perangkat lunak ( Software ). 4.1.1 Perancangan Perangkat Keras ( Hardware ) Komponen yang digunakan terdiri dari komponen elektrik dan mekanik. Komponen- komponen ini dapat digabung pada board arduino dengan inisialisasi pin sebagai berikut : Pin 14 dan 15 dihubungkan dengan rangkaian Bluetooth HC-05. Pin A0, A1, A2, A3, A4, A5 dihubungkan dengan rangkaian LCD 16x2 Pin 9 dan 10 dihubungkan dengan rangkaian push button ( button maju dan button mundur ) yang berfungsi untuk menggerakkan back gauge maju atau mundur dari posisi semula. Pin 12 dihubungkan dengan rangkaian push button ( button reset ) untuk mereset program arduino. Pin 11 dihubungkan dengan rangkaian sensor limit switch yang berfungsi dalam pergerakan otomatis maju atau mundur back gauge setelah punch menekuk material. Pin 8 dan 13 dihubungkan dengan rangkaian sensor proximity switch yang berfungsi sebagai sensor referensi pergerakan back gauge agar referensi awal pada posisi 0 dari titik center punch. Pin 4, 5, 6, dan 7 dihubungkan dengan rangkaian penggerak laju back gauge yang terdapat pada panel utama mesin hydraulic press brake. Pin 2 dan 3 dihubungkan dengan rangkaian rotary encoder motor back gauge. Input tegangan 3.3 volt dan Ground pada Arduino Mega 2560 dihubungkan pada Bluetooth HC-05. 27
Tegangan AC 220 volt dihubungkan Power supply 5 volt yang Outputnya akan dihubungkan dengan Input pada LCD 16x2 dan Input (Vin) dan Ground pada Arduino Mega 2560. 4.1.1.1 Rangkaian LCD 16x2 ke Arduino Mega 2560 LCD 16x2 berfungsi untuk menampilkan inputan berupa data angka dari windows yang di kirim melalui Bluetooth. Gambar 4.1 Rangkaian LCD 16x2 ke Arduino Mega 2560. 4.1.1.2 Rangkaian Bluetooth HC-05 ke Arduino Mega 2560 Rangkaian Bluetooth berfungsi untuk mengirimkan data dari windows ke Arduino Mega 2560. Rangkaian Bluetooth ke Arduino dapat dilihat digambar 4.2 28
Gambar 4.2 Rangkaian Bluetooth HC-05 ke Arduino Mega 2560 4.1.1.3 Rangkaian Penggerak Back Gauge Rangkaian penggerak ini akan di sambungkan dari arduino mega 2560 dengan rangkaian back gauge di panel utama mesin hydraulic press brake sehingga dapat terhubung dan menggerakkan laju dari back gauge dengan tambahan 4 buah relay 5 volt. Seperti pada gambar 4.3. Gambar 4.3 Rangkaian Penggerak Back 29
4.1.1.4 Rangkaian Proximity Switch Rangkaian proximity switch berfungsi sebagai sensor deteksi metal dimana saat besi yang ditempelkan pada back gauge terbaca oleh sensor maka back gauge akan bergerak menuju titik referensinya Gambar 4.4 Rangkaian Proximity Switch 1.1.2 Perancangan Perangkat Lunak ( Software ) Perangkat lunak yang dirancang ada 2 bagian, yaitu pada windows dan board Arduino. Pada windows menggunakan software Visual Studio 2010 dengan bahasa pemrogaman C. Pada Arduino, menggunakan Arduino IDE (Integrated Development Environment) dengan bahasa pemrogaman C. 4.1.2.1 Perancangan Program Pada Visual Studio Perancangan program pada visual studio berfungsi sebagai pengolah data lalu mengirim data tersebut ke arduino dengan media Bluetooth Berikut adalah perancangan tampilan dari desain Visual studio yang terbagi menjadi 4 form yaitu : 1. Pada form 1 yang merupakan tampilan awal dari program kendali back gauge yang diberi nama Yawei terdapat tiga buah pilihan yaitu : New Program, List Program, Connection, seperti gambar 4.2 : 30
Gambar 4.5 Desain Form 1 New Program berfungsi untuk membuat program baru ( membuka Form 4 ), List Program berisi data dari program yang dituliskan dan sudah tersimpan ( membuka Form 2 ). Connection berfungsi untuk koneksi / pairing dari windows ke arduino melalui media Bluetooth HC-05. 2. Pada form 4 / klik New program terdapat pilihan untuk memasukkan nama program, nilai X axis, nilai Y axis, dan pilihhan add yang berfungsi untuk memasukkan nama dan angka yang telah dituliskan, seperti gambar 4.3 : Gambar 4.6 Desain Form 4 Kemudian mengisi nama program, nilai X axis, nilai Y axis, seperti gambar 4.6 31
Gambar 4.7 Pengisian Form 4 Lalu klik pilihan Add maka program yang ditulis akan di input ke dalam table form 4, seperti gambar 4.5 : Gambar 4.8 Menginput Data Program Jika ingin menambahkan data program dalam satu nama program dengan 2 X axis atau 2 pergerakan back gauge bisa dilakukan seperti langkah sebelumnya, dan klik tombol save maka program akan di simpan ke dalam List Program ( Form 2 ). 3. Pada form 2 / klik List Program terdapat pilihan search program untuk mencari program, data list program yang telah di buat pada New 32
Program ( Form 4 ), pilihan select untuk memilih program yang akan di jalankan. Lalu klik RUN untuk menjalankan program ( membuka form 3 ) Seperti gambar 4.6 : Gambar 4.9 Form 2 ( List Program ) 4. Setelah klik pilihan RUN akan membuka tampilan form 3 seperti pada gambar 4.7 : Gambar 4.10 Tampilan Form 3 Pada form 3 ini terdapat tampilan data yang akan dikirim ke arduino, nama program yang akan di eksekusi, tombol [ < ] [ > ] untuk memilih 33
program, tombol [reference] untuk mereferensi program, dan tombol [RUN] untuk eksekusi program yang telah dipilih. Diagram alir ( flowchart ) pada pemrograman visual studio dapat dilihat pada gambar 4.11 MULAI CONNECTION Check koneksi Bluetooth Buat Program Pilih Program NEW PROGRAM Save LIST PROGRAM Run REFERENCE RUN Program Siap Dijalankan Gambar 4.11 Diagram Alir Program Kendali Pada Visual Studio 4.1.2.2 Perancangan Program Pada Arduino Mega 2560 Pemrograman pada Arduino berfungsi sebagai penerima data dan meneruskannya ke control mesin yang menggerakan back gauge. Perancangan pembuatan program pada arduino IDE (integrated Development Environment) yang 34
merupakan compiler dari arduino. Arduino IDE terdiri dari editor teks untuk menulis kode program, sebuah area pesan, sebuah konsul, sebuah toolbar dengan tomboltombol untuk fungsi umum dan beberapa menu. Arduino IDE terhubung ke arduino board untuk meng-upload program dan juga untuk berkomunikasi dengan arduino board. Sebelum memulai membuat kode program pada arduino IDE, terlebih dahulu menentukan jenis arduino board yang digunakan pada sistem. Arduino mega 2560 merupakan jenis arduino board yang digunakan pada sistem alat ini. Setelah menentukan arduino board yang digunakan, menentukan port pada PC (personal computer) yang digunakan untuk komunikasi pada arduino board, sehingga tidak terjadi kegagalan pada saat upload. #include <LiquidCrystal.h> LiquidCrystal lcd(a0, A1, A2, A3, A4, A5); const int buttonreset = 12; const int buttonmundur = 9; const int buttonmaju = 10; const byte limity_up = 11; const byte posx = 13; const byte posx2 = 8; const int Xmin = 4; const int Xplus = 5; const int Xminmin = 6; const int Xplusplus = 7; int n = LOW; float jarak=0; int encoderpin1 = 2; int encoderpin2 = 3; Kode program yang dimasukkan pada inisialisasi port digunakan sebagai deklarasi awal program pada arduino IDE untuk menentukan pin I/O analog maupun digital yang akan digunakan untuk menjalankan sistem alat. Seperti ditunjukkan pada coding program di atas. Kode program pada arduino IDE terdiri dari bagian utama dan bagian pendukung. Program bagian utama pada program arduino IDE adalah void 35
setup dan void loop. Void setup merupakan inisialisasi yang diperlukan sebelum program dijalankan. void setup() { pinmode(buttonreset,input); pinmode(buttonmundur,input); pinmode(buttonmaju,input); pinmode(limity_up,input_pullup); pinmode(posx,input_pullup); pinmode(posx2,input_pullup); pinmode(encoderpin1, INPUT); pinmode(encoderpin2, INPUT); pinmode (Xmin,OUTPUT); pinmode (Xplus,OUTPUT); pinmode (Xminmin,OUTPUT); pinmode (Xplusplus,OUTPUT); lcd.begin(16,2); lcd.print("start"); delay(1000); lcd.clear(); digitalwrite(xmin, LOW); digitalwrite(xplus, LOW); digitalwrite(xminmin, LOW); digitalwrite(xplusplus, LOW); digitalwrite(buttonreset, HIGH); digitalwrite(buttonmundur, HIGH); digitalwrite(buttonmaju, HIGH); digitalwrite(limity_up, HIGH); digitalwrite(posx, HIGH); digitalwrite(posx2, HIGH); digitalwrite(encoderpin1, HIGH); 36
digitalwrite(encoderpin2, HIGH); attachinterrupt(0, updateencoder, CHANGE); attachinterrupt(1, updateencoder, CHANGE); Serial.begin(9600); Serial3.begin(9600); posisi = true; sensor = false; slow = true; Sedangkan void loop merupakan fungsi utama yang dijalankan terus menerus selama modul arduino terhubung dengan power supply. void loop() { lcd.clear(); lcd.setcursor(0,0); lcd.print(setjarak); lcd.setcursor(0,1); lcd.print(encodervalue); delay(100); readbt(); delay(100); button(); delay(100); if(instring.toint()>=0&&speed=="bt"){xmove(); lsy(); if (instring == "111111111" ) { ref();instring =""; Didalam void loop terdapat program untuk menampilkan SetJarak {lcd.print(setjarak); yang merupakan nilai inputan untuk menggerakkan back gauge sesuai dengan nilai yang di masukkan dan menampilkan encodervalue {lcd.print(encodervalue); yang merupakan nilai dari pergerakan back gauge. 37
Kemudian akan ditampilkan program-program yang ada pada Void Loop : 1. Void readbt () / readbt(); dengan coding program berikut ini : void readbt() { if(instring.toint()==0){ while (Serial3.available()){ int inchar = Serial3.read(); if(isdigit(inchar)){instring+= (char) inchar; SetJarak = (instring.toint()); Speed="bt"; delay(100); Dalam void readbt dimaksudkan untuk menerima data yang dikirim dari windows yang selanjutnya data berupa angka akan ditampilkan di LCD sebagai Setjarak. 2. Void Xmove () / Xmove (); dengan coding program berikut ini : void Xmove(){ if(setjarak<encodervalue){ if(setjarak-encodervalue<-1500) { majucepat();speed="cepat" ; if(setjarak-encodervalue>-1500) {majupelan();speed="pelan" ; if(setjarak>encodervalue){ if(setjarak-encodervalue>1500) { mundurcepat();speed="cepat" ; if(setjarak-encodervalue<1500) {mundurpelan();speed="pelan" ; 38
Di program void Xmove ini dimaksudkan untuk pergerakan dari back gauge dengan asumsi apabila nilai Setjarak dikurangi nilai encodervalue kurang dari -1500 (nilai settingan jarak referensi back gauge ) maka back gauge akan bergerak maju dengan cepat. Sedangkan apabila nilai Setjarak dikurangi nilai encodervalue lebih besar dari 1500 maka back gauge akan bergerak mundur dengan cepat. Berikut ini coding program dari pergerakan pada Xmove : void majucepat() { berhenti(); digitalwrite(xmin,high); digitalwrite(xplusplus,high); digitalwrite(xminmin,high); void majupelan() { berhenti(); digitalwrite(xmin,high); digitalwrite(xminmin,high); void mundurcepat() { berhenti(); digitalwrite(xplus,high); digitalwrite(xplusplus,high); digitalwrite(xminmin,high); void mundurpelan() { berhenti(); digitalwrite(xplus,high); digitalwrite(xminmin,high); void berhenti() { digitalwrite(xplus,low); digitalwrite(xmin,low); digitalwrite(xminmin,low); digitalwrite(xplusplus,low);speed="pelan"; Dalam program pergerakan Xmove di setting ada 5 pergerakan dari back gauge yaitu gerak maju cepat, maju pelan, mundur cepat, mundur pelan, dan berhenti. 39
3. Void ref ( ) / ref (); dengan coding program berikut ini : void ref() { while(slow) { if(digitalread(posx2)==high) { mundurcepat(); delay(100); if(digitalread(posx2)==low) { mundurpelan(); slow =false; slow =true; while(posisi) { if(digitalread(posx)==high) { mundurpelan(); delay(100); if(digitalread(posx)==low) { berhenti(); posisi =false; posisi =true; SetJarak = 15000; encodervalue = 54500; Xmove(); Dalam program Void ref dimaksudkan untuk mereferensi dan sebagai pembacaan jarak awal saat pergerakan Back gauge dengan settingan Setjarak 15000 dan encodervalue 54500 dimana back gauge akan mundur dengan cepat sampai titik maksimal ( menyalakan sensor proximity yang jaraknya dari center punch sebesar 545 mm ) dan akan maju dengan cepat sampai jarak 150 mm dari titik center punch ( pembacaan Setjarak ) yang selanjutnya akan dijadikan referensi awal dari back gauge. 40
4. Void updateencoder (), dengan coding program berikut ini : a. Inisialisasi pin updateencoder : int encoderpin1 = 2; int encoderpin2 = 3; volatile int lastencoded = 0; volatile long encodervalue = 0; volatile long SetJarak=0; long lastencodervalue = 0; String gerak=""; int lastmsb = 0; int lastlsb = 0; int inbyte = 0; int serin; char serinstring[100]; int serinindx = 0; int seroutindx = 0; b. Void updateencoder : void updateencoder(){ int MSB = digitalread(encoderpin1); //MSB = most significant bit int LSB = digitalread(encoderpin2); //LSB = least significant bit int encoded = (MSB << 1) LSB; //converting the 2 pin value to single number int sum = (lastencoded << 2) encoded; //adding it to the previous encoded value if(sum == 0b1101 sum == 0b0100 sum == 0b0010 sum == 0b1011) encodervalue ++; if(sum == 0b1110 sum == 0b0111 sum == 0b0001 sum == 0b1000) encodervalue --; lastencoded = encoded; //store this value for next time Void updateencoder sendiri dimaksudkan sebagai program pembacaan dari putaran rotary encoder dan nilainya akan terbaca sebagai encodervalue. 41