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
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
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
a. Tipe standar berputarnya dibatasi sebesar 180° dan tipe ini sering
banyak dipakai pada sistem robotika seperti Arm Robot / Robot Lengan.
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
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
Gambar 4. Joystick
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.
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