• Tidak ada hasil yang ditemukan

BAB V KESIMPULAN

5.2 Saran

BAB V

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Setelah melakukan perancangan, pembuatan, dan pengujian pada aplikasi kontroler lengan robot menggunakan motor servo dan motor stepper dengan masukan 3 axisdapat diambil kesimpulan sebagai berikut :

1. Aplikasi ini dapat menerjemahkan g-code, G00, G01, X## Y## Z## menjadi gerakan pada motor stepper.

2. Aplikasi ini dapat mengendalikan 3 motor stepper dengan input masukan step melalui Interface Visual Basic 6.0.

3. Aplikasi ini dapat menyimpan posisi lama pada step motor stepper X dan motor stepper Y dalam fungsi G00.

4. Pergerakan motor stepper X dan motor stepper Y menggunakan algoritma bresenham sebagai metode pemograman.

5.2. SARAN

Berdasarkan hasil implementasi yang diperoleh untuk pengembangan penelitian lebih lanjut ada beberapa saran agar alat ini dapat bekerja lebih baik, yaitu :

1. Menambah kemampuan kontroler lengan robot untuk inisialisasi perintah Gcode, 2. Pemograman dapat mengkonversi nilai masukan step ke dalam koordinat supaya

masukan robot dapat berupa titik koordinat bukan berupa nilai step.

3. Algoritma pemograman disesuiakan untuk aplikasi lengan robot dengan gerakan berdasarkan sumbu X,Y,Z secara continuous.

DAFTAR PUTAKA

1. http://students.stthamzanwadi.ac.id/salihin/2016/01/07/sejarah-dan-perkembangan-robot-di-dunia-dan-indonesia/

diakses pada tanggal10 februari 2016

2. ----, ----, kelas mikrokontroler, http://www.kelas-mikrokontrol.com/ Diakses pada 15 februari 2016

3. Artanto, Dian, 2012, Interaksi Arduino dan LabVIEW, 1st, PT Elex Media komputindo,Jakrta

4. http://febriadisantosa.weebly.com/knowledge/arduino-uno 5. ----, ----, Board Arduino Uno.

http;//arduino.cc/en/Main/ArduinoBoardUno. diakses pada tanggal 16 februari 2016

6. ----, ----, Arduino Uno,

http://febriadisantosa.weebly.com/2/post/2013/05/arduino-uno.html diakses pada tanggal 16 februari 2016

7. Kadir, Abdul, 2013, Panduan Praktis Mempelajari Aplikasi Mikrontroler dan pemogramannya Menggunakan Arduino, Andi Offeset, Yogyakarta

8. ----, ----, Software Arduino (Arduino IDE),

http://pikirsa.wordpress.com/2011/11/20/memanfaatkan-arduino-ide-tanpa-arduino board/

diakes pada tanggal 1 maret 2016 9. ----, ----,Teori Motor Stepper

http://zonaelektro.net/motor-stepper/ diakses pada 8 maret 2016

10.----, ----, GY-4988 A4988 3D Printer Stepper Motor Driver Module

http://www.dx.com/p/gy-4988-a4988-3d-printer-stepper-motor-driver-module-272515#.V3uGPSLD_1U

diakses pada tanggal 25 juni 2016 11. ----, ----, Motor Servo,

55

http://elektronika-dasar.web.id/teori-elektronika/motor-servo/ diakses pada tanggal 22 maret 2016

12.http://www.kodiing.com/2015/05/turorial-1-memulai-vb6.html/ Diakses pada tanggal 30 Juni 2016

L3

LISTING PROGRAM

L1. Listing Program Keseluruhan Pada Software Arduino IDE.

#define step_pin1 3 // Pin 3 dikoneksikan ke pin step pada driver 1

#define dir_pin1 2 // Pin 2 dikoneksikan ke Direction pin

#define step_pin2 7 // Pin 7 dikoneksikan ke pin step pada driver 2 #define dir_pin2 8 // Pin 8 dikoneksikan ke Direction pin

#define step_pin3 10 // Pin 10 dikoneksikan ke pin step pada driver 3 #define dir_pin3 11 // Pin 11 dikoneksikan ke Direction pin

#define MS1 5 // Pin 5 dikoneksikan ke MS1 pin #define MS2 4 // Pin 4 dikoneksikan ke MS2 pin #define MS3 6 // Pin 6 dikoneksikan ke MS3 pin

int a = 0; int b = 0; int c = 0; int Gcode = 0; int NstepX = 0; int NstepY = 0; int NstepZ = 0; int Speed = 0; int dx; int dy; int pk; void setup() { Serial.begin(9600);

pinMode(MS1, OUTPUT); pinMode(MS2, OUTPUT); pinMode(MS3, OUTPUT); pinMode(9,OUTPUT); //Enable pinMode(dir_pin1 , OUTPUT); pinMode(step_pin1, OUTPUT); pinMode(dir_pin2 , OUTPUT); pinMode(step_pin2, OUTPUT); pinMode(dir_pin3 , OUTPUT); pinMode(step_pin3, OUTPUT); digitalWrite(9,HIGH);

delay(1); // Delay menunggu driver aktif /* Konfigurasi step pada driver:

// MS1 MS2 MS3

// LOW LOW LOW = Full step // // HIGH LOW LOW = Half step // // LOW HIGH LOW = 1/4 step // // HIGH HIGH LOW = 1/8 step // // LOW LOW HIGH = 1/16 step // // HIGH HIGH HIGH = 1/32 step // */

digitalWrite(MS1, LOW); // konfigurasi 1/32 step digitalWrite(MS2, LOW); // konfigurasi 1/32 step digitalWrite(MS3, LOW); // konfigurasi 1/32 step

Serial.println("Device Ready..."); // }

void loop(){

// get incoming integer:

Gcode = Serial.parseInt(); // membaca integer pertama NstepX = Serial.parseInt(); // membaca integer kedua NstepY = Serial.parseInt(); // membaca integer ketiga NstepZ = Serial.parseInt(); // membaca integer keempat Speed = Serial.parseInt(); // membaca integer kelima

Serial.print(" G0"); // Serial.print(Gcode); // Serial.print(" X"); // Serial.print(NstepX); //

Serial.print(" Y"); // menampilkan kembali data serial yang diterima Serial.print(NstepY); // Serial.print(" Z"); // Serial.print(NstepZ); // Serial.print(" f"); // Serial.println(Speed);// dx = abs(NstepX); dy = abs(NstepY); pk = 2*dy - dx; switch(Gcode) { case 0 : G00(); break; case 1 : G01(); break; } Serial.println("OK!"); //

} }

void translateDirection(){ // mengatur arah putaran stepper berdasarkan nilai positif / negatif if (NstepX > 0){digitalWrite(dir_pin1, LOW);} // direction CW

if (NstepY > 0){digitalWrite(dir_pin2, LOW);} // direction CW if (NstepZ > 0){digitalWrite(dir_pin3, LOW);} // direction CW

if (NstepX < 0){digitalWrite(dir_pin1, HIGH);} // direction CCW if (NstepY < 0){digitalWrite(dir_pin2, HIGH);} // direction CCW if (NstepZ < 0){digitalWrite(dir_pin3, HIGH);} // direction CCW }

void steperX(){ //stepper 1

digitalWrite(9,LOW); // enable stepper on if( a < abs(NstepX)) //

{

a++; // menghitung siklus step translateDirection(); digitalWrite(step_pin1, HIGH); delay(Speed); digitalWrite(step_pin1, LOW); delay(Speed); Serial.print("X = "); Serial.println(a); }

else{ a = 0; NstepX = 0; } // jika kondisi a diluar dari kondisi kurang dari NstepX maka a dan NstepX sama dengan Nol

digitalWrite(9,HIGH); // enable stepper off }

void steperY(){ //stepper 2

digitalWrite(9,LOW); // enable stepper on if( b < abs(NstepY))

{

b++; // menghitung siklus Step translateDirection(); digitalWrite(step_pin2, HIGH); delay(Speed); digitalWrite(step_pin2, LOW); delay(Speed); Serial.print("Y = "); Serial.println(b); }

else{ b = 0; NstepY = 0; } // jika kondisi b diluar dari kondisi kurang dari NstepY maka b dan NstepY sama dengan Nol

digitalWrite(9,HIGH); // enable stepper off }

void steperZ(){ //stepper 3

digitalWrite(9,LOW); // enable stepper on if( c < abs(NstepZ))

{

c++; // menghitung siklus step translateDirection(); digitalWrite(step_pin3, HIGH); delay(Speed); digitalWrite(step_pin3, LOW); delay(Speed); Serial.print("Z = ");

Serial.println(c); }

else{ c = 0; NstepZ = 0; } // jika kondisi c diluar dari kondisi kurang dari NstepZ maka c dan NstepZ sama dengan Nol

digitalWrite(9,HIGH); // enable stepper off } void G00(){ Speed = 2; if( c < abs(NstepZ)){ steperZ(); G00(); } if(a < abs(NstepX)){ steperX(); G00(); } if(b < abs(NstepY)){ steperY(); G00(); } { if (G00); Gcode = 0; // NstepX = 0; // NstepY = 0; //

NstepZ = 0; // untuk mempersiapkan data baru dan mereset data kembali ke Nol Speed = 0; // untuk menghindari proses looping

a = 0; // b = 0; // c = 0; // }

} void G01(){ if( c < abs(NstepZ)){ steperZ(); G01(); }

if (pk > 0){ pk = pk + (2*dy - 2*dx); steperX(); steperY();} if (pk <= 0){ pk = pk + (2*dy); steperX();}

// steperZ();

if(a < abs(NstepX) || b < abs(NstepY)){ G01();} digitalWrite(9,LOW); // enable stepper on if( c > 1)

{

c--; // menghitung siklus step

if (NstepZ < 0){digitalWrite(dir_pin3, LOW);} // direction CW if (NstepZ > 0){digitalWrite(dir_pin3, HIGH);} // direction CCW digitalWrite(step_pin3, HIGH); delay(Speed); digitalWrite(step_pin3, LOW); delay(Speed); Serial.print("Z = "); Serial.println(c); }

else{ c = 0; NstepZ = 0; } // jika kondisi c diluar dari kondisi kurang dari NstepZ maka c dan NstepZ sama dengan Nol

digitalWrite(9,HIGH); // enable stepper off }

L2.Listing Program Keseluruhan Pada Software Visual Basic 6.0.

Dim a As Integer

Dim b As String

Private Sub Command1_Click() 'tombol connect Dim port As Integer

On Error GoTo errcode

a = a + 1

If a = 3 Then a = 1

Select Case Combo1.ListIndex Case -1 port = 1 Case 0 port = 1 Case 1 port = 2 Case 2 port = 3 Case 3 port = 4 Case 4 port = 5 Case 5 port = 6 Case 6 port = 7 Case 7 port = 8 Case 8 port = 9

End Select

If a = 1 Then

With MSComm1 'membuka komunikasi serial If .PortOpen Then .PortOpen = False

.CommPort = port

.Settings = Combo2.List(Combo2.ListIndex) & ",N,8,1" .DTREnable = True .RTSEnable = True .RThreshold = 1 .SThreshold = 0 .PortOpen = True End With Command1.Caption = "disconnect" End If If a = 2 Then

MSComm1.PortOpen = False 'mematikan komunikasi serial Command1.Caption = "connect" End If Exit Sub errcode:

MsgBox "Port Salah !", vbOKOnly, "Peringatan" Combo1.SetFocus

End Sub

Private Sub Command2_Click() 'tombol Go If Combo3.Text = "bebas" Then b = "G00"

If Combo3.Text = "feed" Then b = "G01" If Combo3.Text = "cw" Then b = "G02"

If Combo3.Text = "ccw" Then b = "G03"

Text5.Text = Text5.Text & vbCrLf + b + " " + "X" + Text1.Text + " " + "Y" + Text2.Text + " " + "Z" + Text3.Text + " " + "f" + Text4.Text

MSComm1.Output = b + " " + "X" + Text1.Text + " " + "Y" + Text2.Text + " " + "Z" + Text3.Text + " " + "f" + Text4.Text

End Sub

Private Sub Command3_Click() 'tombol exit End

End Sub

Private Sub Command5_Click() 'tombol clear Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Combo3.Text = "" End Sub

Private Sub Form_Load() With Combo1

.AddItem "COM1" 'mengisi list item pada combo list. .AddItem "COM2" .AddItem "COM3" .AddItem "COM4" .AddItem "COM5" .AddItem "COM6" .AddItem "COM7" .AddItem "COM8" .AddItem "COM9" End With

With Combo2 .AddItem "2400" .AddItem "4800" .AddItem "9600" .AddItem "19200" .AddItem "38400" .AddItem "56600" End With Combo3.AddItem "bebas" Combo3.AddItem "feed" Combo3.AddItem "cw" Combo3.AddItem "ccw" End Sub

Private Sub Form_Unload(Cancel As Integer)

If MSComm1.PortOpen Then MSComm1.PortOpen = False 'mematikan komunikasi serial saat keluar dari apliksi

L4

Dokumen terkait