Anda di halaman 1dari 9

LAPORAN LABORATORIUM MIKROPROSESOR

JOB : MOTOR SERVO

Oleh :

Wahyu Anantyo Akbar


19642005
D4-6A

KEMENTERIAN PENDIDIKAN , KEBUDAYAAN , RISET DAN TEKNOLOGI


POLITEKNIK NEGERI SAMARINDA
JURUSAN TEKNIK ELEKTRO
PROGRAM STUDI D4 TEKNIK LISTRIK
2022

Pengaturan Motor Servo 1


Motor Servo

I. Tujuan :
1. Mengetahui cara kerja motor servo
2. Mengetahui cara mengendalikan motor servo
3. Mengetahui algoritma pemrograman pengaturan motor servo

II. Teori :
Motor servo adalah perangkat yang banyak digunakan dalam pengaturan posisi.
Pada umumnya, sistem motor servo terdiri dari sebuah motor DC, potensiometer, dan
perangkat elektronik yang berupa error detection amplifier. Diagram blok rangkaian motor
servo ditunjukkan pada Gambar 1.

Sumber : qncctech.blogspot.com
Gambar 1 Diagram blok rangkaian motor servo

Ketika posisi yang diinginkan diberikan, error detection amplifier membandingka n


antara posisi yang diinginkan dengan posisi yang ditunjukkan oleh potensiometer. Selisih
atau perbedaan antara keduanya akan menyebabkan motor DC berputar ke arah yang
berbeda. Jika posisi yang dinginkan lebih besar daripada posisi yang ditunjukka n
potensiometer, maka putaran motor akan menuju ke satu arah (misalnya cw / clock wise /
searah dengan putaran jarum jam). Sebaliknya, jika posisi yang diinginkan lebih kecil
daripada posisi yang ditunjukkan potensiometer, maka motor akan berputar dengan arah
sebaliknya (misalnya ccw/ counter clock wise). Jika setelah perputaran, nilai posisi yang
diinginkan menjadi sama dengan nilai yang ditunjukkan potensiometer, motor akan
berhenti berputar.

Pengaturan Motor Servo 2


Bentuk motor servo yang tersedia di pasaran di antaranya seperti yang ditunjukka n
dalam Gambar 2. Perangkat motor servo tersebut sudah berisi komponen-komponen control
seperti yang ditunjukkan dalam Gambar 1. Pada perangkat tersebut, umumnya terdapat tiga
kabel masukan yang digunakan untuk menggerakkan motor. Masing-masing adalah untuk
tegangan Vcc, 0 V, dan control. Untuk motor servo semacam ini, sinyal kotrol biasanya
berupa sinyal pulse width modulation (PWM). Jika diberikan sinyal kontrol, rotor akan
berputar dengan lebar sudut tertentu.

Gambar 2 Salah satu bentuk motor servo

Selain menggunakan motor servo seperti pada Gambar 2, mekanisme motor servo
juga bisa dibentuk dengan menggunakan sebuah motor DC dan sebuah potensiome ter.
Dengan cara ini, perangkat error detection amplifier sebagaimana yang ditunjukkan dalam
Gambar 1 bisa direalisasikan dengan menggunakan Arduino. Mekanisme tersebut terdapat
pada lengan robot eurobtec R5 yang tampilannya ditunjukkan dalam Gambar 3. Lengan
robot Eurobtec R5 mempunyai 5 sendi (5 derajat kebebasan) dan sebuah grip. Tiga
sendinya (base, shoulder, dan elbow), masing-masing digerakkan oleh sebuah motor DC
6V. Tiap sendi tersebut juga dilengkapi oleh potensiometer untuk mendeteksi posisi sendi.

Gambar 3 Lengan robot Eurobtec R5

Pengaturan Motor Servo 3


Untuk mengatur motor DC dan membaca nilai potensiometer pada sendinya, robot
Eurobtec R5 menyediakan soket female 6 pin seperti yang ditunjukkan pada Gambar 4.
Tiga pin yang terletak pada sisi atas terkoneksi dengan potensiometer, sementara dua pin
yang terletak di sisi berlawanan mempunyai koneksi dengan motor.

Gambar 4 Soket female pada robot Eurobtec R5

III. Alat Percobaan :


 Komputer atau Laptop
 Board Arduino Uno
 Board Arduino Mega
 Kabel USB
 Mikro servo
 Lengan robot Eurobtec R5
 Kabel penghubung

IV. Langkah Percobaan :


1. Buat rangkaian kontrol motor servo seperti ditunjukkan dalam Gambar 5.

2. Tuliskan program seperti di bawah ini. Jika dalam library belum terdapat modul
servo, downloadlah dengan cara memilih Tools, dilanjutkan dengan Manage
Library.

Pengaturan Motor Servo 4


#include <Servo.h>

Servo myservo;
int pos = 0; // deklarasi dan inisialisasi posisi servo pada sudut 0 derajat

void setup(){
myservo.attach(3); // kontrol servo pada pin no 3
}

void loop(){
myservo.write(pos);
}

3. Amati apa yang terjadi pada lengan motor servo.


4. Ubahlah program sehingga lengan motor berputar pada sudut 180 derajat.
5. Tuliskan program tersebut.
6. Buatlah program yang dapat menggerakkan lengan motor dari 0 ke 180 derajat,
bolak-balik sebanyak 3 kali.
7. Untuk percobaan kedua, hubungkan Arduino Uno yang terdapat pada lengan robot
dengan computer menggunakan kabel USB. Rangkaian control diberi tegangan
sebesar 6 V DC. Kelebihan tegangan akan menyebabkan motor terbakar.
8. Tuliskan program berikut pada editor IDE.
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(115200);
}

// the loop routine runs over and over again forever:


void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A1);
// print out the value you read:
Serial.println(sensorValue);
delay(1); // delay in between reads for stability
}
9. Compile dan upload program ke board Arduino Uno
10. Buatlah program untuk menggerakkan motor servo dengan menggunakan
potensiometer.

V. Data Hasil Percobaan dan Analisa :


Percobaan 1
Pada percobaan ini, diperintahkan untuk meng-compile dan meng-upload program
yang sudah ada di modul praktik pada aplikasi arduino IDE. Setelahnya didapat hasil
gerakan motor servo yang akan menggerakan servo pada titik 0-nya. Library yang
digunakan untuk mengakses motor servo adalah “Servo.h”, dan untuk menggunakan

Pengaturan Motor Servo 5


library ini digunakan program “#include <Servo.h>”. Untuk menginisialisasi pin
arduino yang terhubung dengan motor servo maka digunakan program " myservo.attach(3 );
“, sehingga motor servo yang terhubung dengan pin 3 arduino yang akan bergerak. Pada
program contoh ini, servo yang terhubung pada pin 3 dinamai myservo, hal ini diketahui
berdasarkan program “Servo myservo;”.

Percobaan 2
#include <Servo.h>

Servo myservo;
int deg = 180; // deklarasi dan inisialisasi posisi servo pada sudut 0
derajat

void setup(){
myservo.attach(3); // kontrol servo pada pin no 3
}

void loop(){
myservo.write(de
g);
}
Program diatas telah bergerak sesuai dengan perintah yang diinginkan, yaitu motor akan
bergerak 180 derajat. Pergerakan ini dikarenakan adanya baris program
“myservo.write(deg);” dimana variabel deg bernilai 180.

Percobaan 3
#include <Servo.h>

Servo myservo;
int pos = 0; // deklarasi dan inisialisasi posisi servo pada sudut 0 derajat

void setup(){
myservo.attach(3); // kontrol servo pada pin no 3
}

Pengaturan Motor Servo 6


void loop(){
for (pos = 0; pos <= 180; pos += 1) {//start dari 0 derajat sampai 180 derajat
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {//start dari 180 derajat sampai ke 0 derajat
myservo.write(pos);
delay(5);
}
}
Setelah program diatas diupload maka akan dihasilkan gerakan motor servo yang akan
bergerak dari 0 derajat ke 180 derajat secara berulang- ulang. Motor servo akan bergerak
tiap 1 derajatnya dengan selang waktu 5 milisecond. Hal tersebut dikarenakan adanya for
loop yang digunakan pada program. Maksud dari program “for (pos = 0; pos <= 180; pos
+= 1)” adalah ketika variabel pos bernilai 0 derajat dan selama variabel pos kurang dari
sama dengan 180, maka variabel pos akan bertambah 1 secara berulang ulang.

Percobaan 4
#include <Servo.h>

Servo myservo;
int pos = 0; // deklarasi dan inisialisasi posisi
servo pada sudut 0 derajat int kali = 3;

void setup(){
myservo.attach(3); // kontrol servo pada
pin no 3 myservo.write(0);
}

void
loop(){
if(kali!=
0){
for (pos = 0; pos <= 180; pos += 1) {//start dari 0 derajat sampai 180
derajat myservo.write(pos);
delay(5);

Pengaturan Motor Servo 7


}
for (pos = 180; pos >= 0; pos -= 1) {//start dari 180 derajat
sampai ke 0 derajat myservo.write(pos);
delay(5);
}
kali = kali-1;
}
else{
myservo.write(
0);
}
}
Program diatas ketika telah di-upload maka akan menghasilkan gerakan motor servo yang
bergerak dari 0 derajat ke 180 derajat dan kembali lagi ke 0 derajat sebanyak 3 kali. Karena
variabel kali bernilai 3 dan Program “if(kali !=0)” dan juga “kali=kali-1” mengakiba tka n
program yang ada didalam statement if akan diulangi sebanyak 3 kali dan nilai variabel kali
akan terus berkurang 1. Hal tersebut mengakibatkan motor servo bergerak dari 0 derajat ke
180 derajat dan kembali lagi ke 0 derajat sebanyak 3 kali. Setelah varibel kali bernilai 0,
maka program else{
myservo.write(0);
}
Akan mengakibatkan motor servo berhenti bergerak pada posisi 0 derajat.

Percobaan 5
#include <Servo.h>

Servo myservo;
int pot; // analog pin yang digunakan
potensiometer int derajat;

void setup(){
myservo.attach(3); // kontrol servo pada pin no 3
}

void loop(){

Pengaturan Motor Servo 8


pot = analogRead(A0);// pembaca nilai dari
potensiometer derajat = map(pot, 0, 1023, 0,
180); myservo.write(derajat);
delay(15);
}
Ketika program di atas diupload ke arduino, maka akan menghasilkan gerakan motor servo
yang dapat dikontrol dengan menggunakan potensiometer. Jadi arduino akan membaca
nilai ADC yang terdapat di pin A0, dan menyimpan angka tersebut pada variabel pot.
Setelah itu arduino akan mengkonversi angka yang ada di variabel pot yang semula
memiliki range 0-1023 menjadi 0-180, kemudian menyimpannya pada variabel derajat.
Proses konversi angka itu dilakukan oleh program “ derajat = map(pot, 0, 1023, 0, 180);”.
Lalu yang mengakibatkan motor servo bergerak adalah karena program
“myservo.write(derajat);”, sehingga arduino akan menggerakkan lengan motor ke derajat
yang sesuai dengan yang ada pada variabel derajat. Delay 15 milisecond digunakan untuk
menunggu motor servo sampai pada derajat yang diingini.

VI. Kesimpulan :
Dari percobaan yang telah dilakukan dapat disimpulkan bahwa gerakan lengan
motor servo dapat diatur dengan menggunakan arduino yang telah diprogram sesuai dengan
kebutuhan dan deskripsi kerjanya. Selain itu motor servo juga dapat diprogram dan
digerakkan dengan menggunakan potensiometer sesuai pengaturan batas atas dan batas
bawah potensiometer kemudian nilai ADC dari potensiometer perlu diubah agar
mendapatkan range yang sesuai (0 sampai 180).

Pengaturan Motor Servo 9

Anda mungkin juga menyukai