judul
Breaking News
Loading...
Jumat, 05 Juni 2015

Mengakses servo multichannel pada AVR ATmega

Jumat, Juni 05, 2015

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

 
Toggle Footer