Senin, 27 Juni 2011

MENGAKSES MOTOR SERVO

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.


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, sebernarnya 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 diatas). Dan potensiometer berfungsi untuk menentukan batas sudut dari putaran servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang dikirimkan.

Dikarenakan bentuknya yang compact motor servo sering digunakan untuk aplikasi robotik, biasa digunakan untuk penggerak kaki dan tangan robot.

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


Sekarang saya akan menjelaskan bagaimana cara mengakses 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 berkebalikan arah jarum jam dengan sudut -90°.  Dan pulsa high selama 2 ms akan bergerak searah jarum jam 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 kepada datasheet.

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


Dibawah 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 dibawah ini, disini saya akan mencontohkan motor servo standar bergerak 90°.

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

void main(void)
{
PORTD=0×00;
DDRD=0×01;//portd.0 sebagai output

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;

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

Semoga bermanfaat...

4 komentar: