Robotik & Hardware, Elrolumnews — Anda sudah bisa membuat robot pengikut garis, sudah bisa mengukur jarak dengan ultrasonik, sudah bisa mendeteksi gerakan dengan PIR. Tapi bagaimana caranya membuat robot yang bisa menggerakkan lengan, membuka pintu, atau mengarahkan kamera?
Artikel ini cocok untuk: Anda yang sudah familiar dengan dasar Arduino dan ingin belajar menggunakan motor servo—aktuator yang paling umum untuk gerakan presisi.
Motor servo adalah motor yang bisa berputar ke sudut tertentu—bukan terus berputar seperti motor DC biasa. Ia bisa bergerak ke 0°, 45°, 90°, 180°, dan berhenti di sana . Inilah yang membuatnya sempurna untuk lengan robot, pintu otomatis, kamera pan-tilt, dan mekanisme presisi lainnya.
Di artikel ini, kita akan bahas dari nol: apa itu servo, jenis-jenisnya, wiring ke Arduino, kode program, hingga proyek kontrol servo dengan potensiometer dan kontrol via Serial Monitor.
Apa Itu Motor Servo dan Bagaimana Cara Kerjanya?
Motor servo adalah motor DC yang dilengkapi rangkaian kontrol dan potensiometer internal untuk umpan balik posisi .
Prinsip Kerja Servo
| Langkah | Apa yang Terjadi |
|---|---|
| 1. Sinyal PWM | Arduino mengirim pulsa PWM ke servo |
| 2. Baca Posisi | Servo membaca posisi saat ini dari potensiometer internal |
| 3. Bandingkan | Servo membandingkan posisi saat ini dengan target |
| 4. Gerak | Motor bergerak sampai posisi sesuai target |
| 5. Berhenti | Servo berhenti di posisi yang diminta |
Sinyal PWM untuk servo:
Pulsa 1ms → sudut 0°
Pulsa 1,5ms → sudut 90° (tengah)
Pulsa 2ms → sudut 180°
💡 Analogi: Servo seperti lengan manusia. Anda bisa memerintahkan untuk mengangkat ke sudut tertentu, dan lengan akan bergerak ke sana—lalu berhenti.
Jenis-Jenis Motor Servo
Ada dua jenis servo yang paling umum digunakan dengan Arduino:
| Aspek | SG90 (Micro Servo) | MG996R (Standard Servo) |
|---|---|---|
| Torsi | 1,8 kg·cm | 11 kg·cm |
| Berat | 9 gram | 55 gram |
| Tegangan | 4,8V – 6V | 4,8V – 7,2V |
| Kecepatan | 0,1 detik/60° | 0,17 detik/60° |
| Harga | Rp15-25 ribu | Rp40-60 ribu |
| Cocok Untuk | Proyek ringan (kamera, sensor) | Lengan robot, pintu |
⚠️ Peringatan Penting: Servo MG996R bisa menarik arus hingga 2,5A saat bergerak. Jangan menyalakannya langsung dari pin 5V Arduino—bisa merusak board. Gunakan power supply eksternal .
Komponen yang Dibutuhkan
| Komponen | Fungsi | Perkiraan Harga |
|---|---|---|
| Arduino Uno / Nano | Mikrokontroler | Rp80-150 ribu |
| Motor Servo SG90 | Aktuator | Rp15-25 ribu |
| Potensiometer 10kΩ | Kontrol sudut | Rp2-5 ribu |
| Kabel Jumper | Koneksi | Rp10-20 ribu |
| Breadboard | Prototyping | Rp15-25 ribu |
| Power Supply 5V 2A | Untuk servo besar | Rp30-50 ribu |
Langkah 1: Wiring Servo ke Arduino
Koneksi Servo SG90 (Kecil)
| Servo | Warna Kabel | Arduino |
|---|---|---|
| VCC | Merah | 5V |
| GND | Coklat/Hitam | GND |
| Signal | Oranye/Kuning | Digital Pin 9 (PWM) |
Koneksi Servo MG996R (Besar)
| Servo | Warna Kabel | Koneksi |
|---|---|---|
| VCC | Merah | Power Supply 5V eksternal |
| GND | Coklat/Hitam | GND Power Supply + GND Arduino |
| Signal | Oranye/Kuning | Digital Pin 9 (PWM) |
⚠️ Peringatan: Untuk servo MG996R, wajib menggunakan power supply eksternal. Hubungkan GND power supply ke GND Arduino (common ground) agar sinyal PWM terbaca .
Langkah 2: Kode Program Dasar — Sweep
Ini kode paling sederhana: servo bergerak dari 0° ke 180° lalu kembali.
Kode
#include <Servo.h> Servo myservo; void setup() { myservo.attach(9); // Servo di pin 9 } void loop() { // Gerak dari 0° ke 180° for (int sudut = 0; sudut <= 180; sudut += 1) { myservo.write(sudut); delay(15); } // Gerak dari 180° ke 0° for (int sudut = 180; sudut >= 0; sudut -= 1) { myservo.write(sudut); delay(15); } }
Penjelasan Kode
| Bagian | Fungsi |
|---|---|
#include <Servo.h> | Library Servo bawaan Arduino |
Servo myservo | Membuat objek servo |
myservo.attach(9) | Menghubungkan servo ke pin 9 |
myservo.write(sudut) | Memerintahkan servo ke sudut tertentu |
delay(15) | Jeda agar gerakan halus |
💡 Tips Pro: Library Servo.h sudah termasuk dalam Arduino IDE—tidak perlu install tambahan .
Langkah 3: Kontrol Servo dengan Potensiometer
Sekarang kita kontrol sudut servo secara manual dengan potensiometer.
Wiring Potensiometer
| Potensiometer | Arduino |
|---|---|
| Kaki 1 (kiri) | 5V |
| Kaki 2 (tengah) | Analog Pin A0 |
| Kaki 3 (kanan) | GND |
Kode
#include <Servo.h> Servo myservo; #define POT_PIN A0 #define SERVO_PIN 9 void setup() { myservo.attach(SERVO_PIN); Serial.begin(9600); } void loop() { // Baca potensiometer (0-1023) int nilaiPot = analogRead(POT_PIN); // Konversi ke sudut (0-180) int sudut = map(nilaiPot, 0, 1023, 0, 180); // Gerakkan servo myservo.write(sudut); // Tampilkan di Serial Monitor Serial.print("Pot: "); Serial.print(nilaiPot); Serial.print(" | Sudut: "); Serial.println(sudut); delay(15); }
Cara Kerja
| Potensiometer | Nilai ADC | Sudut Servo |
|---|---|---|
| Diputar kiri | 0 | 0° |
| Tengah | 512 | 90° |
| Diputar kanan | 1023 | 180° |
💡 Tips Pro: Fungsi
map()adalah cara mudah mengkonversi satu rentang nilai ke rentang lain. Rumusnya:map(nilai, fromLow, fromHigh, toLow, toHigh).
Langkah 4: Kontrol Servo via Serial Monitor
Anda juga bisa mengontrol servo dengan mengetik sudut di Serial Monitor.
Kode
#include <Servo.h> Servo myservo; void setup() { myservo.attach(9); Serial.begin(9600); Serial.println("Masukkan sudut (0-180):"); } void loop() { if (Serial.available() > 0) { int sudut = Serial.parseInt(); if (sudut >= 0 && sudut <= 180) { myservo.write(sudut); Serial.print("Servo bergerak ke: "); Serial.println(sudut); } else { Serial.println("Sudut harus 0-180!"); } } }
Cara Menggunakan
Upload kode
Buka Serial Monitor (baud 9600)
Ketik angka 0-180, tekan Enter
Servo akan bergerak ke sudut tersebut
Langkah 5: Proyek Kamera Pan-Tilt
Dengan dua servo, Anda bisa membuat kamera pan-tilt—dasar dari sistem monitoring otomatis.
Konsep
| Servo | Fungsi |
|---|---|
| Servo 1 (Pan) | Gerak horizontal (kiri-kanan) |
| Servo 2 (Tilt) | Gerak vertikal (atas-bawah) |
Kode Dasar
#include <Servo.h> Servo panServo; Servo tiltServo; void setup() { panServo.attach(9); tiltServo.attach(10); } void loop() { // Pan dari kiri ke kanan for (int sudut = 0; sudut <= 180; sudut += 1) { panServo.write(sudut); delay(15); } for (int sudut = 180; sudut >= 0; sudut -= 1) { panServo.write(sudut); delay(15); } // Tilt dari atas ke bawah for (int sudut = 0; sudut <= 90; sudut += 1) { tiltServo.write(sudut); delay(15); } for (int sudut = 90; sudut >= 0; sudut -= 1) { tiltServo.write(sudut); delay(15); } }
💡 Tips Pro: Gabungkan dengan sensor PIR atau ESP32-CAM untuk membuat kamera yang mengikuti gerakan .
Troubleshooting: Masalah Umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| Servo tidak bergerak | Wiring salah | Cek VCC, GND, Signal |
| Servo bergetar/jiiter | Power tidak stabil | Gunakan power supply eksternal |
| Servo berputar terus | Bukan servo, tapi motor DC | Cek jenis motor |
| Servo panas | Beban berlebih | Kurangi beban atau ganti servo lebih kuat |
| Sudut tidak akurat | Kalibrasi | Cek attach() dan write() |
| Arduino restart | Servo menarik arus besar | Gunakan power eksternal |
Kesalahan Umum dan Cara Menghindarinya
| Kesalahan | Akibat | Solusi |
|---|---|---|
| Servo besar dari pin 5V Arduino | Board rusak/restart | Gunakan power eksternal |
| Tidak common ground | Sinyal tidak terbaca | Hubungkan GND |
Lupa #include <Servo.h> | Compile error | Tambahkan library |
| Pin bukan PWM | Servo tidak bergerak | Gunakan pin 9, 10, atau 11 |
| Delay terlalu pendek | Gerakan patah-patah | Tambahkan delay(15) |
Kesimpulan
Motor servo adalah aktuator fundamental untuk robotik—presisi, mudah digunakan, dan terjangkau. Kuncinya:
Pahami cara kerjanya — sinyal PWM menentukan sudut
Pilih servo yang tepat — SG90 untuk ringan, MG996R untuk berat
Wiring dengan benar — VCC, GND, Signal
Gunakan library Servo —
attach()danwrite()Kontrol dengan potensiometer —
map()untuk konversiKontrol via Serial — untuk presisi
Kombinasikan dengan sensor — untuk proyek robotik nyata
Dengan servo, Anda bisa membuat lengan robot, pintu otomatis, kamera pan-tilt, atau mekanisme presisi lainnya—semua dengan biaya di bawah Rp50 ribu.
Ingat: Servo adalah otot untuk robot Anda. Ia tidak sempurna—bisa jitter, bisa panas, bisa terbatas torsinya. Tapi untuk 90% aplikasi robotik, ia sudah lebih dari cukup.
Sudah siap membuat proyek servo pertama Anda?
💬 Punya proyek dengan servo? Bagikan di kolom komentar!
(el)





