Cara Mengendalikan Motor Servo

Pada jejak kali ini akan mencoba membahas cara mengendalikan motor servo. Untuk mengingatkan kembali dipasaran terdapat 2 tipe motor servo yaitu servo standard dan servo rotation (continuous). Dimana biasanya untuk tipe standar hanya dapat melakukan pergerakan sebesar 180° sedangkan untuk tipe continuous dapat melakukan rotasi atau 360°.

Pada dasarnya motor servo tersusun dari motor DC, rangkaian kontrol, gearbox dan potensiometer. Berikut gambar motor servo beserta komponen internal motor servo.

Bagian-Bagian Motor Servo
 

Terlihat jelas bahwa motor DC yang digunakan sangat kecil (compact) sehingga motor servo memiliki dimensi yang cukup kecil jika dibandingkan dengan motor DC pada umumnya. Rangkaian kontrol pada motor servo digunakan untuk mengontrol motor DC yang ada pada motor servo, dikarenakan untuk mengakses motor servo kita harus memberikan pulsa-pulsa kepada sinyal kontrol tersebut. Gearbox berfungsi untuk meningkatkan torsi dari motor servo, sebenarnya terdapat dua macam bahan penyusun gearbox yang digunakan untuk motor servo yaitu metal gear (biasanya untuk torsi yang sangat besar) dan nylon gear (berwarna putih seperti gambar di atas). Dan potensiometer berfungsi untuk menentukan batas sudut dari putaran servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang dikirimkan.

Diagram kontrol motor servo dapat dilihat dalam gambar di bawah ini.

Diagram Kontrol Motor Servo

Servo motor mempunyai 3 buah pin yang terdiri dari VCC, GND dan pin SIGNAL. Berikut adalah konfigurasi pin motor servo berdasarkan merk.

Konektor Motor Servo
 

Secara umum untuk mengakses motor servo tipe standard adalah dengan cara memberikan pulsa high selama 1,5 ms dan mengulangnya setiap 20 ms, maka posisi servo akan berada ditengah atau netral (0°). Untuk pulsa 1 ms maka akan bergerak kebalikan arah jarum jam (CCW) dengan sudut -90°.  Dan selanjutnya diberi pulsa high selama 2 ms akan bergerak searah jarum jam (CW) sebesar 90°. Untuk lebih jelasnya perhatikan gambar berikut.

 

Sedangkan untuk servo motor tipe continuous untuk berputar (rotasi)  searah jarum jam harus diberi pulsa high selama 1,3 ms. Sedangkan untuk berputar berlawanan arah jarum jam harus diberi logika high selama 1,7 ms. Jika motor servo continous diberi pulsa high selama 1,5 ms maka akan berhenti.

 

Catatan: Karakteristik lamanya pulsa high yang diberikan  untuk mengatur motor servo tergantung dari merk yang digunakan dengan mengacu pada datasheet.

Pin SIGNAL pada motor servo dapat dikoneksikan ke pin mana saja pada mikrokontroler, lihat gambar di bawah. Di sini saya akan memberikan contoh program cara mengakses motor servo menggunakan program CodeVision AVR.

Di bawah ini beberapa fungsi program untuk mengakses motor servo standard.

void gerak-90derajat()
{
PORTD.0=1;//memberikan pulsa high
delay_ms(1);//pulsa high diberikan selama 1 ms
PORTD.0=0;
delay_ms(20)
}

void gerak90derajat()
{
PORTD.0=1;//memberikan pulsa high
delay_ms(2);//pulsa high diberikan selama 2 ms
PORTD.0=0;
delay_ms(20)
}

void gerak0derajat()
{
PORTD.0=1;//memberikan pulsa high
delay_ms(1.5);//pulsa high diberikan selama 1,5 ms
PORTD.0=0;
delay_ms(20)
}

Sedangkan untuk motor servo continuous tidak jauh berbeda seperti motor servo standard.

void putarsearahjarumjam()
{
PORTD.0=1;//memberikan pulsa high
delay_ms(1.3);//pulsa high diberikan selama 1,3 ms
PORTD.0=0;
delay_ms(20)
}

void putarlawanjarumjam()
{
PORTD.0=1;//memberikan pulsa high
delay_ms(1.7);//pulsa high diberikan selama 1,7 ms
PORTD.0=0;
delay_ms(20)
}

void stop()
{
PORTD.0=1;//memberikan pulsa high
delay_ms(1.5);//pulsa high diberikan selama 1,5 ms
PORTD.0=0;
delay_ms(20)
}

Jika direalisasikan pada program menjadi seperti di bawah ini, disini saya akan mencontohkan motor servo standar bergerak 90°.

#include <mega16.h>
#include <delay.h>

void main(void)
{
PORTD=0x00;
DDRD=0x01;//portd.0 sebagai output

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (1)
      {
        PORTD.0=1;//memberikan pulsa high
        delay_ms(2);//pulsa high diberikan selama 2 ms
        PORTD.0=0;
        delay_ms(20); //pulsa low diberikan selama 20 ms
      }
}

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *