Cara Mengontrol Servo dengan Arduino (Panduan Lengkap)

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 lenganmembuka 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 robotpintu otomatiskamera 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

LangkahApa yang Terjadi
1. Sinyal PWMArduino mengirim pulsa PWM ke servo
2. Baca PosisiServo membaca posisi saat ini dari potensiometer internal
3. BandingkanServo membandingkan posisi saat ini dengan target
4. GerakMotor bergerak sampai posisi sesuai target
5. BerhentiServo 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:

AspekSG90 (Micro Servo)MG996R (Standard Servo)
Torsi1,8 kg·cm11 kg·cm
Berat9 gram55 gram
Tegangan4,8V – 6V4,8V – 7,2V
Kecepatan0,1 detik/60°0,17 detik/60°
HargaRp15-25 ribuRp40-60 ribu
Cocok UntukProyek 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

KomponenFungsiPerkiraan Harga
Arduino Uno / NanoMikrokontrolerRp80-150 ribu
Motor Servo SG90AktuatorRp15-25 ribu
Potensiometer 10kΩKontrol sudutRp2-5 ribu
Kabel JumperKoneksiRp10-20 ribu
BreadboardPrototypingRp15-25 ribu
Power Supply 5V 2AUntuk servo besarRp30-50 ribu

Langkah 1: Wiring Servo ke Arduino

Koneksi Servo SG90 (Kecil)

ServoWarna KabelArduino
VCCMerah5V
GNDCoklat/HitamGND
SignalOranye/KuningDigital Pin 9 (PWM)

Koneksi Servo MG996R (Besar)

ServoWarna KabelKoneksi
VCCMerahPower Supply 5V eksternal
GNDCoklat/HitamGND Power Supply + GND Arduino
SignalOranye/KuningDigital 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

BagianFungsi
#include <Servo.h>Library Servo bawaan Arduino
Servo myservoMembuat 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

PotensiometerArduino
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

PotensiometerNilai ADCSudut Servo
Diputar kiri0
Tengah51290°
Diputar kanan1023180°

💡 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

  1. Upload kode

  2. Buka Serial Monitor (baud 9600)

  3. Ketik angka 0-180, tekan Enter

  4. 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

ServoFungsi
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

MasalahPenyebabSolusi
Servo tidak bergerakWiring salahCek VCC, GND, Signal
Servo bergetar/jiiterPower tidak stabilGunakan power supply eksternal
Servo berputar terusBukan servo, tapi motor DCCek jenis motor
Servo panasBeban berlebihKurangi beban atau ganti servo lebih kuat
Sudut tidak akuratKalibrasiCek attach() dan write()
Arduino restartServo menarik arus besarGunakan power eksternal

Kesalahan Umum dan Cara Menghindarinya

KesalahanAkibatSolusi
Servo besar dari pin 5V ArduinoBoard rusak/restartGunakan power eksternal
Tidak common groundSinyal tidak terbacaHubungkan GND
Lupa #include <Servo.h>Compile errorTambahkan library
Pin bukan PWMServo tidak bergerakGunakan pin 9, 10, atau 11
Delay terlalu pendekGerakan patah-patahTambahkan delay(15)

Kesimpulan

Motor servo adalah aktuator fundamental untuk robotik—presisi, mudah digunakan, dan terjangkau. Kuncinya:

  1. Pahami cara kerjanya — sinyal PWM menentukan sudut

  2. Pilih servo yang tepat — SG90 untuk ringan, MG996R untuk berat

  3. Wiring dengan benar — VCC, GND, Signal

  4. Gunakan library Servo — attach() dan write()

  5. Kontrol dengan potensiometer — map() untuk konversi

  6. Kontrol via Serial — untuk presisi

  7. Kombinasikan dengan sensor — untuk proyek robotik nyata

Dengan servo, Anda bisa membuat lengan robotpintu otomatiskamera 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)

Share:

Tinggalkan Komentar

Please enter your comment!
Please enter your name here

More like this

Ilustrasi sensor ultrasonik HC-SR04 dengan Arduino untuk pengukuran jarak, gelombang suara, LCD, dan alarm kedekatan

Cara Menggunakan Sensor Ultrasonik HC-SR04 dengan Arduino (Panduan Lengkap)

Robotik & Hardware, ElrolumNews — Anda sudah bisa membuat robot pengikut garis, sudah bisa membaca sensor PIR, sudah...
Ilustrasi ESP32-CAM untuk monitoring dengan kamera OV2640, FTDI adapter, streaming video, dan privasi lokal

Cara Menggunakan ESP32-CAM untuk Monitoring (Panduan Lengkap)

Robotik & Hardware, ElrolumNews — Anda sudah bisa memprogram ESP32, sudah membuat smart home, sudah punya sensor PIR...
Ilustrasi robot pengikut garis dengan Arduino, sensor IR, driver motor L298N, dan garis hitam di permukaan putih

Cara Membuat Robot Pengikut Garis dengan Arduino (Panduan Lengkap)

Robotik & Hardware, ELrolumNews — Anda sudah bisa menyalakan LED, membaca sensor, bahkan membuat smart home. Tapi ada...

More

Recomended

Read More