Kontrol Posisi Servo dengan Arduino dan Potensio
Pada kesempatan kali ini kita lanjutkan tentang kontrol motor servo dengan Arduino. Kalau pada postingan yang lalu kita bahas dasar pemrograman arduino untuk kontrol motor servo sekarang kita tambahkan sebuah potensio untuk mengontrol motor servo, agar putarannya lebih dinamis.
Langsung saja, siapkan komponen untuk membuat kontrol servo dengan arduino uno dan potensiometer. Nilai potensiometer bebas saja ya, boleh 10K ohm, 50K ohm atau nilai yang lain.
- Arduino UNO (1)
- Potensiometer (1, nilai bebas)
- Motor Servo SG90 (1)
Buat rangkaian Arduino UNO dengan motor servo dan potensio seperti gambar berikut.
Koneksi kabel motor servo standar berdasarkan warna :
- Orange : siyal input (PWM), terhubung ke pin 9 Arduino UNO
- Merah : Vcc, terhubung dengan pin 5V Arduino UNO
- Coklat : Gnd, terhubung dengan pin GND Arduino UNO
Potensiometer kita fungsikan sebagai pembagi tegangan (voltage devider). Cukup hubungkan 2 kaki pinggir ke 5V dan GND Arduino kemudian pin tengah (output tegangan) ke pin analog 0 (A0) Arduino UNO. Selanjutnya buat program Arduino kontrol servo dengan potensio.
//Sertakan library Servo #include <Servo.h> Servo myservo; //variabel untuk perhitungan sudut putar int sudut; void setup() { myservo.attach(9); // servo terhubung pin 9 } void loop() { //membaca sinyal analog input di A0 sudut = analogRead(A0); //konversi hasil analog (0-1023) menjadi hasil sudut (0-180) sudut = map(sudut, 0, 1023, 0, 180); //set posisi sudut motor servo myservo.write(sudut); delay(15); }
Tulis program Arduino kontrol Servo dengan potensio kemudian simpan (Save) selanjutnya Upload ke Arduino UNO. Pastikan tidak ada error di programnya, jika masih ada error silakan diperbaiki dulu, perhatikan cara penulisan programnya. Selanjutnya kita coba hasilnya. Putar potensiometer ke kiri dan ke kanan maka motor servo akan berputar mengikuti putaran potensiometer.
Program dasarnya sama dengan Kontrol Servo Motor Arduino, hanya ditambah membaca sinyal analog (tegangan dari potensiometer/voltage devider) yang terhubung ke pin A0 :
//membaca sinyal analog input di A0 sudut = analogRead(A0);
Hasil pembacaan sinyal analog antara 0 (minimum) sampai 1023 (maksimum) kemudian dikonversi (diskala) ke putaran sudut 00 (minimum) sampai 1800 (maksimum), perintahnya sangat mudah :
//konversi hasil analog (0-1023) menjadi hasil sudut (0-180) sudut = map(sudut, 0, 1023, 0, 180);
Maksudnya dari pen-skala-an tersebut agar rentang nilai-nya berada di antara sudut 0 – 180. Jika potensio diputar ke kiri (minimum) hasilnya 0 maka sudutnya juga 0, jika potensio diputar ke kanan maksimum hasil analognya 1023 maka sudutnya 180. Terakhir hasil perhitungan sudut dipakai untuk ngontrol motor servo :
//set posisi sudut motor servo myservo.write(sudut);
Alhamdulillah sudah selesai kontrol motor servo dengan Arduino dan potensio, semoga bermanfaat.