Cara Mengatur ‘Kecepatan’ Motor Servo dengan Arduino

Sebenarnya agak rancu ya judul di atas,  Mengatur ‘Kecepatan’ Motor Servo dengan Arduino. Makanya saya kasih tanda koma atas yang mengapit kata ‘kecepatan’ pada judul tersebut. Mengapa rancu? Karena pada dasarnya sebuah motor servo hanya bekerja pada satu kecepatan saja (kecepatan default). Prinsip kerja motor servo adalah ke sudut mana ia akan berputar (diperintahkan kontroller), bukan pada kecepatan berapa dia berputar atau berputar ke manakah ia, kekanan atau ke kiri? Tidak, sebuah motor servo hanya mengenal sudut. Jika kondisi sekarang berada di sudut 00 dan kontroller memerintahkan untuk berputar ke 900 maka ia akan berputar searah jarum jam (clockwise). Dan sebaliknya, jika posisi sekarang adalah 1800 dan kontroller memerintahkan untuk berputar ke 450 misalnya, maka sang motor akan berputar berlawanan jarum jam (counter clockwise). Jadi sekali lagi, motor servo hanya mengenal sudut.

motor servo tipe micro SG90

Bagaimana Cara Mengatur ‘Kecepatan’ Motor Servo dengan Arduino?

Sebagaimana yang saya sebutkan pada paragraf di atas, sebuah motor servo hanya memiliki satu tingkat kecepatan (default). Berapa ukuran kecepatannya? Biasanya ada di spesifikasi alat/datasheet-nya. Sebagai contoh, motor servo SG90 memiliki kecepatan 0.12 seconds / 60 degrees. Atau kalau kita konversi menjadi 0,72 RPS (Rotation per Second) atau 43 RPM (Rotation per Minute). Eh, benar ngga ya? he he he. Nah, si motor servo tiap diperintah menuju sudut tertentu akan berputar dengan kecepatan sebesar angka tadi secara konstan. Bagaimana cara mengatur kecepatannya? Kalau mengatur kecepatan motor servo menggunakan teknik PWM (Pulse Width Modulation) jelas ngga mungkin. Nah, satu-satunya cara mengatur kecepatan motor servo adalah dengan memberi delay tiap pergerakan 10 sudutnya. Terdengar tricky? Ya memang, tapi ya gimana lagi, ngga ada cara yang lain he he he.

Berikut ini akan saya contohkan bagaimana caranya mengatur kecepatan motor servo dengan memberi delay tiap pergerakan 10 sudutnya. Dengan memberi delay yang berbeda maka akan didapat kecepatan yang berbeda pula. ‘Kecepatan’ di sini sifatnya relatif ya (cepat, agak cepat, lambat, sedikit lambat, dst tidak bisa terukur misal 20 RPM, 0,37 RPS dst). Anda harus mengira-ngira sendiri delay berapa yang sesuai dengan kecepatan yang Anda butuhkan.

Alat dan Bahan untuk Eksperimen Pengaturan Kecepatan Motor Servo

  1. Arduino (Uno atau yang lainnya)
  2. Motor Servo SG90/MG90 atau yang lainnya.
  3. Kabel jumper male to male (3 buah)

Koneksikan motor servo dengan Arduino sesuai warna kabel di bawah

Motor Servo Arduino
merah 5v/Vcc
coklat/hitam GND
kuning/orange 9

Kurang lebih gambar rangkaian ditunjukkan pada gambar di bawah

gambar rangkaian motor servo dengan arduino

Berikutnya upload sketch di bawah ke Arduino Anda.

#include <Servo.h>

Servo myservo;

int pos = 0;
int servo_speed = 15;

void setup() {
myservo.attach(9);
}

void loop() {
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
delay(servo_speed);
}
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(servo_speed);
}
}

Jika sketch sudah ter-upload, maka seharusnya motor servo Anda sekarang akan berputar searah dan berlawanan jarum jam secara bergantian dengan kecepatan sesuai variabel servo_speed di atas. Cobalah mengganti nilai variabel ini sesuai kebutuhan Anda.

Demikian sedikit trik Cara Mengatur ‘Kecepatan’ Motor Servo dengan Arduino. Mungkin ada yang sedang membutuhkan trik ini, silahkan dipakai sesuai kebutuhan. Karena saya juga mengalami sendiri, ada kalanya kecepatan motor servo berputar itu terlalu cepat, dan perlu diperlambat sehingga lebih smooth dan tidak mengganti parts mekanik yang lain

0 0 votes
Article Rating

Leave a Reply

37 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
samsul ma'arif

numpang nanya mas kalo cara ngubah derajat motor ds04 yg tadinya 360
menjadi 180 derajat gimana caranya?

samsul ma'arif

contoh nya mas ?

di intenger y di kasih int pos =0; gax mas ?
di void loop nya sy ngasih perintah”for(pos>=0; pos <=180;pos +=1) gax mas terus pas di void loopnya
symengikutin cara mas aji

dgn cara myservo.writeMicroseconds(2000);terus kalo mau nentuin drajatnya pas mananya

#mohon bantuanya mas

samsul ma'arif

apa mas myservo.write diganti sama myservo.script(90);
apa kaya gitu mas?

rizki anko

pak bisa bantu saya gk untuk membuat program arduino, untuk 2 buah motor servo dan satu motor dc kecil yang bekerja bersamaan disebuah breadboard. servo pertama bekerja lebih awal 3 menit dari pada servo kedua, dan servo kedua berjalan bersamaan dengan motor dc. kemudian alat diatas hanya bekerja selama 2 menit setelah itu berhenti otomatis.
dan apakah bisa alat diatas berjalan kembali secara otomatis setelah 5 menit berhenti? terima kasih pak sebelumnya, saya anak sma yg lagi pengen belajar tentang mekatronika hehe

LULUK FITRIYANI

selamat sore mas. perkenalkan dulu saya luluk dari teknik mesin universitas jember, saya sekarang sedang mengambil proyek akhir, saya bingung mas menentukan kecepatan sudut dari motor servo. ada ga’ mas nilai kecepatan sudut dari motor servo? karena motor servonya itu saya hubungkan dengan batang penghubung yang dapat menggerakkan pintu hopper, nah untuk mencari nilai panjang batang tersebut saya membutuhkan nilai kecepatan sudut dari motor servo. mohon bantuannya mas

LULUK FITRIYANI

OK mas terimakasih sarannya

aku

mantap dah atikelya ..bos ajie..lanjutkan bos…

yusuf rahmatullah

Hai mas, salam kenal..
mua nanya, pernah nyoba ngatur ketelitian sudut motor servo dc agar dia bisa muter 0.01 derajat? soalnya kalo pwm biasa sanya nyoba cuman punya ketelitian muter 1 derajat. nggak bisa sampe dibawah 1 deraja.
Terima kasih..

Anu

hallo salam kenal, saya nnya nih bosss,,
saya perlu mengatur kecepatan servo secara bersamaan, nah bagaimana caranya pake fungsi for itu untuk menggerakkan 2 servo secara bersamaan namun dengan sudut awal dan akhirnya berbeda,, terimakasih bnyak boussss 😀

Faisol

Mau nanya mas apakah motor servo bisa di kombinasikan dengan sensor kompas hmc5883L???

Faisol

Untuk sensor kompasnya itu digunakan untuk lebih efektif/ menonjol soalnya sensor kompas itu sya terapkan di robot vacuum cleaner mas.
Kan sama2 dalam bentuk drajat perintahnya nanti…

Faisol

Soalnya Sya juga menggunakan motor servo mas

Faisol

Saya itu sedang melaksanakan skripsi mas. Robot sebelumnya memakai motor dc saya mengembangkan menggunakan servo dan kompas tpi mau lebih menonjolkan kegunaan kompasnya mas …jadi
bingung di programnya mas soalnya jika menggunakan servo robot sdah stabil jalannya…
Trus untuk kompas itu yng lebih efektif digunakan untuk ap di dalam pergerakan robot itu iyy mas?

Faisol

Kalau sensor kompas digunakan sebagai acuan dalam navigasi (penunjuk arah ) dan menggunakan motor servo gmana kira2 contoh codingnya mas…?
Mohon bantuannya mas…
Sya bingung krena pnelitian sbelumnya pakek motor dc…

ALvian

bung pada saat dia putar ke kiri trus berhenti 1 menit bisa gak ya trus dia berputar kembali kekanan trus berhenti dikanan 1 menit lagi, gmn ya codingnya ,kasih masukkan dong bung

Rizki

Numpang tanya,,, Apakah bisa servo di setting bergerak atau aktif berdasarkan jam, jadi diseting untuk bergerak atau aktif berdasarkan setting jam

djodi

permisi mau tanya, bila dijadikan satu kondisi gimana mas?

djodi

saya coba jadikan void mas jadi di loop tinggal manggil voidnya saja, apa bisa? karena saya mau makai kecepatannya saja

djodi

hehe jadi gini mass
jadi servo itu gerak dari derat 0 – 180 bila di picu satu kondisi, dan bergerak sesuai kecepatan yang di atur, begitupun sebaliknya

djodi

atau di dalam void di beri loop lgi apa bisa?

Rafi

Mohon bantuannya mas saya mau bikin coding untuk membuka jendela mengunakan servo, jadi saya mau bikin pas tombol on di tekan servo aktif tetapi tetap di derajat yang ditentukan pas saya tekan tombol off maka jendela turun secara perlahan.
Soalnya sudah saya coba coding yng ada diatas tapi servo nya tidak berhenti di sudut yang ditentukan.
#mohon bantuannya mas#

37
0
Would love your thoughts, please comment.x
()
x