Contents
Mungkin ada yang mengalami hal yang sama dengan saya saat mencoba ‘memprogram’ motor servo dengan Arduino, yakni motor servo bergetar setelah kita memberi perintah untuk menuju ke sudut tertentu dan permasalahan kedua, motor servo bergerak sendiri saat program berjalan pertama kali (booting). Mungkin permasalahan sepele bagi yang udah master, tapi mungkin juga akan sangat berguna bagi yang sedang kebingungan mencari solusinya 🙂
Problem Motor Servo dan Solusinya
Baiklah, mungkin saya tulis dulu solusi untuk permasalahan yang kedua, yakni motor servo bergerak sendiri sesaat setelah program berjalan. Setelah saya telusuri ternyata ini karena deklarasi function attach() milik library servo.h. Jadi bagi Anda yang menaruh function ini blok void setup(); coba dihapus dulu, kemudian sketch-nya di upload ulang. Problem solved :). Sederhana tapi bikin pusing bagi yang belum tahu :). Anda dapat mendeklarasikan function ini sesaat sebelum menyuruh motor servo ke sudut tertentu dengan perintah (misal) myservo.write(90);
Permasalahan yang kedua, motor servo bergetar setelah kita selesai menyuruhnya menuju sudut tertentu (setelah perintah myservo.write(); ). Sebelumnya kita analisa dulu penyebabnya. Sebuah motor servo hanya mengenal parameter ‘sudut’ dalam siklus hidupnya. Begitu ia diberi perintah untuk menuju sudut tertentu, ia akan selamanya akan menuju sudut tersebut walaupun ia sudah berada di sudut tersebut. Nah lho :). Inilah mengapa motor servo akan bergetar jika sudah settle di sudut tujuannya. Motor servo akan terus menerus menuju sudut tujuannya, sehingga efeknya motor servo akan bergetar.
Solusi Motor Servo Bergetar
Bagaimana solusinya? Ternyata mudah aja. Anda tinggal memanggil function detach() setelah Anda memerintahkan motor servo menuju sudut tertentu. Jadi jika kita memerintahkan motor servo ke sudut tertentu sebaiknya kita tulis kode yang lengkap sebagai berikut :
#include <Servo.h>; Servo Myservo; void setup(){ } void loop(){ Myservo.attach(9); Myservo.write(90); delay (1000); Myservo.detach(); delay (1000); Myservo.attach(9); Myservo.write(0); delay (1000); Myservo.detach(); delay (1000); }
Dengan sketch di atas, Anda akan meng-attach motor servo di pin 9 (baris 10), menuju sudut 900 (baris 11) berhenti sejenak (1 detik) untuk menunggu motor servo berputar ke sudut 900 dan men-detach-nya supaya tidak bergetar (baris 13). Dengan cara sebaliknya, motor servo akan berputar ke sudut 00 (baris 15 sd 20). Biar tahu perbedaannya, coba perintah Myservo.detach(); dihilangkan, dan bandingkan hasilnya saat ada perintah tersbut.
Demikian sedikit tutorial singkat ini, semoga dapat bermanfaat buat yang sedang mencarinya, atau setidaknya untuk catatan diri saya sendiri supaya tidak lupa di kemudian hari.
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
halo bagaimana dengan stepper nema 17? terima kasih
motor stepper beda dengan motor servo, jadi solusinya juga beda. Cuma karena sy blm pernah mencoba ke spesifik merk/seri nema17 maka sy jawab secara general aja.
Pada dasarnya motor stepper akan bergerak jika mendapat perintah di port input controllernya. Jadi secara umum pastikan port kontroller terinisialsasi dg baik saat booting. Anda juga bisa menambahkan resistor pull up (atau pull down) untuk memastikan tegangan logic saat port dalm keadaan belum terinisialsasi
gan, kalau kasusnya ketika gerakin 1 servo, servo yg lain kejer/kejang/kejut2 itu knapa………?
kemungkinan sama mas, coba cek di pin servo tsb utk attach/detach-nya. Kalo udah ok, coba cek supply tegangannya, usahakan jangan ambil langsung dari pin arduino karena ampere-nya kecil
malam, maaf saya baru dan ada maslah pada motor servo mitsubishi brand, motor tersebut mendengung keras saat power di on kan, dan setelah itu motor diem namun dalam posisi error, hal ini disebabkan apa….
mohon pencerahanya….
mungkin sensor positioning-nya rusak atau sudah tidak akurat
cara ini tidak berlaku untuk kaki robot, karen jika servo di detach maka akan kehilangan kekuatan dan robot pun tidak bisa mengangkat beban.
terima kasih atas infonya. Untuk aplikasi robot, jika memungkinkan sebaiknya menggunakan gearbox untuk menjaga torsi ketika servo detached
Kalau mau menggerakan servo dengan 2 perintah tujuan dalam satu kali switch, misal ketika switch 1 di tekan servo bergerak ke 90 diam 1 detik lalu gerak ke 50 lalu servo diam menunggu perintah selanjutnya, begitupun untuk switch 2 di tekan servo gerak ke 0 diam 1 detik lalu ke 20 lalu diam dan menunggu perintah dr switch 1
pake ‘if’ aja mas. Contoh:
if (digitalRead(9)==0){ //jika tombol 1 ditekan
myservo.write(90);
delay (1000);
}
if (digitalRead(10)==0){ //jika tombol 2 ditekan
myservo.write(0);
delay (1000);
}
jangan lupa attach servo dulu ya, dan pastikan rangkaian tombolnya active LOW
Saya masih mengalami masalah si servo yang masih kejang kejang. , Ketika di kasih input an potensio ketika dalam kondisi full si servo nya kejang , saya sudah memberi perintah detach (), pada programnya namun ketika di copile servonya malah tidak merespon sama sekali
jangan lupa kasih delay setelah detach
Kak servo saya getar getar setelah diperintah. Tetapi disini servo saya dihubungin ke receiver dan diperintah di transmitter.. itu gimana kak?
Kak motor servo milik saya ngga bisa bergerak sama sekali🙏 kira kira penyebab dan solusinya gimana ya kak?
Mohon bantuannya, untuk tugas sekolah🙏
harus dicek satu-satu, problemnya dimana. Coba tutorial ini jalan ngga servonya? 5 Menit Menangani Motor Servo dengan Arduino