Minggu, 18 Oktober 2009

Robot Line Follower Contest "ROBORACE 2009"

RoboRace Line Follower Robot Competition 2009

“Let’s Battle to Get The Victory”

Yogyakarta, 5 & 6 Desember 2009

Roborace Line Follower Robot Competition 2009 merupakan lomba adu cepat dan adu stategi robot Line Follower (robot penjajak garis) yang bertema “Let’s Battle to Get The Victory” diikuti oleh mahasiswa dari seluruh Indonesia. Roborace 2009 diselenggarakan selama 2 hari bertempat di gedung lantai 3 KPLT FT-UNY. Hari pertama digunakan untuk kualifikasi dan hari kedua digunakan untuk babak 32 besar go to final. Pada lomba ini lintasan arena terdiri 2 buah start dan 2 finish yang dimulai dari 2 sudut (lihat arena). Pada track line follower yang berukuran 480 cm x 360 cm yang memiliki karakter begitu variatif yaitu mulai dari track lurus yang panjang, percabangan sudut siku-siku, sudut lancip, lengkungan, garis putus-putus, dan banyak rintangan yang lain. Peserta diberi kebebasan untuk mengunakan berbagai strategi untuk mencapai garis finish. Setiap pertandingan, peserta akan mengadu 2 robot sekaligus (battle). Start dimulai pada dua sudut berhadapan dan dianggap mencapai finish apabila telah mencapai gerbang finish asalkan bukan di sisi start. Peserta akan mendapat 2 kali hak bertanding pada waktu babak kualifikasi dan sistem pertandingan akan mengunakan sistem akumulasi kecepatan kemudian sistem gugur setelah babak kualifikasi.

Peserta : Satu team terdiri dari satu robot dan maximum 3 orang teknisi, Max 150 team

Fasilitas :

Sertifikat untuk tiap peserta

Cocard untuk tiap peserta

Pin untuk tiap peserta

Konsumsi = 2 x makan + 2 x snack

Ruang Exclusive AC

2 kali tanding

Penginapan untuk peserta di luar D.I. Yogyakarta*

Biaya : Rp. 150.000,00 per tim

Hari, tanggal : Sabtu, 5 Desember 2009 & Minggu, 6 Desember 2009

Waktu : Jam 07.00 WIB sampai selesai

Tempat : Lantai 3, Gedung KPLT, Fakultas Teknik, Universitas Negeri Yogyakarta

Info Lebih Lanjut Klick : roborace.himanika-uny.org


keterangan lebih lanjut download peraturan !!!



Kamis, 22 Januari 2009

Tutorial robotika

DASAR –DASAR BIDANG ROBOTIKA
Sensor dan komparator

Sensor proximity bisa kita buat sendiri. Prinsip kerjanya sederhana,hanya memanfaatkan sifat cahaya yang akan dipantulkan jika mengenai benda berwarna terang dan akan diserap jika mengenai benda berwarna gelap. Sebagai sumber cahaya kita gunakan LED (Light Emiting Diode) yang akan memancarkan cahaya merah. Dan untuk menangkap pantulan cahaya LED, kita gunakan photodiode. Jika sensor berada diatas garis hitam maka photodioda akan menerima sedikit sekali cahaya pantulan. Tetapi jika sensor berada diatas garis putih maka photodioda akan menerima banyak cahaya pantulan. Sifat dari photodioda adalah jika semakin banyak cahaya yang diterima, maka nilai resistansi diodanya semakin kecil. Dengan melakukan sedikit modifikasi, maka besaran resistansi tersebut dapat diubah menjadi tegangan. Sehingga jika sensor berada diatas garis hitam, maka tegangan keluaran sensor akan kecil, demikian pula sebaliknya. Agar dapat dibaca oleh mikrokontroler, maka tegangan sensor harus disesuaikan dengan level tegangan TTL yaitu 0 – 1 volt untuk logika 0 dan 3 – 5 volt untuk logika 1. Hal ini bisa dilakukan dengan memasang operational amplifier yang difungsikan sebagai komparator. Output dari photodiode yang masuk ke input inverting op-amp akan dibandingkan dengan tegangan tertentu dari variable resistor VR. Tegangan dari VR inilah yang kita atur agar sensor proximity dapat menyesuaikan dengan kondisi cahaya ruangan.

Driver motor

Driver motor adalah suatu rangkaian yang berfungi untuk penggerak robot/pemberi tanggapan dari hasil olahan dari microcontroller sehingga robot dapat bergerak tanpa bantuan / otomatis. Metode rangkaian yang sering digunakan adalah matode H-Bridge Motor. Metode ini biasa menggunakan IC H-Bridge Motor Driver L298 / L293D atau menggunakan transistor sebagai saklar arus ke motor.





Microcontroler

Microcontroller adalah Sebagai ”otak” robot dan digunakan mikrokontroler AVR jenis ATmega8535 atau jenis microcontroller lain seperti AT 89S52, AT 89S51, AT 89C51, AT 89C52 , dll yang memiliki kelebihan masing-masing. Microcontroller yang akan membaca data dari sensor proximity, mengolahnya, kemudian meneruskan ke driver motor dan memutuskan arah pergerakan robot. Microcontroller berfikir dan mengolah data masukan berdasarkan algorima yang kita buat dan dibahasakan kedalam behasa- behasa pemograman. Contoh behasa- behasa pemograman mikrocontroler Assembly, Paskal, Basic dan bahasa C*. Sekarang juga telah ada bahasa pemograman C AVR yang dibuat mengunakan bantuan Softwere Code Vision AVR Eval. Code Vision AVR C Compiler (CVAVR) merupakan compiler berbahasa C untuk AVR. Compiler ini cukup memadai untuk belajar AVR, karena selain mudah pengunaannya juga didukung beberapa fitur yang sangat memebantu dalam membuat softwere dalam pemograman AVR.

Membuat Source Code

Source code secara lengkap dapat dilihat pada Lampiran Source code dibuat dengan

menggunakan software CodeVisionAVR dengan langkah-langkah sebagai berikut :

  1. Jalankan CodeVisionAVR, kemudian klik File -> New, Pilih Project.






2. “Do you want to use the CodeWizardAVR?” Klik Yes

3. Pilih Chip yang digunakan, chip : ATmega8535L, clock : 11.059200 MHz
























4. Lakukan setting sebagai berikut :

Port : Port C sebagai Output dan Port D sebagai Input Pullup

Timers : Timer 0 dengan Clock Value 10,800 KHz, aktifkan Overflow Interrupt













5. Klik File -> Generate, Save and Exit

6. Buatlah source code.

7. Setelah selesai membuat source code, klik Setting -> Programmer

8. Pilih AVR Chip Programmer Type : Kanda System STK200+/300 dan pilih Printer Port pada LPT1 : 378h








9. Klik Project -> Configure, kemudian pilih menu After Make dan aktifkan Program the Chip.

Klik OK jika sudah.

PERHATIAN ! Jangan mengubah setting apapun pada menu ini. Jika salah memilih,

chip Anda tidak bisa digunakan lagi !!











10. Untuk meng-compile project, klik Project -> Make

11. Jika tidak ada error maka file siap didownload ke chip. Pastikan koneksi kabel downloader dan chip sudah terpasang dengan benar.

12. Nyalakan power supply dan klik Program. Tunggu hingga proses download selesai.








*Gambar sensor komparator













MODUL WORKSHOP ROBOTIKA
CONTOH ALGORITMA PADA PEMROGRAMAN MICROCONTROLLER DENGAN
BAHASA C++

1. PENDAHULUAN
Bahasa C/C++ adalah bahasa pemrograman yang sangat digemari karena bahasa C/C++ adalah
bahasa yang sangat kompatibel untuk pemrograman computer berbasis Windows ataupun nix,
bahkan bisa untuk pemrograman mikrokontroler dari Atmel, PIC, dsb.
Bahasa C/C++ adalah suatu singkatan yaitu C yang berarti Case sensitive, artinya dalam
pemrograman bahasa C ini antara huruf besar dan huruf kecil adalah berbeda ( A  a ). Maka
dalam membuat progam dengan bahasa C/C++ ini harus berhati-hati dalam menuliskan
perintah, konstanta, dsb.
Pada dasarnya pemrograman mikrokontroler ini adalah fungsi I/O, yaitu pengolahan nilai-nilai
input yang diproses untuk menghasilkan nilai-nilai output yang dikehendaki. Nilai-nilai input
atau output biasanya berbentuk bilangan biner atau hexadecimal.
2. INCLUDE
Dalam bahasa pemrograman C/C++ dikenal perintah yaitu INCLUDE, yaitu sebuah perintah
yang digunakan untuk memasukkan sebuah file *.h, yang berisi perintah-perintah atau
konstanta yang digunakan dalam membuat program. Sebagai contohnya
#include
Maka semua perintah dan konstanta yang ada dalam file stdio.h dapat diakses dalam project yg
dibuat.


3. DEFINE
Perintah ini digunakan untuk mendefinisikan nilai, alamat, atau sejenisnya. Sebagai contohnya
#define aku foker
Dari baris berintah diatas, aku adalah pengganti foker ( aku = foker ).


4. VARIABLE & KONSTANTA
a. VARIABEL
Dalam pemrograman C/C++ penulisan variable dapat ditulis sebagai berikut

Sebagai contoh int indeks, dari contoh tersebut nama variable yang bernama indeks
mempunyai jenis data yaitu integer.

b. KONSTANTA
Konstanta atau yang disebut nilai tetap/constant dalam pemrograman C/C++ dapat
dituliskan
=
Hampir mirip dengan penulisan varibel, hanya saja ditambahkan besar nilainya.
Misalnya saja, int kecepatan_motor = 200. Sehingga konstanta yang bernama
kecepatan_motor akan bernilai 200.


c. JENIS DATA
Tipe Ukuran
(bit)
Range
bit 1 0,1
char 8 -128 to 127
unsigned char 8 0 to 255
signed char 8 -128 to 127
int 16 -32768 to 32767
short int 16 -32768 to 32767
unsigned int 16 0 to 65535
signed int 16 -32768 to 32767
Long int 32 -2147483648 to 2147483647
unsigned long int 32 0 to 4294967295
Signed long int 32 -2147483648 to 2147483647
float 32 ±1.175e-38 to ±3.402e38
double 32 ±1.175e-38 to ±3.402e38


5. COMMENT ATAU KOMENTAR
Komentar dalam bahasa C/C++ harus diawali dengan karakter “//” (tanpa tanda petik) atau bisa
juga ditulis dengan diawali “/*”(tanpa tanda petik) dan diakhiri dengan “*/”(tanpa tanda petik).
Sebagai contoh
// ini hanya komentar/catatan ga’ usah dipedulikan
/*ini bukan perintah alias tidak penting*/
///*ngemeng epeh


6. OPERATOR
Dalam bahasa C/C++ ada beberapa operator yaitu
Bentuk
Operator
Contoh Arti
== A == A A Sama dengan A ( A bernilai sama dg A )
!= A != a A Tidak sama dengan a ( A berbeda dengan )
<> C > B C Lebih besar B
>= C >= B C Lebih besar atau sama dengan B
= X = 10 Menyamakan/memasukkan nilai ( X diberi nilai 10 )
* A * B A dikali dengan B
/ A / B A dibagi dengan B
+ A + B A ditambah dengan B
- A – B A dikurangi dengan B
7. FUNGSI
Fungsi dalam bahasa pemrograman C/C++ secara umum dapat dituliskan
void ( )
contohnya
void belok(int kekanankah)
{
if (kekanankah == 1) { //apakah belok kekanan
Motor_1 = 1;
Motor_2 = 0; }
else {
Motor_1 = 0;
Motor_2 = 1; }
}
jika menghendaki fungsi tanpa parameter maka dapat ditulis
void ()
contohnya
void jalan_lurus()
{
Motor_1 = 1;
Motor_2 = 1;
}
8. IF … ELSE ….
Perintah if … else … dalam bahasa C/C++ fungsinya pada dasarnya adalah untuk memilih
tindakan antara 2 keadaan. Misalnya
if ( ada_garis == 1) {
maju(); } //memanggil fungsi yang bernama maju, jika nilai ada_garis = 1
else {
mundur(); } //memanggil fungsi yang bernama mundur, jika nilai garis selain 1


9. SWITCH … CASE …. BREAK
Perintah switch … case … pada dasarnya sama seperti perintah if … else …, hanya saja
switch … case … break lebih efisien untuk memilih tindakan dari banyak keadaan.
Contohnya
switch (sensor) {
case 0b00111111:
belok_kiri();
break;
case 0b11100111:
maju();
break;
case 0b11111100:
belok_kanan();
break;
}
Jika nilai sensor bernilai 0b11100111 maka akan menjalankan fungsi yang bernama maju
selanjutnya akan keluar dari perintah switch … case …. Namun jika nilai sensor 0b11111111
atau bisa dikatakan tidak ada dalam daftar case, maka perintah switch tidak akan menjalankan
perintah/fungsi apapun.


10. WHILE
while adalah suatu perintah perulangan. Secara umum perintah while dituliskan sebagai
berikut
while(keadaan)
contohnya
int jumlah_perulangan = 10;
while (jumlah_perulangan != 0) {
jumlah_perulangan = jumlah_perulangan -1; }
dari contoh di atas tadi, dapat ditarik kesimpulan bahwa nilai jumlah_perulangan akan
dikurangi dengan 1 selama 10 kali.
11. PEMROGRAMAN MIKROKONTROLER UNTUK LINE FOLLOWER
a. ALGORITMA MEMBACA GARIS
Sebelum membuat program, maka kita mendefinisikan seluruh kemungkinan
pembacaan sensor dahulu. Dengan demikian kita dapat menentukan pergerakan robot
yang tujuannya adalah menjaga agar robot selalu berada tepat diatas garis. Sebagai
contoh jika konfigurasi tata letak sensor dari robot adalah sebagai berikut
* * * * * * *
0 1 2 3 4 5 6
*
7
maka dapat dibuat daftar dari kemungkinan terbesar sensor-sensor tersebut membaca
garis adalah sebagai berikut
Kiri tajam Kiri Lurus Kanan Kanan tajam
01111110 01111001 01110111 01100111 01011111
11111110 11111001 11110111 11100111 11011111
01111100 01111011 01111111 01101111 00011111
MODUL WORKSHOP ROBOTIKA
11111100 11111011 11101111 10011111
01111101 01110011 01001111 00111111
11111101 11110011 11001111 10111111
Dari daftar-daftar nilai tersebut lalu dapat dibuat program mikrokontroler untuk
menggerakkan/menjalankan robot agar berjalan mengikuti garis yang ditentukan
menggunakan perintah switch ... case ... break, sehingga programnya menjadi seperti
dibawah ini
switch(sensor) {
case 0b01111110:
case 0b11111110:
kiri_tajam();
break;


case 0b01111001:
case 0b11111001:
belok_kiri();
break;


case 0b01110111:
case 0b11110111:
maju();
break;

… }
b. PWM (Pulse Width Modulation)
Pulse Width Modulation atau yang bisa disebut PWM ini berfungsi sebagai pengatur
kecepatan motor. Fungsi PWM ini dapat di bentuk/dibuat dengan metode ISR (Interrupt
Service Routine) dengan memanfaatkan fitur Timer yang ada pada AVR pada saat
timer tersebut terjadi overflow/melimpah.
Berikut ini adalah contoh dari PWM
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
count++;
if (count<=pwm) output=1; else output=0; TCNT0=0xFF; } Fungsi interrupt diatas akan dijalankan saat timer 0 mengalami overflow atau nilai TCNT0 melebihi 0xFF. Misalnya saja jika nilai variabel pwm diatas diberi nilai 200 maka nilai variabel output akan bernilai 1 selama 200 kali overflow. Semakin lama output bernilai 1 maka semakin cepat pula putaran motor, begitu sebaliknya. LAMPIRAN Contoh program line follower /* contoh program robot line polower konfigurasi sensor input pada PINA. * * * * * * * 0 1 2 3 4 5 6 * 7 warna garis = hitam logika garis = 0 sensor belakang untuk garis putus-putus */ #include
#define sensor PINA //input dari comparator sensor
#define ki_ma PORTB.0 //motor kiri arah maju
#define ki_mu PORTB.1 //motor kiri arah mundur
#define E_ki PORTB.2 //motor kiri mode on/off
#define ka_ma PORTB.3 //motor kanan arah maju
#define ka_mu PORTB.4 //motor kanan arah mundur
#define E_ka PORTB.5 //motor kanan mode on/off
void maju()
{
ki_ma = 1; //mtr kiri maju
ka_ma = 1; //mtr kanan maju
E_ki = 1; //hidupkan mtr kiri
E_ka = 1; //hidupkan mtr kanan
}
void mundur()
{
ki_mu = 1; //mtr kiri mundur
ka_mu = 1; //mtr knan mundur
E_ki = 1; //hdupkan mtr kiri
E_ka = 1; //hidupkan mtr kanan
}
void belok_kanan()
{
ki_ma = 1; //mtr kiri maju
E_ki = 1; //hdupkan mtr kiri
E_ka = 0; //matikan mtr knan
}
void belok_kiri()
{
ka_ma = 1; //mtr kanan maju
E_ka = 1; //hdupkan mtor kanan
E_ki = 0; //matiksn mtr kiri
}
void kanan_tajam()
{
ki_ma = 1; //mtr kiri maju
ka_mu = 1; //motor kanan mundur
E_ki = 1; //hdupkan motor kiri
E_ka = 1; //hdupkan motor kanan
}
void kiri_tajam()
{
ka_ma = 1; //mtr kanan maju
ki_mu = 1; //mtr kiri mundur
E_ki = 1; //hdupkan mtr kiri
E_ka = 1; //hdupkan mtr kanan
}
void baca_garis()
{
switch(sensor) {
case 0b01111110: //KIRI
case 0b11111110:
kiri_tajam();
break;
case 0b01111100:
case 0b11111100:
kiri_tajam();
break;
case 0b01111101:
case 0b11111101:
kiri_tajam();
break;
case 0b01111001:
case 0b11111001:
belok_kiri();
break;
case 0b01111011:
case 0b11111011:
belok_kiri();
break;
case 0b01110011:
case 0b11110011:
belok_kiri();
break;
/////////////////////////////////////////////////////////////
case 0b01110111: //TENGAH
case 0b11110111:
maju();
break;
/////////////////////////////////////////////////////////////
case 0b01100111: //KANAN
case 0b11100111:
belok_kanan();
break;
case 0b01101111:
case 0b11101111:
belok_kanan();
break;
case 0b01001111:
case 0b11001111:
belok_kanan();
break;
case 0b01011111:
case 0b11011111:
kanan_tajam();
break;
case 0b00011111:
case 0b10011111:
kanan_tajam();
break;
case 0b00111111:
case 0b10111111:
kanan_tajam();
break;
/////////////////////////////////////////////////////////////
case 0b01111111: //BELAKANG
maju();
break; }
void main(void)
{
// PORT A SEBAGAI INPUT
PORTA=0x00;
DDRA=0x00;
// PORT B SEBAGAI OUTPUT
PORTB=0x00;
DDRB=0xFF;
// PORT C GA' DIPAKE
PORTC=0x00;
DDRC=0x00;
// PORT D JG GA' DIPAKE
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x01;
ACSR=0x80;
SFIOR=0x00;
while (1)
{
//disini akan terjadi perulangan terus menerus tiada henti.
baca_garis();
};
}

By : Pend.Tek. Elektronika, UNY

Kamis, 03 Juli 2008

आमिर फतह फत्चुर्रोह्मन



AMIR FATAH FATCHURROHMAN adalah sebuah nama yang dianugrahkan oleh orang tua saya pada tgl 2 februar 1989.
Mungkin tidak semua orang mengenal nama itu!
Aku adalah orang sederhana ,apa adanya ,sipel , selalu +thinking , g banyak bicara banyak hasilnya!
mungkin banyak orang yang tak sadar akan sfat-sifat Q tapi aq sadar bagai mana sikap bahkan sifat mereka!!
karena aQ orang yang peka!!