Kamis, 31 Januari 2013

Cara Menggunakan Servo Controller SSC32 dengan CodeVision AVR

Assalamualaikum.., wr.wb.


     Setelah ane posting tentang Pengenalan Motor Servo, kali ini ane mau share bagaimana cara menggunakan servo controller ssc32 untuk menggerakan motor servo dengan pemograman bahasa C codevision AVR. 

     Ok., langsung ja.., Servo controller ssc32 merupakan device yang berfungsi untuk menggerakkan motor servo hingga 32 buah motor. ssc32 sama halnya dengan driver motor pada motor dc, yaitu untuk menjembatani antara minsys mikrokontroler dengan motor servo. Servo controller ssc32 yang saya gunakan merupakan buatan dari lynxmotion. Harga ssc32 kalau sekarang sktr $40, tapi jangan takut di Indonesia sudah ada yg berhasil membuat kloningan ssc32 dengan harga yg lebih murah sktr 350rb. berikut penampakan servo controller ssc32.
Gambar 1. Servo Controller SSC32

Jika ada yang mau download user manual bisa klik disini. 

Spesifikasi ssc32 :
  • Microcontroller = Atmel ATMEGA168-20PU
  • EEPROM = 24LC32P (Required for 2.01GP) 
  • Speed = 14.75 MHz
  • Internal Sequencer = 12 Servo Hexapod (Alternating Tripod)  
  • Serial input = True RS-232 or TTL, 2400, 9600, 38.4k, 115.2k, N81 
  • Outputs = 32 (Servo or TTL)  
  • Inputs = 4 (Static or Latching, Analog or Digital) 
  • PC interface = DB9F
  • Current requirements = 31mA  
  • Microcontroller interface = Header posts 
  • Servo control = Up to 32 servos plug in directly  
  • Servo motion control = Immediate, Timed, Speed or Synchronized. 
  • PC board size = 3.0" x 2.3"  
  • VS current capacity = 15 amps per side, 30 amps max
     Selanjutnya untuk melihat bagian ssc32 , jumper dan connector SSC32 dapat dilihat dibawah ini:

Gambar 2. Bagian-Bagian SSC32
Gambar 3. Jumper dan Connector SSC32
     Dari gambar diatas kita bisa melihat aturan main dari ssc32, dan kayaknya gak perlu ane jelasin coz emank udah jelas., hehehe,, tp klo emank ada yang belum jelas komen ja yak..!! 
Komunikasi yg digunakan ssc32 dengan Minsys Avr adalah serial. dimana dalam coding'y mempunyai aturan main sendiri, seperti di bawah ini.

contoh untuk menggerakan 1 servo :
 " # 2 P1500 <cr> "
dari contoh tsb servo akan bergerak pada channel 2 ke posisi 1500, dan cr itu merupakan karakter ascii 13 yg diperlukan untuk melakukan gerakan servo.

contoh untuk menggerakan group servo :
 "# 0 P500 #2 P1000 #4 P500 #6 P1000 <cr>"
dari contoh tsb servo pada channel 0 dan 4 bergerak ke posisi 500, sedangkan untuk channel 2 dan 6 akan bergerak ke posisi 1000.

Sebelum kita ke pemograman bahasa C CVAVR untuk menggunakan ssc32, sebaiknya kita lihat dulu wiring diagramdi bawah ini.

Gambar 4. Wiring Diagram SSC32

     Dari wiring diagram diatas dapat kita lihat konektor untuk ssc32 dengan bot board / minsys hanya 2 kabel yaitu warna merah (RX) dan warna hitam (ground), hal ini karena bot board / minsys sebagai transmitter / pengirim data. jika pada minsys avr seri atmega 16, 8535 atau 32. maka konektor (RX) di hubungkan pada pin d.1. kemudian untuk supply tegangan terdapat warna merah (+) dan warna hitam (-), sumber tegangan yang digunakan yaitu 9 Vdc untuk supply ssc32 dan 6 Vdc untuk supply motor servo. sumber tegangan tersebut terpisah agar tidak saling membebani. setelah itu untuk konektor servo terdapat 3 kabel yaitu merah(+), hitam (ground / - ), dan kuning (sinyal / pulsa).

Next..!!! kita lanjut ke Codevision AVR.

Pengaturan mikrokontroler dan kristal menggunakan codewizard :


Pengaturan komunikasi serial menggunakan codewizard :



Listing Program sebagai berikut :

/*****************************************************
Project :  Komunikasi serial ssc32
Date    :   31/3/2013
Author  : Joko Lelono
Company : Jhorobin
Comments: minsys hanya sebagai transmitter

Chip type           : ATmega8535
Program type        : Application
Clock frequency     : 11.059200 MHz
Memory model        : Small
External RAM size   : 0
Data Stack size     : 256
*****************************************************/
#include <mega8535.h>
#include <delay.h>
#include <stdio.h>

void main(void)
{

PORTD=0x00;
DDRD=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 115200
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x05;

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

while (1)
      {
      // Place your code here
      putsf("#16 P500 #20 P500");        // servo di channel 6 dan channel 20 ke posisi 0 derajat.
      putchar(13);
      delay_ms(2000);
      putsf("#16 P2200 #20 P2200");    // servo di channel 6 dan channel 20 ke posisi 180 derajat.
      putchar(13);
      delay_ms(2000);
      };
}


Gimana gan simple kan.., hehehe,.. coding diatas hanya sample untuk menggerakan 2 motor servo dan 2 posisi. coding diatas bisa di kembangkan lagi untuk smoothing servo dan project robot berkaki ataupun humanoid dengan menggerakan banyak servo.

ohya untuk temen2 yg gak punya servo controller ssc32 gak usah takut, nanti ane akan bahas tentang servo controller menggunakan minsys avr dengan memanfaatkan interupt timer. so keep follow my blog..!!

ane kira cukup sampai disini dulu pembahas ssc32. untuk video bisa liat di bawah ini, klo ada yg kurang jelas komen ja. Ok..!!
Semoga bermanfaat.

Wassalam..,














Selasa, 29 Januari 2013

Pengenalan Motor Servo


Assalamualaikum..,wr.wb.

Gak Nyangka ternyata blog gak pernah di update ampe 1 tahun. untung masih bisa di buka. hehehe..,
OK dah ane langsung aja, Kali ini ane akan mencoba membahas tentang Motor Servo.

      Motor servo pada pada umumnya terdiri dari dua jenis yaitu motor servo standar yang memiliki putaran 180o dan motor servo continuos yang memiliki putaran 360o. Motor servo hanya memiliki 3 buah kabel yaitu Vcc, Ground, dan sinyal. Motor servo memiliki kemampuan mempertahankan posisi sudutnya (jika diberikan pulsa terus-menerus), karena kemampuannya tersebut motor servo juga disebut position locking motor. Pada robot, motor ini sering digunakan untuk bagian kaki, lengan, atau bagian-bagian lain yang mempunyai gerakan terbatas dan membutuhkan torsi yang cukup besar.
      Motor servo standar 180o dapat bergerak dua arah (CW dan CCW) dengan defleksi masing-masing sudut mencapai 90o sehingga total defleksi sudut dari kanan–tengah–kiri adalah 180o seperti yang terlihat pada (Gambar 1).


 Gambar 1. Sudut Motor Servo

     Ada beberapa merk motor servo di pasaran, motor servo yang sering saya gunakan yaitu merk Hitec HS-322HD, HS-422, dan GWS micro standard. berikut penampakan dari motor servo tsb.

Gambar 2. Dari kiri - kanan : Hitec HS-322HD,
HS-422, dan GWS micro standard

Adapun spesifikasi dari motor servo tersebut dapat dilihat pada tabel di bawah ini :

Tabel 1. Spesifikasi motor servo
     Pada diatas menjelaskan spesifikasi motor servo jenis standar (HS-322),  (HS-422), dan motor servo jenis mikro (GWS Micro standard), motor servo yang memiliki ukuran lebih besar biasanya memiliki torsi yang lebih besar pula dan servo yang memiliki ukuran lebih kecil memiliki kecepatan putar yang lebih cepat.
      Motor servo akan bergerak secara baik jika pin outputnya diberikan sinyal PWM dengan frekuensi 50Hz. Motor servo digerakkan oleh sebuah  pulsa ± 20ms, lebar pulsa antara 0,5ms dan 2,5ms menyatakan awal dan akhir dari range sudut maksimum. Berikut adalah bentuk pulsa yang harus diberikan pada motor servo dapat dilihat pada (Gambar 3).
 

 Gambar 3. Pergerakan Motor Servo Terhadap Perubahan Lebar Pulsa.

      Motor servo pada (Gambar 3) apabila diberikan durasi pulsa high sebesar 1,5ms maka horn dari motor servo akan bergerak 90o (center), durasi pulsa high kurang dari 1,5ms maka horn dari motor servo akan bergerak mendekati 0o , dan jika durasi pulsa high lebih dari 1,5ms maka horn dari motor servo akan bergerak mendekati 180o. Nilai pulsa diatas tidaklah mutlak dikarenakan setiap motor servo memliki karakteristik yang berbeda. Hubungan antara sudut motor servo dengan durasi pulsa high berbanding lurus atau linear. Berikut adalah gambar hubungan antara sudut dan durasi pulsa high motor servo. 
Gambar 4. Hubungan antara sudut dan durasi pulsa high motor servo.
Dari diatas terlihat hubungan antara sudut motor servo dengan durasi pulsa high adalah berbanding lurus atau linear, untuk menentukan besarnya durasi pulsa high terhadap sudut motor servo bisa menggunakan persamaan garis lurus (Stroud, 1987). 


Keterangan :
t  = durasi pulsa high untuk sudut yang diinginkan (ms)
t1 = durasi pulsa high untuk sudut awal (ms)
t2 = durasi pulsa high untuk sudut akhir (ms)
θ  = Sudut yang diinginkan (derajat)
θ1 = Sudut awal (derajat)
θ2 = Sudut akhir (derajat)

Berikut adalah contoh dari perhitungan'y.:
Jika sudut yang diinginkan 90o maka:

                                             
Jika sudut yang diinginkan 142o maka :




Ok. ane rasa cukup untuk pengenalan motor servo.
Kalau ada yang kurang jelas silahkan komen ja. OK..!!!
 
selanjutnya ane akan bahas tentang Servo Controller .
so, ikutin terus blog ane..!!! hehe...,