Motor servo merupakan salah satu komponen yang sangat populer dalam dunia elektronika, robotika, dan sistem otomasi berbasis mikrokontroler. Komponen ini mampu bergerak ke posisi sudut tertentu dengan tingkat akurasi yang cukup tinggi, sehingga sering digunakan pada berbagai proyek seperti lengan robot, sistem kemudi otomatis, kamera pan-tilt, hingga berbagai perangkat kendali mekanis lainnya. Dengan bantuan Arduino, proses pengendalian motor servo menjadi lebih mudah karena tersedia library khusus yang dapat digunakan untuk mengatur posisi servo hanya dengan beberapa baris kode.
Salah satu cara paling sederhana untuk mengontrol motor servo adalah menggunakan potensiometer. Potensiometer berfungsi sebagai input analog yang menghasilkan nilai berdasarkan posisi putaran knopnya. Ketika potensiometer diputar, Arduino akan membaca perubahan nilai tersebut dan mengubahnya menjadi data yang dapat digunakan untuk mengendalikan sudut putaran motor servo. Dengan metode ini, pengguna dapat mengontrol posisi servo secara langsung dan real-time hanya melalui putaran potensiometer.
Pada tutorial ini, Anda akan mempelajari cara menghubungkan potensiometer dengan motor servo menggunakan Arduino Uno. Selain itu, Anda juga akan memahami bagaimana Arduino membaca nilai analog dari potensiometer, mengonversinya menjadi rentang sudut tertentu menggunakan fungsi map(), lalu menggerakkan motor servo sesuai dengan nilai yang diperoleh. Tutorial ini sangat cocok bagi pemula yang ingin memahami konsep dasar input analog dan pengendalian aktuator menggunakan Arduino.
Perangkat Keras yang Dibutuhkan
- Arduino Uno R3
- Kabel USB
- Motor servo
- Potensiometer
- Kabel jumper
Cara Kerja Sistem
Secara sederhana, Arduino akan membaca nilai analog yang dihasilkan oleh potensiometer melalui pin analog A0. Nilai yang terbaca berada pada rentang 0 hingga 1023. Nilai tersebut kemudian diubah menjadi rentang sudut yang dapat dipahami oleh motor servo, yaitu antara 0 hingga 180 derajat.
Setelah proses konversi selesai, Arduino akan mengirimkan perintah ke motor servo untuk bergerak sesuai dengan sudut yang dihasilkan. Akibatnya, setiap perubahan posisi potensiometer akan langsung memengaruhi posisi motor servo secara real-time.
Baca juga: Arduino dan MG996R - Cara Mengontrol Motor Servo Torsi Tinggi dengan Arduino
Membaca Nilai Potensiometer
Langkah pertama adalah membaca nilai analog dari potensiometer menggunakan fungsi analogRead().
int analogValue = analogRead(A0);
Perintah di atas akan menghasilkan nilai antara 0 hingga 1023, tergantung pada posisi putaran potensiometer.
Mengubah Nilai Analog Menjadi Sudut Servo
Karena motor servo bekerja pada rentang sudut 0 hingga 180 derajat, maka nilai analog perlu dikonversi terlebih dahulu menggunakan fungsi map().
int angle = map(analogValue, 0, 1023, 0, 180);
Fungsi tersebut akan mengubah nilai 0 menjadi 0 derajat dan nilai 1023 menjadi 180 derajat. Nilai lainnya akan disesuaikan secara proporsional.
Menggerakkan Motor Servo
Setelah sudut diperoleh, Arduino dapat menggerakkan servo menggunakan fungsi write().
myServo.write(angle);
Perintah tersebut membuat motor servo bergerak ke posisi sudut yang sesuai dengan hasil pembacaan potensiometer.
Wiring Diagram Arduino Mengontrol Motor Servo Menggunakan Potensiometer
Kode Program Arduino Lengkap
#include <Servo.h>
Servo myServo; // Membuat objek servo
void setup() {
// Memulai komunikasi serial
Serial.begin(9600);
// Menghubungkan servo ke pin digital 9
myServo.attach(9);
}
void loop() {
// Membaca nilai potensiometer (0 - 1023)
int analogValue = analogRead(A0);
// Mengubah nilai menjadi sudut servo (0 - 180)
int angle = map(analogValue, 0, 1023, 0, 180);
// Menggerakkan servo sesuai sudut
myServo.write(angle);
// Menampilkan data pada Serial Monitor
Serial.print("Analog: ");
Serial.print(analogValue);
Serial.print(", Angle: ");
Serial.println(angle);
delay(100);
}
Penjelasan Program
Library Servo.h digunakan untuk mempermudah pengendalian motor servo pada Arduino. Dengan library ini, pengguna tidak perlu membuat sinyal PWM secara manual karena seluruh proses pengaturan posisi servo sudah ditangani oleh library.
Pada bagian deklarasi program dibuat sebuah objek servo bernama myServo. Objek ini berfungsi sebagai penghubung antara program dan motor servo yang terpasang pada Arduino. Di dalam fungsi setup(), komunikasi serial diaktifkan dengan kecepatan 9600 bps menggunakan Serial.begin(9600). Selain itu, servo dihubungkan ke pin digital 9 menggunakan perintah myServo.attach(9).
Pada fungsi loop(), Arduino terus-menerus membaca nilai potensiometer melalui pin analog A0. Nilai yang diperoleh kemudian dikonversi menjadi rentang sudut servo menggunakan fungsi map(). Hasil konversi tersebut digunakan untuk mengatur posisi motor servo melalui perintah myServo.write(angle). Selanjutnya, nilai analog dan sudut servo ditampilkan pada Serial Monitor sehingga pengguna dapat memantau perubahan data secara langsung saat potensiometer diputar.
Koneksi Rangkaian
Hubungkan kaki tengah potensiometer ke pin A0 Arduino. Salah satu kaki lainnya dihubungkan ke pin 5V, sedangkan kaki yang tersisa dihubungkan ke GND. Untuk motor servo, kabel sinyal dihubungkan ke pin digital 9 Arduino. Kabel VCC servo dihubungkan ke pin 5V, sedangkan kabel GND servo dihubungkan ke pin GND Arduino. Pastikan seluruh koneksi terpasang dengan benar agar sistem dapat bekerja secara optimal.
Langkah-langkah Menjalankan Program
1. Hubungkan Arduino Uno ke komputer menggunakan kabel USB.
2. Setelah itu buka aplikasi Arduino IDE dan pilih board Arduino Uno serta port yang sesuai dengan perangkat yang digunakan.
3. Salin seluruh kode program yang telah disediakan kemudian tempelkan ke editor Arduino IDE.
4. Selanjutnya klik tombol Upload dan tunggu hingga proses unggah program selesai.
5. Setelah program berhasil diunggah, buka Serial Monitor melalui menu Tools.
6. Putar potensiometer secara perlahan dan amati perubahan posisi motor servo.
7. Pada saat yang sama, nilai analog serta sudut servo akan ditampilkan pada Serial Monitor secara real-time.
Hasil Pengujian
Ketika potensiometer diputar ke posisi minimum, nilai analog yang terbaca mendekati 0 sehingga motor servo berada pada posisi sekitar 0 derajat. Sebaliknya, saat potensiometer diputar ke posisi maksimum, nilai analog akan mendekati 1023 dan servo bergerak hingga sekitar 180 derajat. Perubahan posisi servo akan berlangsung secara bertahap mengikuti perubahan nilai potensiometer. Hal ini memungkinkan pengguna melakukan kontrol posisi servo dengan lebih presisi dan mudah.
Baca juga: Arduino dan Sensor Cahaya (LDR) - Cara Membaca Intensitas Cahaya Menggunakan Arduino Uno
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino



0 on: "Arduino Mengontrol Motor Servo Menggunakan Potensiometer"