Anda di halaman 1dari 12

LAPORAN PRAKTIKUM

PRAKTIKUM ROBOTIKA
“ROBOT LENGAN 3 DOF DENGAN JOYSTICK”

OLEH :
NAMA : Taufiq Riyandi
NIM : 2020203010049
KELAS : TRIK 4B

PROGRAM STUDI
TEKNOLOGI REKAYASA INSTRUMENTASI DAN KONTROL
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI LHOKSEUMAWE
2023
LEMBAR PENGESAHAN

Judul Praktikum : Robot Lengan 3 Dof dengan Joystick


No Praktikum : 03
Tanggal Praktikum : 05 /12 / 2023
Tanggal Penyerahan : 12/ 12 / 2023
Nama Mahasiswa : Teuku A’qil Azizi
Jurusan : Teknik Elektro
Prodi : Teknologi Rekayasa Instrumentasi dan Kontrol
Dosen Pembimbing : Aidi Finawan, SST, M. Eng
Nilai :

Dosen Pembimbing: Mahasiswa,

Aidi Finawan, SST, M. Eng. Teuku A’qil Azizi


NIP. 19740619 200012 1 003 NIM. 2020203010051
LABORATORIUM: ROBOTIKA
POLITEKNIK NEGERI LHOKSEUMAWE
PENGUJIAN: ROBOT LENGAN 3 DOF DENGAN JOYSTICK

I. Capaian Praktikum/Kompetensi
1. Dapat membangun robot lengan 3 DOF dengan joystick
2. Dapat melakukan pemrograman Arduino untuk interface joystick
3. Dapat melakukan pemrograman Arduino untuk gerakan robot lengan dengan
joystick

II. Keselamatan Kerja


1. Menggunakan pakaian praktikum dengan baik dan rapi
2. Sambungkan perangkat-perangkat yang digunakan sesuai dengan petunjuk
pembimbing praktikum
3. Jalankan sistem setelah mendapat izin dari pembimbing praktikum.

III. Teori
3.1 Motor Servo
Motor servo adalah komponen elektronika yang berupa motor
yang memiliki sistem feedback guna memberikan informasi posisi putaran
motor aktual yang diteruskan pada rangkaian kontrol mikrokontroler. Pada
dasarnya motor servo banyak digunakan sebagai aktuator yang
membutuhkan posisi putaran motor yang presisi. Apabila pada motor DC
biasa hanya dapat dikendalikan kecepatannya serta arah putaran, lain
halnya pada motor servo yaitu penambahan besaran parameter yang dapat
dikendalikan berdasarkan sudut/derajat. Komponen utama penyusun motor
servo antara lain motor DC, gear rasio, potensiometer serta controller
servo seperti gambar dibawah ini. Komponen potensiometer berfungsi
sebagai feedback besaran sudut menjadi data posisi aktual. Sedangkan
controller servo berfungsi memberikan sinyal – sinyal PWM (Pulse Width
Modulator) untuk menggerakan motor melalui kabel motor

Gambar 1. Konstruksi motor servo


Motor servo terdiri dari 2 tipe, yaitu:

a. Tipe standar berputarnya dibatasi sebesar 180° dan tipe ini sering
banyak dipakai pada sistem robotika seperti Arm Robot / Robot Lengan.

b. Tipe continuous mempunyai kriteria perputaran motornya sebesar


360°contoh aplikasinya pada mobil robot.

Setiap motor servo terdapat informasi identitas tipe servo pada bodi
motor tersebut. Secara standar, motor servo terdiri atas 3 kabel yaitu kabel
power / VCC, kabel GND serta kabel signal
Gambar 2. Bentuk motor servo

Motor servo dikendalikan dengan sinyal PWM dari


encoder/potentiometer. Lebar sinyal (pulsa) yang diberikan inilah yang
akan menentukan posisi sudut putaran dari poros motor servo. Sebagai
contoh, lebar sinyal dengan waktu 1,5 ms (mili second) akan memutar
poros motor servo ke posisi sudut 90⁰ . Bila sinyal lebih pendek dari 1,5
ms maka akan berputar ke arah posisi 0⁰ atau ke kiri (berlawanan dengan
arah jarum jam), sedangkan bila sinyal yang diberikan lebih lama dari 1,5
ms maka poros motor servo akan berputar ke arah posisi 180⁰ atau ke
kanan (searah jarum jam). Lebih jelasnya perhatikan gambar berikut ini:

Gambar 3. Bentuk sinyal PWM motor servo

Ketika sinyal PWM telah diberikan, maka poros motor servo akan
bergerak ke posisi yang telah ditargetkan dan berhenti pada posisi tersebut
serta akan tetap bertahan pada posisi tersebut. Jika ada kekuatan eksternal
yang mencoba memutar atau mengubah posisi tersebut, maka sistem
closed loop dari motor servo tersebut akan bekerja dengan mencoba
menahan atau melawan kekuatan eksternal tersebut dengan kekuatan
internal dari motor servo itu sendiri. Namun motor servo tidak akan
mempertahankan posisinya untuk selamanya, sinyal PWM harus diulang
setiap 20 ms (mili second) agar posisi poros motor servo tetap bertahan
pada posisinya.

3.2 Joystick

Joystick ini adalah joystick self-centering yang berpusat dengan


sendirinya, artinya ketika dilepaskan joystick itu akan memusatkan dengan
(Last Minute Engineers). Gambar 4.a menunjukkan bentuk joystick

Gambar 4. Joystick

Joystick ini berfungsi untuk mengkomunikasikan gerakan dalam


2D (2-axis) ke mikrokontroler seperti Arduino. Pada joystick terdapat dua
potensiometer 10K independen pada masing-masing sumbu.
Potensiometer ini digunakan sebagai pembagi tegangan yang dapat disetel
ganda, sehingga menyediakan input analog 2-Axis dalam bentuk stick
kontrol. Pada joystick ini juga terdapat sebuah tombol tekan yang aktif
saat menekan tutupnya. Bila keluaran joystick seperti pada gambar 2.5.b
dihubungkan pada masukan ADC pada Arduino yang memiliki resolusi 10
bit, maka nilai pada setiap saluran analog (sumbu) dapat bervariasi dari 0
hingga 1023. Jadi, jika tuas dipindahkan pada sumbu X dari satu ujung ke
ujung lainnya, nilai X akan berubah dari 0 hingga 1023 dan hal serupa
terjadi ketika dipindahkan di sepanjang sumbu Y. Ketika joystick berada
di posisi tengah, nilainya sekitar 512. Gambar 4.c. menunjukkan nilai
desimal ADC untuk setiap posisi joystick. Nilai desimal sinyal keluaran
Joystick pada posisi tengah dari sumbu X dan sumbu Y bisa mengalami
perbedaan nilai yang kecil. Hal ini dapat disebabkan oleh adanya
perbedaan kepekaan pada kedua potensiometer yang digunakan pada
sumbu X dan sumbu Y joystick (Finawan, dkk,2019).

Gambar 5. Rangkaian proteus

Program 1
#include
const int servo1 = 3; // first servo
const int servo2 = 10; // second servo
const int servo3 = 11; // third servo
const int joyX1 = A0;
const int joyY1 = A1;
const int joyX2 = A2;
int servoVal; // variable to read the value from the analog pin
Servo myservo1; // create servo object to control a servo 8
Servo myservo2; // create servo object to control a servo
Servo myservo3; // create servo object to control a servo
void setup() { // Servo
myservo1.attach(servo1); // attaches the servo
myservo2.attach(servo2); // attaches the servo
myservo3.attach(servo3); // attaches the servo
// Inizialize Serial Serial.begin(9600); }
void loop(){
// Display Joystick values using the serial monitor outputJoystick();
// Read the horizontal joystick value (value between 0 and 1023)
servoVal = analogRead(joyX1);
servoVal = map(servoVal, 0, 1023, 0, 160);
myservo2.write(servoVal);
delay(15);
// Read the horizontal joystick value (value between 0 and 1023)
servoVal = analogRead(joyY1);
servoVal = map(servoVal, 0, 1023, 0, 140);
myservo1.write(servoVal);
delay(15); // waits for the servo to get there
// Read the horizontal joystick value (value between 0 and 1023)
servoVal = analogRead(joyX2);
servoVal = map(servoVal, 0, 1023, 0, 180);
myservo3.write(servoVal);
delay(15); // waits for the servo to get there }
/**
* Display joystick values
*/
void outputJoystick() {
Serial.print(analogRead(joyX1));
Serial.print ("---");
Serial.print(analogRead(joyY1));
Serial.println ("----------------");
Serial.print(analogRead(joyX2));
Serial.println ("----------------");
}

Program 2
#include
const int servo1 = 3; // first servo
const int servo2 = 10; // second servo
const int servo3 = 11; // third servo
const int joyX1 = A0;
const int joyY1 = A1;
const int joyX2 = A2;
int servoVal1, servoVal2, servoVal3;
Servo myservo1; // create servo object to control a servo
Servo myservo2; // create servo object to control a servo
Servo myservo3; // create servo object to control a servo
int posServo1, posServo2, posServo3;
void setup() {
// Servo
myservo1.attach(servo1); // attaches the servo
myservo2.attach(servo2); // attaches the servo
myservo3.attach(servo3); // attaches the servo
posServo1=90;
posServo2=90;
posServo3=90;
myservo1.write(posServo1);
myservo2.write(posServo2);
myservo3.write(posServo3);
// Inizialize Serial
Serial.begin(9600); }
void loop(){
// Display Joystick values using the serial monitor outputJoystick();
// Read the horizontal joystick value (value between 0 and 1023)
servoVal1 = analogRead(joyX1);
servoVal1 = map(servoVal1, 0, 1023, 0, 100);
if (servoVal1>50) {
if (posServo2>180) posServo2= 180;
else posServo2= posServo2+10; }
if (servoVal150) 10 { if (posServo1>180) posServo1= 180;
else posServo1= posServo1+10; }
if (servoVal250) { if (posServo3>180) posServo3= 180;
else posServo3= posServo3+10; }
if (servoVal3<=0) posServo3= 0;
else posServo3= posServo3-10; }
myservo3.write(posServo3);
delay(15);
// waits for the servo to get there delay(1000); }
void outputJoystick() {
Serial.print (" X1= ");
Serial.print(servoVal1);
Serial.print (" S1= ");
Serial.print(posServo2);
Serial.print (" Y1= ");
Serial.print(servoVal2);
Serial.print (" S2= ");
Serial.print(posServo1);
Serial.print (" X2= ");
Serial.print(servoVal3);
Serial.print (" S3= ");
Serial.println(posServo3);
}
IV. Alat/Bahan
1. Komputer PC
2. Aplikasi Arduino.IDE,

V. Prosedur Praktikum
1. Merangkai rangkaian pada proteus seperti pada gambar 5.
2. Membuat program pada Arduino IDE sesuai dengan program pada modul
pembelajaran.
3. Menjalankan simulasi pada proteus dan mencatat hasil ke tabel hasil praktikum.

VI. Data Percobaan


Tabel 1. Data penguji sudut motor servo program 1
Data Desimal ADC Sudut Motor Servo
(serial monitor) (derajat)
RVX1 RVY1 RVX2 Motor1 Motor2 Motor3
0 0
512 85
1023 180
0 0
512 85
1023 180
0 0
512 85
1023 180

Tabel 2. Data pengujian sudut motor servo program 2


Potensiometer Data tampilan Terminal Sudut Servo
(serial monitor) (derajat)
X1 Y1 X2 X1 S1 Y1 S2 X2 S3 S1 S2 S3
50 50 90 86,8
51 51 91 86,8
50 50 91 86,8
49 49 88 81,2
50 50 88 81,3
51 51 91 86,8
50 50 88 81,3
49 49 88 81,3
50 50 91 86,8
51 51 91 87
50 50 91 86,8
49 49 88 81,3

VII. Analisa
Berdasarkan data hasil percobaan yang telah dilakukan ,dapat
disimpulkan bahwa pada pengujian program 1, ketika potensiometer pada
posisi 0%, maka motor servo tidak berputar atau dalam keadaan diam,
ketika potensiometer di geser ke posisi 50%, maka motor servo berputar
sebesar 85 derajat, ketika potensiometer pada posisi 100%, maka motor
servo berputar sebesar 180 derajat.
Pada pengujian program 2, ketika potensiometer pada posisi yang
telah ditentukan maka rentang sudut yang dihasilkan oleh motor servo
berkisar antara 81,2 – 87 derajat, sudut yang dihasil kan bervariasi pada
tiap potensiometer dan motor servo.

VIII. Kesimpulan
Berdasarkan hasil Analisa data yang telah dilakukan maka dapat
disimpulkan bahwa motor servo dapat berputar sesuai dengan program
ketika diberi sinyal pulsa dengan menggunakan potensiometer.

LAMPIRAN

Anda mungkin juga menyukai