Membuat Robot Line Follower
Nah…kali ini saya ingin share tentang bagaimana membuat robot line follower sederhana. Robot line follower ini menggunakan mikrokontroller yitu jenis ATMega8 dengan menggunakan codevision AVR.
Disini saya akan menerangkan bagaimana langkah – langkah membuat robot line follower yang sederhana. Bagi para pecinta robotika yang mungkin bru mulai belajar tentang robotika sebaiknya belajar dulu membuat robot yang paling sederhana dulu.
Robot line follower, adalah sebuah robot yang bisa bergerak mengikuti garis tebal berwarna hitam. Bagaimana bisa robot ini mengikuti garis hitam? Tentulah diperlukan sebuah sensor. Sensor ini 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 putih 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.
Berikut ilustrasi dari sensor garis :
- a. Cahaya pantulan sedikit
- b. Cahaya pantulan banyak
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.
Berikut rangkaian sensor dan komparator :
Sebagai otak dari robot ini kita menggunakan ATMega8. Berikut adalah rangkaian minimum system ATMega 8 :
download datasheet ATMega8 klik disini
#include <mega8.h>
#include <delay.h>
#define senka1 PIND.0
#define senka2 PIND.1
#define senki2 PIND.2
#define senki1 PIND.3
#define enki PORTC.0
#define enka PORTC.5
#define dirA_ki PORTC.2
#define dirB_ki PORTC.1
#define dirC_ka PORTC.4
#define dirD_ka PORTC.3
#define pb_start PINB.0
#define on 0
#define off 1
bit start;
unsigned char xcount,lpwm,rpwm;
xcount++;
if (xcount <=lpwm){ enki=1;}
else {enki=0;}
if (xcount <=rpwm) {enka=1;}
else {enka=0;}
if (pb_start==on) start=on;
else if (pb_start==off) start=off;
TCNT0=0xFF;
}
void maju()
{
dirA_ki=1;
dirB_ki=0;
dirC_ka=0;
dirD_ka=1;
}
void belok_kanan()
{
dirA_ki=1;
dirB_ki=0;
dirC_ka=1;
dirD_ka=0;
}
void belok_kiri()
{
dirA_ki=0;
dirB_ki=1;
dirC_ka=0;
dirD_ka=1;
}
bit x;
unsigned char sensor;
void scan_garis()
{
sensor=PIND;
if (sensor==0b11111110) {maju(); rpwm=30; lpwm=90; x=1;}
else if (sensor==0b11111100) {maju(); rpwm=50; lpwm=90; x=1;}
else if (sensor==0b11111101) {maju(); rpwm=70; lpwm=100; x=1;}
else if (sensor==0b11111000) {maju(); rpwm=160; lpwm=110; x=1;}
else if (sensor==0b11111001) {maju(); rpwm=220; lpwm=220; }
else if (sensor==0b11110001) {maju(); rpwm=160; lpwm=110; x=0;}
else if (sensor==0b11111011) {maju(); rpwm=100; lpwm=70; x=0;}
else if (sensor==0b11110011) {maju(); rpwm=90; lpwm=50; x=0;}
else if (sensor==0b11110111) {maju(); rpwm=90; lpwm=30; x=0;}
else if (sensor==0b11111111)
{
if (x==1) {belok_kanan(); rpwm = 60; lpwm = 60; }
else {belok_kiri(); rpwm = 60; lpwm = 60; }
}
}
Setelah selesai membuat program, maka kita harus men”download”nya ke dalam mikrokontroler.
Untuk rangkaian driver motor saya menggunakan L298. Berikut skematiknya :
download datasheet L298 klik disini
berikut ini adalah beberapa gambar hasil robot buatan saya…… ya meskipun bentuknya kurang estetika…tapi robotnya mampu berjalan sesuai dengan programnya…
Mungkin cukup ini dulu……silahkan berkreasi dengan programnya…..
Semoga bermanfaat……
1 komentar:
kok pas compile ada yang error ya kak
Posting Komentar