Motor Servo adalah
aktuator putar (motor) yang dirancang dengan sistem kontrol umpan balik loop
tertutup (servo), sehingga dapat di set-up atau di atur untuk menentukan dan
memastikan posisi sudut dari poros output motor. motor servo merupakan
perangkat yang terdiri dari motor DC, serangkaian gear, rangkaian kontrol dan
potensiometer. Serangkaian gear yang melekat pada poros motor DC akan
memperlambat putaran poros dan meningkatkan torsi motor servo, sedangkan
potensiometer dengan perubahan resistansinya saat motor berputar berfungsi
sebagai penentu batas posisi putaran poros motor servo (http://trikueni-desain-sistem.blogspot.com/2014/03/Pengertian-Motor-Servo.html).
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.
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.
Dibawah ini adalah contoh
coding yang digunakan untuk mengendalikan 3 sekaligus servo, dengan
memanfaatkan interupsi timer pada atmega
#include "mega.h" unsigned int delayServo1=100; unsigned int delayServo2=140; unsigned int delayServo3=190; // Timer1 output compare A interrupt service routine unsigned int x=0; interrupt [TIM1_COMPA] void timer1_compa_isr(void) //10 us { // Place your code here // 20ms==> 20.000us/10us = 2000 count if(x++==2000)x=0; else{ if(x>delayServo1) PORTC.0=0; else PORTC.0=1; if(x>delayServo2) PORTC.1=0; else PORTC.1=1; if(x>delayServo3) PORTC.2=0; else PORTC.2=1; } } void main(void) { PORTC=0x00; DDRC=0xFF; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 1500.000 kHz // Mode: CTC top=OCR1A // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x0A; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x0E; OCR1BH=0x00; OCR1BL=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x10; // Global enable interrupts #asm("sei") while (1); }
Well down, Tidak sulitkan kawan... Anda akan dengan mudah mengembangkan source code diatas.Make simply for easy understanding.
Jika ada pertanyaan silahkan tinggalkan dikolom komentar. semoga bermanfaat.
0 komentar:
Posting Komentar