Silahkan download file pdf berikut:
Robot autonomous line follower bolabot
Untuk yang membutuhkan simulasi Robot Line Follower Digital, silahkan download File berikut:
1. Desain Proteus dan Code Vision AVR Line Follower ATMega 16
2. Desain Proteus dan Code Vision AVR Line Follower ATMega 8
Line follower Robot (Robot
Pengikut Garis) adalah robot yang dapat berjalan mengikuti sebuah lintasan, ada
yang menyebutnya dengan Line Tracker,
Line Tracer Robot dan sebagainya.
Garis yang dimaksud adalah garis berwarna hitam diatas permukaan berwarna putih
atau sebaliknya, ada juga lintasan dengan warna lain dengan permukaan yang
kontras dengan warna garisnya. Ada juga garis yang tak terlihat yang digunakan
sebagai lintasan robot, misalnya medan magnet.
Gambar 1. Ilustrasi robot line
follower dengan posisi sensor di atas permukaan putih
Seperti
layaknya manusia, bagaimana manusia dapat berjalan mengikuti jalan yang ada
tanpa menabrak dan sebagainya, tentunya karena manusia memiliki “mata” sebagai
penginderanya. Begitu juga robot line follower ini, dia memiliki sensor garis
yang berfungsi seperti “mata” pada manusia. Sensor garis ini mendeteksi adanya
garis atau tidak pada permukaan lintasan robot tersebut, dan informasi yang
diterima sensor garis kemudian diteruskan ke prosesor untuk diolah sedemikian
rupa dan akhirnya hasil informasi hasil olahannya akan diteruskan ke penggerak
atau motor agar motor dapat menyesuaikan gerak tubuh robot sesuai garis yang
dideteksinya.
Gambar 2. Diagram blok robot line follower
Untuk
merangkai rangkaian elektroniknya kita perlu tahu dulu diagram blok sistem yang
akan kita bangun, dengan demikian akan menjadi mudah mengerjakannya. Blok
sistem yang akan kita bagun paling tidak tampak seperti gambar berikut.
Sistemnya terdiri dari sensor garis, rangkaian komparator, sistem minimum AT Mega dan motor driver.
ROBOT LINE FOLLOWER DIGITAL MIKROKONTROLER ATMEGA 16
Desain berikut menggunakan mikrokontroler ATmega 16, LCD 2x 16, 2 buah sensor phototransistor
Skema Lengkap Line follower Digital IC Komparator
Desain berikut menggunakan mikrokontroler ATmega 16, LCD 2x 16, 2 buah sensor phototransistor
Skema Lengkap Line follower Digital IC Komparator
Pada
skema lengkap robot line follower
didesain dengan posisi sensor di atas permukaan putih. Dua buah sistem sensor
di pasang pada pin B.0 dan B.1, sedangkan sistem actuator motor DC dipasang
pada Port D.0 dan D.1 untuk motor kiri, D.2 dan D.3 untuk motor kanan. Prinsip
kerja robot line follower berikut
adalah saat sistem sensor berada di atas permukaan putih, akan ada pantulan
cahaya dari LED yang akan mengenai sensor cahaya LDR sehingga resistansi sensor
LDR berkurang sehingga arus bergerak melalui LDR. Kondisi tersebut menyebabkan
arus output sensor menuju IC komparator LM 393 menjadi minimum, oleh IC LM 393,
arus di non-inverting sehingga output menuju pin mikrokontroler menjadi LOW
(0). Sebaliknya, saat sistem sensor berada di atas garis hitam, tidak akan ada
pantulan cahaya dari LED yang akan mengenai sensor cahaya LDR sehingga
resistansi sensor LDR sangat besar sehingga arus tidak akan melalui LDR.
Kondisi tersebut menyebabkan arus output sensor menuju IC komparator LM 393
menjadi maksimum, oleh IC LM 393, arus di non-inverting sehingga output menuju
pin mikrokontroler menjadi HIGH (1). Oleh mikrokontroler data logika pin
tersebut kemudian diolah untuk mengerakan motor, motor akan bergerak jika kedua
pin motor tersebut memiliki beda polaritas. Selengkapnya mengenai logika gerak robot
dapat dilihat pada Tabel 1 dan 2.
Tabel 1. Kondisi Gerak Motor dan
pengaruh Sensor
Kondisi
|
B.0 = 0
|
B.0 =1
|
B.1 = 0
|
Maju
|
Belok Kiri
|
B.1 = 1
|
Belok Kanan
|
Mati
|
Tabel 2. Kondisi Gerak Motor dan
Kondisi Logika Tiap Pin Motor
Kondisi
|
D.0
|
D.1
|
D.2
|
D.3
|
Maju
|
0
|
1
|
0
|
1
|
Belok Kiri
|
1
|
0
|
0
|
1
|
Belok Kanan
|
0
|
1
|
1
|
0
|
Mati
|
1
|
1
|
1
|
1
|
Gambar 3. Skema lengkap robot line follower menggunakan AT Mega 16
PROGRAM ROBOT LINE FOLLOWER DIGITAL ATMEGA 16 MENGGUNAKAN CODE VISION AVR
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc,
HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Robot Line follower
Version : I
Date : 11/8/2012
Author : Mada Sanjaya WS, Ph.D
Company : Bolabot Techno Robotic
School
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12.000000
MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
# include <delay.h> //tambahan program untuk membuat
waktu tunda
// Alphanumeric LCD Module functions
#include <alcd.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T
State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=Out
Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=0
State4=0 State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x30;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11.719 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x0D;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s)
initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by
Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C
Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
// Tambahan kode mendefinisikan input output
DDRB.0=0; // input sensor kiri
DDRB.1=0; // input sensor kanan
DDRD.0=1; // output motor kiri
DDRD.1=1; // output motor kiri
DDRD.2=1; // output motor kanan
DDRD.3=1; // output motor kanan
OCR1A=200;// kecepatan dapat diubah sesuai kebutuhan
OCR1B=200; // kecepatan dapat diubah sesuai kebutuhan
// Tambahan kode mendefinisikan kondisi awal
PORTB.0=1; //sensor
kiri
PORTB.1=1; //sensor
kanan
PORTD.0=0;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
while (1)
{
if (PINB.0==1 &
PINB.1==0) // Tambahan kode sensor kiri hitam, kanan
putih, maka belok kiri
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
lcd_clear ();
lcd_gotoxy(0,0);
lcd_putsf("B0=1 B1=0");
lcd_gotoxy(0,1);
lcd_putsf("BELOK KIRI");
delay_ms(100);
}
else if (PINB.0==0 &
PINB.1==1) // Tambahan kode sensor kiri putih, kanan
hitam, maka belok kanan
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("B0=0 B1=1");
lcd_gotoxy(0,1);
lcd_putsf("BELOK KANAN");
delay_ms(100);
}
else if (PINB.0==1 &
PINB.1==1) // Tambahan kode sensor kiri hitam, kanan
hitam, maka mati
{
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
lcd_clear ();
lcd_gotoxy(0,0);
lcd_putsf("B0=1 B1=1");
lcd_gotoxy(0,1);
lcd_putsf("MATI");
delay_ms(100);
}
else // Tambahan kode sensor kiri putih, kanan
putih, maka bergerak maju
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("B0=0 B1=0");
lcd_gotoxy(0,1);
lcd_putsf("MAJU");
delay_ms(100);
}
}
}
ROBOT LINE FOLLOWER DIGITAL SEDERHANA DENGAN ATMEGA 8
Jika desain diatas dibuat menggunakan mikrokontroler AT mega 8, maka berikut ini merupakan desain robot line follower digital menggunakan mikrokontroler ATmega 8, dan 2 buah sensor phototransistor yang lebih sederhana.
Gambar 4. Skema lengkap robot line follower menggunakan AT Mega 8
PROGRAM ROBOT LINE FOLLOWER DIGITAL ATMEGA 8 MENGGUNAKAN CODE VISION AVR
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Bolabot Line Follower Digital AT Mega 8
Version : I
Date : 3/3/2013
Author : Mada Sanjaya WS, Ph.D
Company : Bolabot Techno Robotic Institute
Comments: Semangat!!
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=T
PORTB=0x00;
DDRB=0x06;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11.719 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x0D;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
DDRD.5=1; // ke motor
DDRD.6=1; // ke motor
DDRD.7=1; // ke motor
DDRB.0=1; // ke motor
DDRC.4=0; // input sensor
DDRC.3=0; // input sensor
PORTD.5=1;
PORTD.6=1;
PORTD.7=1;
PORTB.0=1;
OCR1A=150; // kecepatan motor dapat diatur sesuai kebutuhan
OCR1B=150; // kecepatan motor dapat diatur sesuai kebutuhan
while (1)
{
if (PINC.3==1 & PINC.4==0 )
{
PORTD.5=1;
PORTD.6=0;
PORTD.7=0;
PORTB.0=1;
}
else if (PINC.3==0 & PINC.4==1)
{
PORTD.5=0;
PORTD.6=1;
PORTD.7=1;
PORTB.0=0;
}
else
{
PORTD.5=1;
PORTD.6=0;
PORTD.7=1;
PORTB.0=0;
}
}
}
Berikut adalah video robot line follower digital sederhana karya Profesor Bolabot menggunakan ATMega 8 dan 2 sensor cahaya Phototransistor
Selamat Mencoba!!!
Copyright 2013 @ Profesor Bolabot
bos itu script yg buat atmega 16 indikator lcd itu script udah jadi ya apa harus dimodifikasi lagi....
BalasHapusom itu programnya kok pas dicompile eror. minta include lcdnya om.
BalasHapuspake yg di folder hex bisa ya om?
ommm o bisa tau sih kata kata program nyaa itu tuh belajar sendiri atau copas
BalasHapusgan bisa tlong krimin ke email ane gan !!
BalasHapusbonararagem@gmail.com
simulasi n progrmnya robot line follower digital atmega 16!!thx
Mantab Gan...
BalasHapusterimaksi pak prof bolabot. akan saya coba menggunakan ATMEGA16
BalasHapusmaaf bisa kirim simulasi rangkaian dan list program ke kiszron@gmail.com ? soalnya simulasi rangkaian di blognya kurang jelas. terima kasih
BalasHapusmaaf bisa minta daftar alat yg di pake dproteusnya gk
BalasHapusmaaf bisa minta daftar alat yg di pake dproteusnya gk
BalasHapusKak terimakasih ilmunya sangat membanth
BalasHapuskak bisa minta PROGRAMnya yang atmega 16 ngga? soalnya koding diatas dicoba error??
BalasHapusterima kasih untuk programnya pak mada! saya jadi punya referensi untuk pembuatan LF tugas besar.
BalasHapus