Cara Membatasi Sudut Motor Servo Arduino
Jika kamu orang yang menggeluti dunia elektronika khususnya bidang mikrokontroler, tentu sudah tidak asing lagi dengan yang namanya motor servo. Motor servo adalah sebuah motor yang dapat dikendalikan posisi sudutnya dan dilengkapi dengan berbagai komponen pendukung utama seperti roda gigi untuk meningkatkan torsi, kontroler sebagai pengendali dan potensiometer atau rotary encoder sebagai sensor dan pemberi umpan balik. Jika kamu ingin mengetahui lebih lanjut mengenai servo, kamu bisa membaca artikel kami yang berjudul Pengertian dan Cara Kontrol Motor Servo Menggunakan Arduino.
Motor servo terbagi atas 2 jenis berdasarkan rotasi porosnya, yaitu motor servo continous dan motor servo positional. Motor servo continous adalah motor servo yang berputar terus menerus (360°), sedangkan motor servo positional adalah motor servo yang hanya dapat bergerak pada range sudut tertentu, pada umunya sekitar 180°.
Tidak jarang pada sebuah proyek mikrokontroler motor servo yang kita gunakan harus berputar pada range tertentu saja, misalnya dari 0°-90°, jika servo bergerak di luar range tersebut bisa jadi terjadi masalah pada alat yang kita buat, misalnya. Sehingga apabila servo diperintahkan untuk berputar ke sudut di luar range tersebut tidak akan pernah bisa. Caranya adalah dengan menambahkan fungsi constrain().
Alat yang Dibutuhkan
Di dalam percobaan ini kita membutuhkan beberapa alat sebagai berikut.
- 1x Arduino Uno (tipe lain juga bisa).
- 1x Potensiometer.
- 1x Motor servo.
- Kabel penghubung secukupnya.
Skematik
Berikut adalah hubungan antara Arduino Uno dengan motor servo dan potensiometer.
Penjelasan:
- Kabel power motor servo (merah) terhubung ke 5V Arduino Uno (saya merekomendasikan penggunaan sumber tegangan eksternal jika menggunakan servo dengan kebutuhan arus yang tinggi).
- Kabel ground motor servo (cokelat/hitam) terhubung ke GND Arduino UNO (jika menggunakan sumber tegangan eksternal, ground sumber tegangan eksternal dengan ground Arduino Uno harus disatukan.
- Kabel data/pulsa motor servo (oranye/kuning) terhubung ke pin 7 Arduino Uno.
- Kaki kiri potensiometer terhubung ke 5V Arduino Uno.
- Kaki kanan potensiometer terhubung ke GND Arduino Uno.
- Kaki tengah potensiometer terhubung ke pin A0 Arduino Uno.
Kode Program Untuk Membatasi Sudut Servo
Sebagai contoh kita akan mencoba merancang sebuah program untuk mengendalikan sudut motor servo berdasarkan potensiometer, namun kita akan membatasi rotasi motor servo hanya berada pada sudut 0°-90° tidak peduli sejauh apa pun potensiometer diputar.
#include <Servo.h>
Servo myservo;
int pot = 0;
int value;
void setup() {
myservo.attach(7);
}
void loop() {
value = analogRead(pot);
value = map(value, 0, 1023, 0, 180);
value = constrain(value, 0, 90);
myservo.write(value);
delay(15);
}
Penjelasan Kode Program
#include <Servo.h>
Baris program di atas berfungsi untuk menyertakan library Servo pada program.
Servo myservo;
Baris program di atas berfungsi untuk mendeklarasikan variabel servo dengan nama myServo.
int pot = 0;
int value;
Baris program di atas adalah bentuk deklarasi dari variabel dengan nama pot dan value. pot adalah variabel pin yang terhubung dengan kaki 2 potensiometer, sedangkan value adalah variabel yang menampung sinyal yang diterima dari potensiometer.
myservo.attach(7);
Kode program di atas berfungsi untuk menginisialisasi bahwa servo yang kita gunakan terhubung ke pin 7 Arduino Uno.
value = analogRead(pot);
Baris program di atas berfungsi untuk membaca masukan analog dari potensiometer.
value = map(value, 0, 1023, 0, 180);
Fungsi map() berfungsi untuk mengubah satu range ke dalam range yang lain, dalam hal ini kita akan mengubah antar 0-1023 menjadi 0-255. Pembahasan lebih lanjut mengenai fungsi map() bisa di lihat pada artikel kami sebelumnya yang berjudul Mengenal Fungsi map() pada Arduino.
value = constrain(value, 0, 90);
Baris program di atas adalah baris program utama yang berfungsi untuk membatasi sudut servo. Pembahasan lebih lanjut mengenai fungsi constrain() bisa di lihat pada artikel kami sebelumnya yang berjudul Mengenal Fungsi constrain() pada Arduino.
myservo.write(value);
Baris program di atas berfungsi untuk menggerakkan motor servo ke sudut tertentu berdasarkan nilai yang berada pada variabel value.
delay(15);
Baris program di atas berfungsi untuk memberikan jeda waktu selama 15 ms.
Langkah-Langkah
- Pertama-tama buatlah rangkaian yang menghubungkan Arduino, servo dan potensiometer.
- Kemudian hubungkan Arduino ke komputer.
- Kemudian buka software Arduino IDE dan pilih jenis papan Arduino yang digunakan serta port USB yang terhubung ke Arduino.
- Salin dan tempel kode program di atas ke software Arduino IDE.
- Kemudian klik tombol unggah/upload, tunggu hingga proses unggah selesai.
- Jika sudah selesai putar-putarlah potensiometer dan amati pergerakan motor servo.
Itulah dia cara yang bisa kita gunakan untuk membatasi sudut pada motor servo, semoga artikel ini bermanfaat. Jangan lupa untuk membaca artikel kami yang lain tentang Elektronika dan Arduino.