1. Pengertian
Apa itu Servo? Servo adalah motor listrik seperti halnya DC motor, yang membedakannya dengan motor lain adalah sudut putaran motor servo dapat diatur secara presisi dengan menggunakan mikrokontroller. Ada beberapa jenis dari motor servo, motor servo standard hanya dapat berputar 180 derajat baik searah maupun berlawanan arah jarum jam, ada juga motor servo yang dapat berputar 360 derajat dan berputar secara terus-menerus(continuous).
Motor servo tersusun atas motor DC, gear pereduksi kecepatan, alat pendeteksi posisi (biasanya potensiometer/encoder), dan sebuah sirkuit kendali. Servo terhubung menggunakan tiga kabel, kabel merah adalah Vcc, kabel hitam adalah ground, dan kabel orange/kuning adalah PWM.
Gambar 1. Diagram Motor Servo
Cara kerja dari motor servo adalah pertama servo akan menerima sinyal yang berisi informasi tentang posisi servo yang diinginkan, sinyal ini menggunakan sinyal PWM, lalu servo akan menerjemahkan sinyal tersebut sebagai perintah untuk bergerak ke posisi yang diinginkan. Servo menggunakan alat pendeteksi posisi untuk menentukan posisi rotasional pada poros, sehingga motor dapat mengetahui kemana posisi yang diperintahkan harus dituju.
Motor servo banyak digunakan sebagai actuator pada berbagai jenis aplikasi, seperti pada mesin pabrik, juga untuk membelokkan roda pada RC Car, dan banyak digunakan pada robot.
Gambar 2. Pengaplikasian Motor Servo
2. Mengoperasikan Servo menggunakan Arduino
Mari kita coba mengoperasikan motor servo dengan menggunakan Arduino. Pertama kita buat rangkaian elektronik seperti pada Gambar 3 di bawah ini. Lalu terapkan program yang tersedia di bawah, atau bisa dengan menggunakan program Example pada Arduino IDE dengan nama “Sweep” pada menu servo.
Gambar 3. Diagram Kelistrikan Servo
#include <Servo.h>
Servo servo1; // membuat objek servo
int pos = 0; // variabel posisi servo
void setup() {
servo1.attach(9); // menghubungkan servo dengan pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) {
// in steps of 1 degree
servo1.write(pos); // memberi tahu servo untuk bejalan ke sudut 'pos'
delay(15); // delay 15ms
}
for (pos = 180; pos >= 0; pos -= 1) {
servo1.write(pos); // memberi tahu servo untuk bejalan ke sudut 'pos'
delay(15); // delay 15ms
}
}
Untuk bisa menjalankan servo pada Arduino, pertama kita harus mengimpor library “Servo.h”. Library ini berisi perintah-perintah untuk menjalankan servo. Selanjutnya kita buat objek servo untuk mengidentifikasikan servo yang terhubung, ini berguna jika kita bekerja dengan 2 atau lebih servo. Kita beri nama servo kita “servo1”. Selanjutnya kita hubungkan servo dengan pin 9 pada Arduino. “servo1.attach(9)” pada void Setup() memiliki arti servo dengan nama “servo1” terhubung(attach) dengan pin 9. Pin 9 digunakan karena adalah pin PWM, kalian bisa menggunakan pin lainnya selama pin tersebut adalah PWM. Pada void loop(), untuk menjalankan servo, kita menggunakan for loop yang pada setiap loopnya akan menambah 1 nilai untuk variabel “pos” hingga nilai “pos” mencapai 180. Variabel “pos” ini yang digunakan sebagai penentu sudut putaran servo. Fungsi write() digunakan untuk mengirim perintah kepada servo. Maka servo akan berjalan dari sudut 0 hingga 180 derajat. Untuk membalikkan arahnya, kita buat satu lagi for loop dengan inisial di 180 derajat dan menggunakan negative increment.
Jika program berjalan dengan baik, sesuai dengan namanya yaitu “Sweep” maka servo akan bergerak dari kiri ke kanan secara terus menerus seperti gerakan menyapu. Kita tahu bahwa increment pada for loop bernilai 1, maka nilai dari sudut akan bertambah 1 pada setiap loop-nya. Apa yang akan terjadi jika increment tersebut diubah dengan angka lain?
3. Mengoperasikan Servo menggunakan Potensiometer
Selain dapat berjalan secara otomatis, servo juga dapat dikendalikan dengan menggunakan perangkat input. Kali ini kita akan mencoba mengendalikan servo dengan menggunakan potensiometer. Jika ingin lebih tahu tentang potensiometer dapat dilihat disini. Putaran pada potensiometer akan berbanding lurus dengan sudut putaran servo. Pertama kita buat rangkaian seperti pada Gambar 4 di bawah ini. Lalu terapkan program yang tersedia di bawah atau menggunakan program Example dengan nama “Knob”
Gambar 4. Diagram Kelistrikan Servo dan Potensiometer
#include <Servo.h>
Servo servo1; // membuat objek servo
const int potpin = A0; // pin analog untuk potensiometer
int val; // variabel nilai potensiometer
void setup() {
servo1.attach(9); // menghubungkan servo dengan pin 9
}
void loop() {
val = analogRead(potpin); // membaca input dari potensiometer (nilai antara 0 dan 1023)
val = map(val, 0, 1023, 0, 180); // mengkonversi nilai potensiometer ke sudut servo (nilai antara 0 dan 180)
servo1.write(val); // mengatur posisi servo berdasarkan input
delay(15); // delay 15 ms
}
Hampir sama dengan program sebelumnya, yang membedakan pada program ini adalah kita menggunakan potensiometer sebagai input, jadi kita harus menggunakan analaogRead() untuk membaca analog input dari potensiometer. Kita tahu bahwa nilai analog memiliki rentang 0-1023 sedangkan kita membutuhkan nilai sudut dari 0-180 derajat. Untuk itu kita menggunakan fungsi map() untuk mengkonversi nilai analog ke nilai sudut dengan rentang yang sama.
Jika program berjalan dengan baik maka ketika kita memutar potensiometer, maka servo juga akan ikut berputar sesuai dengan arah putaran potensiometer.
Penulis: Ariq Naufal Rabbani
Great post!
Good luck.