Motor Servo Dengan Arduino
Motor Servo Dengan Arduino
NPM : 1857201006
Prodi : Sistem Informasi
Mata Kuliah : ROBOTIK
RESUME
Cara mengakses Motor Servo menggunakan Arduino
1. Pengertian
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.
Adanya komponen potensiometer difungsikan sebagai feedback nilai yang akan diolah menjadi
data posisi aktual.
Sedangkan fungsi dari controller servo yaitu memberikan sinyal – sinyal PWM (Pulse Width
Modulator) untuk menggerakan motor melalui kabel motor.
Macam tipe – tipe dari motor servo ini ada 2 yaitu tipe standard dan tipe Continous.
Tipe standar berputarnya dibatasi sebesar 180° dan tipe ini sering banyak dipakai pada
sistem robotika seperti Arm Robot / Robot Lengan.
Tipe continuous mempunyai kriteria perputaran motornya sebesar 360°contoh aplikasinya
pada mobil robot.
Pada setiap body servo terdapat informasi akan identitas tipe servo tersebut. Secara standar,
motor servo terdiri atas 3 kabel yaitu kabel power / VCC, kabel GND serta kabel signal.
Pada tutorial kali ini akan dicontohkan eksperimen dengan motor servo jenis mikro yang
banyak dijual di pasaran dengan harga terjangkau.
Motor servo ini disebut micro servo dikarenakan ukurannya yang kecil dan memutuhkan
tegangan atau arus yang kecil pula.
Arduino Uno
Komputer + Software IDE Arduino
Micro Servo
Kabel Jumpe
Keterangan :
Keterangan program :
Untuk progam di atas, sudut putaran yang dapat dituju maksimal yaitu 180°.
Sehingga menjadi batasan range posisi derajat yang dapat digunakan yaitu 0 – 180°.
Dengan menggunakan servo ini sudah tidak berbicara lagi mengenai putar searah (Clock Wise)
atau berlawanan arah jarum jam (Clock Counter Wise) tapi sudut 0, 45, 90 dan seterusnya
sampai dengan 180.
Apabila ingin mendapatkan posisi 90° dan bergerak berlawanan arah jarum jam maka
dituliskan perintah myservo.write (90); setelah itu dituliskan myservo.write (0);.
Akan tetapi jika ingin mendapatkan posisi 90° dan serarah jarum jam maka
dituliskan perintah myservo.write (90); setelah itu dituliskan perintah myservo.write (180);.
Jadi posisi 0 s.d 180 sudah ditentukan oleh kontroller internal motor servo, dan cukup dengan
memberikan perintah pada sudut mana motor akan berputar melalui perintah myservo.write
(derajat)
Cara merakit ROBOT ARM
Lengan Robot atau biasa disebut Robotic Arm adalah jenis lengan mekanik yang kemudian
di program dengan fungsi mirip dengan lengan manusia. Lengan merupakan jumlah total
mekanisme atau bagian dari robot yang lebih kompleks. Dalam project ini kami membuat robotic
arm yang berfungsi untuk memindahkan benda-benda yang berdiameter 3cm dari tempat satu
kesisi tempat lain, dengan dikendalikan oleh joystick. Untuk membuat robotic arm dibutuhkan
alat dan bahan sebagai berikut :
3 Buah Servo
1 Buah micro servo
1 Buah bread board
1 Buah Arduino
Jumper Secukupnya
Kabel USB
Baterai 9 Volt
Kawat Besi
2 Joyatick module
Setelah menyiapkan semua alat dan bahan yang dibutuhkan maka langkah pertama yang
harus dilakukan adalah membuat sketsa dan modelling. Sketsa di buat menggunakan aplikasi
solidwork untuk gambaran bentuk sebuah kerangkan penyusun Robotic Arm. Di langkah tahap
satu ini adalah tahap yang cukup panjang karena perbagian kita bikin satu per satu agar setiap
bagian bisa merakit sebuah kerangka utuh berbentuk Arm. Setelah membuat kerangka yang akan
disusun kemudian tahap selanjutnya yaitu mebuat joystick yang digunkan untuk mengendalikan
Robotic Arm dengan menggunakan dua buah tombol untuk mengkontrol gerak Robotic Arm.
Agar sketsa yang kita buat menjadi bentuk yang nyata yaitu kita perlu mencetaknya dengan 3D
printing.
Bagian terbaik dari produksi alat ini adalah perakitan, karena di bagian ini selain merakit
kerangka kita juga memasang servo di setiap bagian yang telah ditentukan,
setelah pemasangan servo setiap bagian selesai hal yang membutuhkan sebuah ketelatenan
yaitu memasang kawat besi yang digunakan untuk menghubungkan servo ke bagian kerangka
atau bagan arm robot. Agar bagan arm robot bisa bergerak karena servo, hal yang harus
dilakukan adalah membuat program didalam servo tersebut menggunakan arduino. Kemudian
setelah perakitan selesai yang dilakukan adalah membuat program dan PCB.Yang mana
pemrograman tersebut menggunakan aplikasi arduino dan sebelum mebuat PCB langkah yang
dilakukan adalah membuat skematik pada aplikasi eagle ,setelah skematik sudah dibuat langkah
berikut nya adalah mencetak skematik tersebut dan menyetrikanya di atas PCB agar jalur nya
menempel. Setelah menempelkan skematik pada PCB yaitu melakukan pengeboran yang
bertujuan untuk melubangi PCB agar komponen yang telah disiapkan bisa dipasasang sesuai
jalur skematik pada PCB, lakukanlah penyolderan saat semua komponen pada PCB sudah
terpasang agar komponen tersebut tidak mudah lepas.
Bukan hanya servo yang di program agar bisa menggerakan kerangka tetapi joystick juga di
program di arduino agar bisa mengkontrol gerak dari srvo tersebut, dalam hal ini program uang
di buat oleh kelompok kami adalah sebagai berikut:
#include <Servo.h>
Servo servo1;//servo1 kanan-kiri
Servo servo2;//servo2 atas-bawah lengan
Servo servo3;//servo3 naik-turun tangan
Servo servo4;//servo4 buka-tutup capit
int joyXkanan = 0;
int valjoyXkanan;
int posisisatu = 0;
int joyYkanan = 1;
int valjoyYkanan;
int posisidua = 0;
int joyXkiri = 2;
int valjoyXkiri;
int posisitiga = 0;
int joyYkiri = 3;
int valjoyYkiri;
int posisiempat = 0;
int DELAY = 100;
int RANGE = 2 ;
void setup() {
Serial.begin(9600);
servo1.attach(3);
servo2.attach(5);
servo3.attach(6);
servo4.attach(9);
}
void loop() {
valjoyXkanan = analogRead(joyXkanan);
valjoyXkanan = map(valjoyXkanan, 0, 1023, 0, 180);
if (valjoyXkanan >= 100)
posisisatu = posisisatu + RANGE;
if (posisisatu >= 177)posisisatu = 177;
//maka nilai yang lebih besar akan = 177,
servo1.write(posisisatu); delay(DELAY);
Serial.println(posisisatu);
Serial.print(“\t”);
//pembacaan pada serial monitor
if (valjoyXkanan <= 80)
posisisatu = posisisatu – RANGE;
if (posisisatu <= 0)posisisatu = 0;
servo1.write(posisisatu); delay(DELAY);
Serial.println(posisisatu);
Serial.print(“\t \t”);
valjoyYkanan = analogRead(joyYkanan);
valjoyYkanan = map(valjoyYkanan, 0, 1023, 0, 180);
if (valjoyYkanan >= 100)
posisidua = posisidua + RANGE;
if (posisidua >= 143)posisidua = 143;
servo2.write(posisidua); delay(DELAY);
Serial.println(posisidua);
if (valjoyYkanan <= 80)
posisidua = posisidua – RANGE;
if (posisidua <= 0)posisidua = 0;
servo2.write(posisidua); delay(DELAY);
Serial.println(posisidua);
Serial.print(“\t \t \t”);
valjoyXkiri = analogRead(joyXkiri);
valjoyXkiri = map(valjoyXkiri, 0, 1023, 0, 180);
if (valjoyXkiri >= 100)
posisitiga = posisitiga + RANGE;
if (posisitiga >= 180)posisitiga = 180;
servo3.write(posisitiga); delay(DELAY);
Serial.println(posisitiga);
Serial.print(“\t \t \t \t”);
if (valjoyXkiri <= 80)
posisitiga = posisitiga – RANGE;
if (posisitiga <= 75)posisitiga = 75;
servo3.write(posisitiga); delay(DELAY);
Serial.println(posisitiga);
Serial.print(“\t \t \t \t \t”);
valjoyYkiri = analogRead(joyYkiri);
valjoyYkiri = map(valjoyYkiri, 0, 1023, 0, 180);
if (valjoyYkiri >= 100)
posisiempat = posisiempat + RANGE;
if (posisiempat >= 180)posisiempat = 180;
servo4.write(posisiempat); delay(DELAY);
Serial.println(posisiempat);
Serial.print(“\t \t \t \t \t \t”);
if (valjoyYkiri <= 80)
posisiempat = posisiempat – RANGE;
if (posisiempat <= 36)posisiempat = 36;
servo4.write(posisiempat); delay(DELAY);
Serial.println(posisiempat);Serial.print(“\t \t \t \t \t \t \t”);
}