SlideShare a Scribd company logo
1 of 15
Download to read offline
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Page 1 of 15 
Membuat Sendiri Robot Line Tracker 
Robot Line Tracker 
Pada project kali ini kita akan membahas cara membuat robot line tracker yang dapat 
bergerak mengikuti track berupa garis hitam setebal 3 cm. Garis hitam tersebut disusun membentuk 
sejumlah persimpangan-persimpangan. Robot diprogram untuk dapat menghitung jumlah 
persimpangan yang sudah dilaluinya, kemudian belok sesuai dengan arah yang diinginkan. Untuk 
membaca garis, robot dilengkapi dengan sensor proximity yang dapat membedakan antara garis 
hitam dengan lantai putih. Sensor proximity ini dapat dikalibrasi untuk menyesuaikan pembacaan 
sensor terhadap kondisi pencahayaan ruangan. Sehingga pembacaan sensor selalu akurat. 
Agar pergerakan robot menjadi lebih halus, maka kecepatan robot diatur sesuai dengan 
kondisi pembacaan sensor proximity. Jika posisi robot menyimpang dari garis, maka robot akan 
melambat. Namun jika robot tepat berada diatas garis, maka robot akan bergerak cepat. Robot juga 
dapat kembali ke garis pada saat robot terlepas sama sekali dari garis. Hal ini bisa dilakukan karena 
robot selalu mengingat kondisi terakhir pembacaan sensor. Jika terakhir kondisinya adalah disebelah 
kiri garis, maka robot akan bergerak ke kanan, demikian pula sebaliknya. 
Gambar 1. Robot Line Tracker 
Sensor Proximity 
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. Berikut adalah ilustrasinya : 
LED Photodioda 
Garis Hitam 
Gambar 1. Cahaya pantulan sedikit 
LED Photodioda 
Garis Putih 
Gambar 2. Cahaya pantulan banyak 
Gambar 2. Prinsip Kerja Sensor Proximity
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
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. Berikut adalah gambar rangkaian sensor 
proximity yang digunakan pada robot ini : 
Ke AVR (PD.3) 
Page 2 of 15 
+5V 
+5V 
+5V 
+5V +5V +5V 
+5V +5V 
+5V 
+5V +5V 
Ke AVR (PD.0 ) 
R1 
220 
R2 
10K 
D2 
PD 
+5V +5V 
+5V 
+5V 
+5V 
+5V 
+5V 
+5V 
+5V 
+5V +5V +5V +5V 
+5V 
+5V 
+5V 
+5V +5V +5V 
Ke AVR (PD.1 ) 
Ke AVR (PD.4) 
Ke AVR (PD.2 ) Ke AVR (PD.5) 
R3 
470 
D6 
LED 
R1 
220 
VR2 
10K 
D4 
LED 
R5 
10K 
U1B 
LM339 
+ 
- 
5 
4 
2 
3 12 
D1 
LED 
R4 
220 
D2 
PD 
D3 
LED 
R6 
470 
D5 
PD 
U1A 
LM339 
+ 
- 
7 
6 
1 
3 12 
R2 
10K 
VR1 
10K 
R6 
470 
R4 
220 
D6 
LED 
D4 
LED 
VR2 
10K 
U1D 
LM339 
+ 
- 
11 
10 
13 
3 12 
D5 
PD 
U2A 
LM339 
+ 
- 
7 
6 
1 
3 12 
D3 
LED 
R5 
10K 
R3 
VR1 470 
10K 
D1 
LED 
R6 
VR2 470 
10K 
R4 
220 
R5 
10K 
D5 
PD 
U1C 
LM339 
+ 
- 
9 
8 
14 
3 12 
D4 
LED 
D6 
LED 
R6 
470 
U2B 
LM339 
+ 
- 
5 
4 
2 
3 12 R4 
220 
D4 
LED 
R5 
10K 
VR2 
10K 
D6 
LED 
D5 
PD 
Gambar 3. Rangkaian Sensor Proximity 
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. 
Gambar 4. Posisi Pemasangan Sensor Proximity Pada Robot
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Sensor proximity terdiri dari 6 pasang LED dan photodiode yang disusun sedemikian rupa 
sehingga jarak antara satu sensor dengan yang lainnya lebih kecil dari lebar garis hitam. Perhatikan 
gambar berikut : 
Page 3 of 15 
Sensor Line 
Line Track 
SkiXX SkiX Ski Ska SkaX SkaXX 
PIND.5 PIND.4 PIND.3 PIND.2 PIND.1 PIND.0 
Gambar 5. Jarak Antar Sensor Proximity 
Rancangan Mekanik Robot 
Proximity Sensor 
Motor 
Kanan 
Motor 
Kiri 
Freewheel 
Baterai 12V 
Robot Tampak Atas 
Rangkaian Elektronika 
Robot Tampak Samping 
Gambar 6. Mekanik Robot
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Page 4 of 15 
Algoritma Pergerakan Robot 
Sebelum membuat program, maka kita perlu mendefinisikan seluruh kemungkinan 
pembacaan sensor proximity. Dengan demikian kita dapat menentukan pergerakan robot yang 
tujuannya adalah menjaga agar robot selalu berada tepat diatas garis. Berikut adalah beberapa 
kemungkinan pembacaan garis oleh sensor proximity : 
SkiXX SkiX Ski Ska SkaX SkaXX 
SkiXX SkiX Ski Ska SkaX SkaXX 
1 
2 
SkiXX SkiX Ski Ska SkaX SkaXX 
3 
4 
SkiXX SkiX Ski Ska SkaX SkaXX 
SkiXX SkiX Ski Ska SkaX SkaXX 
5 
SkiXX SkiX Ski Ska SkaX SkaXX 
6 
SkiXX SkiX Ski Ska SkaX SkaXX 
7 
Gambar 7. Kemungkinan Posisi Sensor Proximity Pada Line 
Setelah mengetahui kemungkinan-kemungkinan posisi sensor, maka selanjutnya harus 
didefinisikan aksi dari setiap kondisi tersebut. Perhatikan tabel berikut ini : 
Tabel 1. Aksi Pergerakan Robot 
Posisi 
Sensor Aksi Robot Roda Kiri Roda Kanan 
1 Belok Kanan Tajam Maju cepat Berhenti 
2 Belok Kanan Sedang Maju cepat Maju lambat 
3 Belok Kanan Ringan Maju cepat Maju sedang 
4 Maju Lurus Maju cepat Maju cepat 
5 Belok Kiri Ringan Maju sedang Maju cepat 
6 Belok Kiri Sedang Maju lambat Maju cepat 
7 Belok Kiri Tajam Berhenti Maju cepat
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Page 5 of 15 
Lapangan Uji Coba 
Lapangan berupa garis-garis hitam diatas lantai berwarna putih. Garis hitam disusun 
membentuk banyak persimpangan. Ukuran tiap kotak adalah 30 cm x 30 cm. Ketebalan garis hitam 
adalah 3 cm. Garis hitam ini bisa dibuat menggunakan isolasi hitam kemudian ditempel pada lantai 
atau kertas karton berwarna putih. 
30 cm 
30 cm 
Gambar 8. Lapangan Uji Coba 
Dalam aplikasi ini, robot akan bergerak mengikuti kotak terluar lapangan. Posisi awal robot 
seperti terlihat pada gambar berikut ini : 
Gambar 9. Pergerakan Robot di Lapangan
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
1N4001 
Page 6 of 15 
Driver Motor DC 
Untuk menggerakkan dua buah motor dc, digunakan IC H-Bridge Motor Driver L298, yang 
mampu memberikan arus maksimum sebesar 1A ke tiap motor. Input L298 ada 6 jalur, terdiri dari 
input data arah pergerakan motor dan input untuk PWM (Pulse Width Modulation). Untuk mengatur 
kecepatan motor, pada input PWM inilah akan diberikan lebar pulsa yang bervariasi dari 
mikrokontroler. 
+12V 
+12V 
MOTOR KANAN 
1N4001 
U1 
5 1A1 
7 
1A2 
10 2A1 
2A2 
6 
11 2EN 
L298 
12 
1EN 
1Y1 2 
3 
1Y2 
2Y1 13 
14 
2Y2 
1E 
1 
2E 15 
1N4001 
1 
1N4001 
1N4001 
1N4001 
MOTOR KIRI 
1N4001 
1 
1N4001 
Ke AVR (PC.0) 
Ke AVR (PC.1) 
Ke AVR (PC.2) 
Ke AVR (PC.3) 
Ke AVR (PC.4) 
Ke AVR (PC.5) 
Gambar 10. Rangkaian Driver Motor DC 
Untuk menentukan arah pergerakan motor maka pada input L298 harus diberikan kondisi 
sesuai dengan tabel berikut : 
Tabel 2. Tabel Kebenaran Driver Motor 
Motor 1 Motor 2 
Input Output Input Output 
I1A1 1A2 1EN 1Y1 1Y2 Aksi Motor 2A1 2A2 2EN 2Y1 2Y2 Aksi Motor 
0 0 1 0 0 Free 
Running 
Stop 
0 0 1 0 0 Free 
Running 
Stop 
0 1 1 0 12V CW 0 1 1 0 12V CW 
1 0 1 12V 0 CCW 1 0 1 12V 0 CCW 
1 1 1 12V 12V Fast Stop 1 1 1 12V 12V Fast Stop 
x x 0 0 0 Free 
Running 
Stop 
x x 0 0 0 Free 
Running 
Stop
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Ke Driv er Motor 
Ke Driv er Motor 
Ke Driv er Motor 
Ke Driv er Motor 
Page 7 of 15 
AVR Microcontroller 
Sebagai ā€otakā€ robot digunakan mikrokontroler AVR jenis ATmega8535 yang akan membaca 
data dari sensor proximity, mengolahnya, kemudian memutuskan arah pergerakan robot. 
Gambar 11. Mikrokontroler ATmega8535 Pada Robot 
Pada robot line track ini, keluaran sensor proximity dihubungkan ke PortD.0 dan PortD.5 pada 
mikrokontroler. Sedangkan driver motor dihubungkan ke PortC.0 s/d PortC.5 seperti terlihat pada 
gambar berikut : 
+5V 
MOSI 
SCK 
RESET 
+5V 
+5V 
Ke Driv er Motor 
Ke Driv er Motor 
VCC 
Ke Sensor Proximity 
Ke Sensor Proximity 
Ke Sensor Proximity 
Ke Sensor Proximity 
Ke Sensor Proximity 
Ke Sensor Proximity 
MOSI 
MISO 
SCK 
MISO 
GND 
33pF 
33pF 
10uF/16V 
XTAL 
11.0592 MHz 
U1 
1 
2 PB.1 (T1) PB.0 (XCK/T0) 
PB.2 (INT2/AIN0) 
6 PB.4 (SS) 5 PB.3 (OC0/AIN1) 
RESET 
13 12 XTAL2 
14 
15 PD.1 (TXD) 
17 
18 PD.4 (OC1B) 
ATmega8535 
3 
XTAL1 
9 
VCC 
10 
GND 
11 
PB.6 (MISO) 
7 
PB.7 (SCK) 
8 
PD.0 (RXD) 
PD.2 (INT2) 
16 
PD.3 (INT1) 
PD.5 (OC1A) 
19 
PD.6 (ICP1) 
20 
(OC2) PD.7 
21 
(ADC0) PA.0 
40 
(ADC1) PA.1 39 
38 
(ADC2) PA.2 
(ADC3) PA.3 
37 
(ADC4) PA.4 36 
35 
(ADC5) PA.5 
(ADC6) PA.6 
34 
(ADC7) PA.7 
33 
(TOSC2) PC.7 29 
28 
(TOSC1) PC.6 
PC.5 
27 
PC.4 26 
25 
PC.3 
PC.2 
24 
(SDA) PC.1 23 
22 
(SCL) PC.0 
AREF 
32 
GND 
31 
AVCC 
30 
PB.5 (MOSI) 
4 
S1 
10K 
SPI PORT 
123456 
Gambar 12. Mikrokontroler ATmega8535
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Membuat Source Code 
Source code secara lengkap dapat dilihat pada Lampiran A. Source code dibuat dengan 
menggunakan software CodeVisionAVR dengan langkah-langkah sebagai berikut : 
Page 8 of 15 
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
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
5. Klik File -> Generate, Save and Exit 
6. Buatlah source code seperti pada Lampiran A. 
7. Setelah selesai membuat source code, klik Setting -> Programmer 
8. Pilih AVR Chip Programmer Type : Kanda System STK200+/300 dan pilih Printer Port pada 
Page 9 of 15 
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.
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Page 10 of 15 
Penjelasan Source Code 
Berikut adalah penjelasan tiap bagian dari source code. 
1. Membuat definisi port yang digunakan sebagai berikut : 
#define SkiXX PIND.0 // Sensor kiri terluar 
#define SkiX PIND.1 // Sensor kiri luar 
#define Ski PIND.2 // Sensor kiri tengah 
#define Ska PIND.3 // Sensor kanan tengah 
#define SkaX PIND.4 // Sensor kanan luar 
#define SkaXX PIND.5 // Sensor kanan terluar 
#define EnKi PORTC.4 // Enable L298 untuk motor kiri 
#define dirA_Ki PORTC.0 // Direction A untuk motor kiri 
#define dirB_Ki PORTC.1 // Direction B untuk motor kiri 
#define EnKa PORTC.5 // Enable L298 untuk motor kanan 
#define dirC_Ka PORTC.2 // Direction C untuk motor kanan 
#define dirD_Ka PORTC.3 // Direction D untuk motor kanan 
2. Menentukan library yang digunakan : 
#include <mega8535.h> // Library untuk chip ATmega8535 
#include <delay.h> // Library delay 
3. Membuat variable sebagai pengingat kondisi pembacaan sensor line terakhir. 
bit x; 
4. Membuat ISR Timer 0 / Interrupt Service Routine Timer 0. 
ā€¢ ISR ini digunakan untuk menghasilkan pulsa PWM untuk mengendalikan motor kiri dan 
kanan melalui bit EnKi dan EnKa. 
ā€¢ ISR Timer 0 dieksekusi secara periodik ketika Timer 0 overflow. Lamanya tergantung nilai 
Timer/Counter 0 (TCNT0). 
ā€¢ Periode pulsa ditentukan oleh TCNT0. Nilai maksimumnya 0xFF atau 255d. 
ā€¢ Duty cycle PWM untuk motor kiri ditentukan oleh nilai lpwm. Maksimum 255. 
ā€¢ Duty cycle PWM untuk motor kanan ditentukan oleh nilai rpwm. Maksimum 255. 
unsigned char xcount,lpwm,rpwm; // Definisi variable 
// Timer 0 overflow interrupt service routine 
interrupt [TIM0_OVF] void timer0_ovf_isr(void) 
{ 
// Place your code here 
xcount++; // xcount=xcount+1 
if(xcount<=lpwm)EnKi=1; // EnKi=1 jika xcount <= lpwm 
else EnKi=0; // EnKi=0 jika xcount > lpwm 
if(xcount<=rpwm)EnKa=1; // EnKa=1 jika xcount <= rpwm 
else EnKa=0; // EnKa=0 jika xcount > rpwm 
TCNT0=0xFF; // Timer0 Value Menentukan periode pulsa PWM 
} 
5. Membuat sub rutin agar robot bergerak maju 
void maju() 
{ 
dirA_Ki=1;dirB_Ki=0; // Motor kiri maju 
dirC_Ka=1;dirD_Ka=0; // Motor kanan maju 
} 
6. Membuat sub rutin agar robot belok ke kiri 
void belok_kiri() 
{ 
unsigned int i; 
lpwm=50; rpwm=50; // Kecepatan pelan 
delay_ms(60); // Robot dimajukan sedikit 
dirA_Ki=0;dirB_Ki=1; // Motor kiri mundur 
dirC_Ka=1;dirD_Ka=0; // Motor kanan maju 
for(i=0;i<=1000;i++) while (!SkiXX ||!SkiX) {}; 
for(i=0;i<=1000;i++) while ( SkiXX || SkiX) {}; 
lpwm=0; rpwm=0; // Robot berhenti 
}
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Pada program diatas, tampak ada 2 ā€œfor whileā€ yang masing-masing diulang 1000 kali untuk 
memastikan bahwa sensor benar-benar membaca sebuah garis, bukan noda atau kotoran 
yang ada di lapangan. 
ā€¢ for(i=0;i<=1000;i++) while (!SkiXX ||!SkiX) {}; 
Robot akan terus belok kiri selama sensor SkiXX=0 atau SkiX=0 (sensor berada diatas 
garis hitam) 
Page 11 of 15 
ā€¢ for(i=0;i<=1000;i++) while ( SkiXX || SkiX) {}; 
Selanjutnya robot tetap belok kiri selama sensor SkiXX=1 atau SkiX=1 (sensor berada 
diatas permukaan putih) 
7. Membuat sub rutin agar robot belok ke kanan 
void belok_kanan() 
{ 
unsigned int i; 
lpwm=50; rpwm=50; // Kecepatan pelan 
delay_ms(60); // Robot dimajukan sedikit 
dirA_Ki=1;dirB_Ki=0; // Motor kiri maju 
dirC_Ka=0;dirD_Ka=1; // Motor kanan mundur 
for(i=0;i<=1000;i++) while (!SkaXX ||!SkaX) {}; 
for(i=0;i<=1000;i++) while ( SkaXX || SkaX) {}; 
lpwm=0; rpwm=0; // Robot berhenti 
} 
8. Membuat sub rutin membaca line 
unsigned char sensor; 
void scan_rule1() 
{ maju(); // Robot bergerak maju 
sensor=PIND; // PIND diberi nama sensor 
sensor&=0b00111111; // sensor di-AND-kan dengan 0b00111111 
switch(sensor) 
{ case 0b00111110: rpwm=0; lpwm=200; x=1; break; 
case 0b00111100: rpwm=50; lpwm=200; x=1; break; 
case 0b00111101: rpwm=75; lpwm=200; x=1; break; 
case 0b00111001: rpwm=100; lpwm=200; x=1; break; 
case 0b00111011: rpwm=150; lpwm=200; x=1; break; 
case 0b00110011: rpwm=200; lpwm=200; break; 
case 0b00110111: rpwm=200; lpwm=150; x=0; break; 
case 0b00100111: rpwm=200; lpwm=100; x=0; break; 
case 0b00101111: rpwm=200; lpwm=75; x=0; break; 
case 0b00001111: rpwm=200; lpwm=50; x=0; break; 
case 0b00011111: rpwm=200; lpwm=0; x=0; break; 
case 0b00111111: break; 
if(x) {lpwm=50; rpwm=0; break;} 
else {lpwm=0; rpwm=50; break;} 
} 
} 
Variabel x ini berfungsi sebagai pengingat posisi terakhir robot terhadap garis. Jika robot 
berada di kanan garis, maka x=0. Jika robot berada di kiri garis, maka x=1. Ketika robot lepas 
dari track, maka program akan membaca kondisi variable x, sehingga dapat ditentukan arah 
gerak robot agar robot dapat kembali ke garis, seperti terlihat pada instruksi berikut : 
if(x) {lpwm=50; rpwm=0; break;} 
else {lpwm=0; rpwm=50; break;} 
Jika x=1 maka robot belok kanan, jika x=0 maka robot belok kiri. 
9. Membuat sub rutin membaca persimpangan 
void scan_count(unsigned char count) 
{ unsigned int i; 
unsigned char xx=0; 
while(xx<count) 
{ for(i=0;i<1000;i++) while((sensor & 0b00011110)!=0b00000000) scan_rule1(); 
for(i=0;i<1000;i++) while((sensor & 0b00011110)==0b00000000) scan_rule1(); 
xx++;
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Page 12 of 15 
} 
} 
Variable count digunakan untuk menentukan jumlah persimpangan yang harus dilewati. 
Variable xx berisi jumlah persimpangan yang telah dilewati. Nilainya akan bertambah 1 ketika 
kondisi 4 sensor tengah membaca garis hitam semua kemudian membaca garis putih semua. 
10. Membuat main program 
void main(void) 
{ 
. 
. 
. 
. 
while (1) 
{ 
// Place your code here 
scan_count(3); // Maju 3 persimpangan 
belok_kanan(); // Belok kanan 
}; 
}
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Page 13 of 15 
Lampiran A. Source Code ā€œ Line Tracker Robotā€ 
/********************************************* 
This program was produced by the 
CodeWizardAVR V1.24.0 Standard 
Automatic Program Generator 
Ā© Copyright 1998-2003 HP InfoTech s.r.l. 
http://www.hpinfotech.ro 
e-mail:office@hpinfotech.ro 
Project : 
Version : 
Date : 17/11/2007 
Author : hendawan 
Company : 
Comments: 
Chip type : ATmega8535L 
Program type : Application 
Clock frequency : 11,059200 MHz 
Memory model : Small 
External SRAM size : 0 
Data Stack size : 128 
*********************************************/ 
#define SkiXX PIND.0 
#define SkiX PIND.1 
#define Ski PIND.2 
#define Ska PIND.3 
#define SkaX PIND.4 
#define SkaXX PIND.5 
#define EnKi PORTC.4 
#define dirA_Ki PORTC.0 
#define dirB_Ki PORTC.1 
#define EnKa PORTC.5 
#define dirC_Ka PORTC.2 
#define dirD_Ka PORTC.3 
#include <mega8535.h> 
#include <delay.h> 
bit x; 
unsigned char xcount,lpwm,rpwm; 
// Timer 0 overflow interrupt service routine 
interrupt [TIM0_OVF] void timer0_ovf_isr(void) 
{ 
// Place your code here 
xcount++; 
if(xcount<=lpwm)EnKi=1; 
else EnKi=0; 
if(xcount<=rpwm)EnKa=1; 
else EnKa=0; 
TCNT0=0xFF; // Timer0 Value Menentukan periode pulsa PWM 
} 
void maju() 
{ 
dirA_Ki=1;dirB_Ki=0; 
dirC_Ka=1;dirD_Ka=0; 
} 
void belok_kiri() 
{ 
unsigned int i; 
lpwm=50; rpwm=50; 
delay_ms(60); // dimajukan sedikit 
dirA_Ki=0;dirB_Ki=1; 
dirC_Ka=1;dirD_Ka=0; 
for(i=0;i<=1000;i++) while (!SkiXX ||!SkiX) {}; 
for(i=0;i<=1000;i++) while ( SkiXX || SkiX) {}; 
lpwm=0; rpwm=0; 
} 
void belok_kanan() 
{ 
unsigned int i; 
lpwm=50; rpwm=50; 
delay_ms(60); // dimajukan sedikit 
dirA_Ki=1;dirB_Ki=0;
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Page 14 of 15 
dirC_Ka=0;dirD_Ka=1; 
for(i=0;i<=1000;i++) while (!SkaXX ||!SkaX) {}; 
for(i=0;i<=1000;i++) while ( SkaXX || SkaX) {}; 
lpwm=0; rpwm=0; 
} 
// Declare your global variables here 
unsigned char sensor; 
void scan_rule1() 
{ maju(); 
sensor=PIND; 
sensor&=0b00111111; 
switch(sensor) 
{ case 0b00111110: rpwm=0; lpwm=200; x=1; break; 
case 0b00111100: rpwm=50; lpwm=200; x=1; break; 
case 0b00111101: rpwm=75; lpwm=200; x=1; break; 
case 0b00111001: rpwm=100; lpwm=200; x=1; break; 
case 0b00111011: rpwm=150; lpwm=200; x=1; break; 
case 0b00110011: rpwm=200; lpwm=200; break; 
case 0b00110111: rpwm=200; lpwm=150; x=0; break; 
case 0b00100111: rpwm=200; lpwm=100; x=0; break; 
case 0b00101111: rpwm=200; lpwm=75; x=0; break; 
case 0b00001111: rpwm=200; lpwm=50; x=0; break; 
case 0b00011111: rpwm=200; lpwm=0; x=0; break; 
case 0b00111111: break; 
if(x) {lpwm=50; rpwm=0; break;} 
else {lpwm=0; rpwm=50; break;} 
} 
} 
void scan_count(unsigned char count) 
{ unsigned int i; 
unsigned char xx=0; 
while(xx<count) 
{ for(i=0;i<1000;i++) while((sensor & 0b00011110)!=0b00000000) scan_rule1(); 
for(i=0;i<1000;i++) while((sensor & 0b00011110)==0b00000000) scan_rule1(); 
xx++; 
} 
} 
void main(void) 
{ 
// Declare your local variables here 
// Input/Output Ports initialization 
// Port A initialization 
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T 
PORTA=0x00; 
DDRA=0x00; 
// Port B initialization 
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T 
PORTB=0x00; 
DDRB=0x00; 
// Port C initialization 
// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out Func6=Out Func7=Out 
// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0 State7=0 
PORTC=0x00; 
DDRC=0xFF; 
// Port D initialization 
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
// State0=P State1=P State2=P State3=P State4=P State5=P State6=P State7=P 
PORTD=0xFF; 
DDRD=0x00; 
// Timer/Counter 0 initialization 
// Clock source: System Clock 
// Clock value: 10,800 kHz 
// Mode: Normal top=FFh 
// OC0 output: Disconnected 
TCCR0=0x05; 
TCNT0=0x00; 
OCR0=0x00; 
// Timer/Counter 1 initialization
Application Note 
Line Tracker Robot using AVR Microcontroller 
Created by Hendawan Soebhakti on Desember 2007 
Page 15 of 15 
// Clock source: System Clock 
// Clock value: Timer 1 Stopped 
// Mode: Normal top=FFFFh 
// OC1A output: Discon. 
// OC1B output: Discon. 
// Noise Canceler: Off 
// Input Capture on Falling Edge 
TCCR1A=0x00; 
TCCR1B=0x00; 
TCNT1H=0x00; 
TCNT1L=0x00; 
OCR1AH=0x00; 
OCR1AL=0x00; 
OCR1BH=0x00; 
OCR1BL=0x00; 
// Timer/Counter 2 initialization 
// Clock source: System Clock 
// Clock value: Timer 2 Stopped 
// Mode: Normal top=FFh 
// 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=0x01; 
// Analog Comparator initialization 
// Analog Comparator: Off 
// Analog Comparator Input Capture by Timer/Counter 1: Off 
// Analog Comparator Output: Off 
ACSR=0x80; 
SFIOR=0x00; 
// Global enable interrupts 
#asm("sei") 
while (1) 
{ 
// Place your code here 
scan_count(3); 
belok_kanan(); 
}; 
}

More Related Content

What's hot (7)

AlimentaĆ§Ć£o e saĆŗde
AlimentaĆ§Ć£o e saĆŗdeAlimentaĆ§Ć£o e saĆŗde
AlimentaĆ§Ć£o e saĆŗde
Ā 
Infarto 1C
Infarto 1CInfarto 1C
Infarto 1C
Ā 
Torres Vedras
Torres VedrasTorres Vedras
Torres Vedras
Ā 
Voluntariado
VoluntariadoVoluntariado
Voluntariado
Ā 
Infarto Agudo do MiocƔrdio
Infarto Agudo do MiocƔrdioInfarto Agudo do MiocƔrdio
Infarto Agudo do MiocƔrdio
Ā 
PPTSISTEM PENDIDIKAN FINLANDIA SEMESTER 2 KEL 1.pdf
PPTSISTEM PENDIDIKAN FINLANDIA SEMESTER 2 KEL 1.pdfPPTSISTEM PENDIDIKAN FINLANDIA SEMESTER 2 KEL 1.pdf
PPTSISTEM PENDIDIKAN FINLANDIA SEMESTER 2 KEL 1.pdf
Ā 
Causas da 2ĀŖ Guerra
Causas da 2ĀŖ GuerraCausas da 2ĀŖ Guerra
Causas da 2ĀŖ Guerra
Ā 

Viewers also liked

Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–3 2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–3 2013 ріŠŗŠ’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–3 2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–3 2013 ріŠŗ
Snp_vn_ua
Ā 
Voorbeelden weer en klimaat
Voorbeelden weer en klimaatVoorbeelden weer en klimaat
Voorbeelden weer en klimaat
rvisser
Ā 
Šŗурс уŠŗрŠ°Ń—Š½Šø єŠ“ŠøŠ½ŠøŠ¹ ā€“ Š“Š¾ Š¾Š±ā€™Ń”Š“Š½Š°Š½Š¾Ń— єŠ²Ń€Š¾ŠæŠø
Šŗурс уŠŗрŠ°Ń—Š½Šø єŠ“ŠøŠ½ŠøŠ¹ ā€“ Š“Š¾ Š¾Š±ā€™Ń”Š“Š½Š°Š½Š¾Ń— єŠ²Ń€Š¾ŠæŠøŠŗурс уŠŗрŠ°Ń—Š½Šø єŠ“ŠøŠ½ŠøŠ¹ ā€“ Š“Š¾ Š¾Š±ā€™Ń”Š“Š½Š°Š½Š¾Ń— єŠ²Ń€Š¾ŠæŠø
Šŗурс уŠŗрŠ°Ń—Š½Šø єŠ“ŠøŠ½ŠøŠ¹ ā€“ Š“Š¾ Š¾Š±ā€™Ń”Š“Š½Š°Š½Š¾Ń— єŠ²Ń€Š¾ŠæŠø
Snp_vn_ua
Ā 
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń ā„–1-2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń ā„–1-2013 ріŠŗŠ’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń ā„–1-2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń ā„–1-2013 ріŠŗ
Snp_vn_ua
Ā 
Aquapark ā„–3 2010
Aquapark ā„–3 2010Aquapark ā„–3 2010
Aquapark ā„–3 2010
Snp_vn_ua
Ā 
Aquapark ā„–1 2011
Aquapark ā„–1 2011Aquapark ā„–1 2011
Aquapark ā„–1 2011
Snp_vn_ua
Ā 
Broadband internet infrastructure task 1
Broadband internet infrastructure task 1Broadband internet infrastructure task 1
Broadband internet infrastructure task 1
TebraR
Ā 
Ontstaan windsystemen
Ontstaan windsystemenOntstaan windsystemen
Ontstaan windsystemen
rvisser
Ā 
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–2 2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–2 2013 ріŠŗŠ’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–2 2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–2 2013 ріŠŗ
Snp_vn_ua
Ā 
2 ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†ŠøŠ¾Š½Š½Ń‹Š¹ Š±ŃŽŠ»Š»ŠµŃ‚ŠµŠ½ŃŒ Š•Š²Ń€Š¾Ń€ŠµŠ³ŠøŠ¾Š½Š° `Š”Š½ŠµŃŃ‚Ń€`
2 ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†ŠøŠ¾Š½Š½Ń‹Š¹ Š±ŃŽŠ»Š»ŠµŃ‚ŠµŠ½ŃŒ Š•Š²Ń€Š¾Ń€ŠµŠ³ŠøŠ¾Š½Š° `Š”Š½ŠµŃŃ‚Ń€`2 ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†ŠøŠ¾Š½Š½Ń‹Š¹ Š±ŃŽŠ»Š»ŠµŃ‚ŠµŠ½ŃŒ Š•Š²Ń€Š¾Ń€ŠµŠ³ŠøŠ¾Š½Š° `Š”Š½ŠµŃŃ‚Ń€`
2 ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†ŠøŠ¾Š½Š½Ń‹Š¹ Š±ŃŽŠ»Š»ŠµŃ‚ŠµŠ½ŃŒ Š•Š²Ń€Š¾Ń€ŠµŠ³ŠøŠ¾Š½Š° `Š”Š½ŠµŃŃ‚Ń€`
Snp_vn_ua
Ā 
5 temperatuurfactoren
5 temperatuurfactoren5 temperatuurfactoren
5 temperatuurfactoren
rvisser
Ā 
ŠæŠ¾Š“Š¾Ń€Š¾Š¶ŃƒŃŽŃ‡Šø єŠ²Ń€Š¾ŠæŠ¾ŃŽ. 2004
ŠæŠ¾Š“Š¾Ń€Š¾Š¶ŃƒŃŽŃ‡Šø єŠ²Ń€Š¾ŠæŠ¾ŃŽ. 2004ŠæŠ¾Š“Š¾Ń€Š¾Š¶ŃƒŃŽŃ‡Šø єŠ²Ń€Š¾ŠæŠ¾ŃŽ. 2004
ŠæŠ¾Š“Š¾Ń€Š¾Š¶ŃƒŃŽŃ‡Šø єŠ²Ń€Š¾ŠæŠ¾ŃŽ. 2004
Snp_vn_ua
Ā 
Š¾Š±Ń€Š°Š·Š¾Ń‚Š²Š¾Ń€Ń‡Šµ Š¼ŠøстŠµŃ†Ń‚Š²Š¾ ітŠ°Š»Ń–Ń—
Š¾Š±Ń€Š°Š·Š¾Ń‚Š²Š¾Ń€Ń‡Šµ Š¼ŠøстŠµŃ†Ń‚Š²Š¾ ітŠ°Š»Ń–Ń—Š¾Š±Ń€Š°Š·Š¾Ń‚Š²Š¾Ń€Ń‡Šµ Š¼ŠøстŠµŃ†Ń‚Š²Š¾ ітŠ°Š»Ń–Ń—
Š¾Š±Ń€Š°Š·Š¾Ń‚Š²Š¾Ń€Ń‡Šµ Š¼ŠøстŠµŃ†Ń‚Š²Š¾ ітŠ°Š»Ń–Ń—
LubaPinchuk
Ā 
KITCHEN SAFETY AND SANITATION
KITCHEN SAFETY AND SANITATIONKITCHEN SAFETY AND SANITATION
KITCHEN SAFETY AND SANITATION
Gina Bal
Ā 

Viewers also liked (18)

Eren arpacioglu(20112072)
Eren arpacioglu(20112072)Eren arpacioglu(20112072)
Eren arpacioglu(20112072)
Ā 
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–3 2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–3 2013 ріŠŗŠ’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–3 2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–3 2013 ріŠŗ
Ā 
Voorbeelden weer en klimaat
Voorbeelden weer en klimaatVoorbeelden weer en klimaat
Voorbeelden weer en klimaat
Ā 
Šŗурс уŠŗрŠ°Ń—Š½Šø єŠ“ŠøŠ½ŠøŠ¹ ā€“ Š“Š¾ Š¾Š±ā€™Ń”Š“Š½Š°Š½Š¾Ń— єŠ²Ń€Š¾ŠæŠø
Šŗурс уŠŗрŠ°Ń—Š½Šø єŠ“ŠøŠ½ŠøŠ¹ ā€“ Š“Š¾ Š¾Š±ā€™Ń”Š“Š½Š°Š½Š¾Ń— єŠ²Ń€Š¾ŠæŠøŠŗурс уŠŗрŠ°Ń—Š½Šø єŠ“ŠøŠ½ŠøŠ¹ ā€“ Š“Š¾ Š¾Š±ā€™Ń”Š“Š½Š°Š½Š¾Ń— єŠ²Ń€Š¾ŠæŠø
Šŗурс уŠŗрŠ°Ń—Š½Šø єŠ“ŠøŠ½ŠøŠ¹ ā€“ Š“Š¾ Š¾Š±ā€™Ń”Š“Š½Š°Š½Š¾Ń— єŠ²Ń€Š¾ŠæŠø
Ā 
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń ā„–1-2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń ā„–1-2013 ріŠŗŠ’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń ā„–1-2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń ā„–1-2013 ріŠŗ
Ā 
Eren arpacioglu(20112072)
Eren arpacioglu(20112072)Eren arpacioglu(20112072)
Eren arpacioglu(20112072)
Ā 
Aquapark ā„–3 2010
Aquapark ā„–3 2010Aquapark ā„–3 2010
Aquapark ā„–3 2010
Ā 
Aquapark ā„–1 2011
Aquapark ā„–1 2011Aquapark ā„–1 2011
Aquapark ā„–1 2011
Ā 
Soccer lachute
Soccer lachuteSoccer lachute
Soccer lachute
Ā 
Conferencia Gwen Morrison 18-03-2013
Conferencia Gwen Morrison 18-03-2013Conferencia Gwen Morrison 18-03-2013
Conferencia Gwen Morrison 18-03-2013
Ā 
Broadband internet infrastructure task 1
Broadband internet infrastructure task 1Broadband internet infrastructure task 1
Broadband internet infrastructure task 1
Ā 
Ontstaan windsystemen
Ontstaan windsystemenOntstaan windsystemen
Ontstaan windsystemen
Ā 
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–2 2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–2 2013 ріŠŗŠ’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–2 2013 ріŠŗ
Š’ісŠ½ŠøŠŗ Š²Ń–Š½Š½ŠøцьŠŗŠ¾Š³Š¾ сŠ°Š¼Š¾Š²Ń€ŃŠ“уŠ²Š°Š½Š½Ń - ā„–2 2013 ріŠŗ
Ā 
2 ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†ŠøŠ¾Š½Š½Ń‹Š¹ Š±ŃŽŠ»Š»ŠµŃ‚ŠµŠ½ŃŒ Š•Š²Ń€Š¾Ń€ŠµŠ³ŠøŠ¾Š½Š° `Š”Š½ŠµŃŃ‚Ń€`
2 ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†ŠøŠ¾Š½Š½Ń‹Š¹ Š±ŃŽŠ»Š»ŠµŃ‚ŠµŠ½ŃŒ Š•Š²Ń€Š¾Ń€ŠµŠ³ŠøŠ¾Š½Š° `Š”Š½ŠµŃŃ‚Ń€`2 ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†ŠøŠ¾Š½Š½Ń‹Š¹ Š±ŃŽŠ»Š»ŠµŃ‚ŠµŠ½ŃŒ Š•Š²Ń€Š¾Ń€ŠµŠ³ŠøŠ¾Š½Š° `Š”Š½ŠµŃŃ‚Ń€`
2 ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†ŠøŠ¾Š½Š½Ń‹Š¹ Š±ŃŽŠ»Š»ŠµŃ‚ŠµŠ½ŃŒ Š•Š²Ń€Š¾Ń€ŠµŠ³ŠøŠ¾Š½Š° `Š”Š½ŠµŃŃ‚Ń€`
Ā 
5 temperatuurfactoren
5 temperatuurfactoren5 temperatuurfactoren
5 temperatuurfactoren
Ā 
ŠæŠ¾Š“Š¾Ń€Š¾Š¶ŃƒŃŽŃ‡Šø єŠ²Ń€Š¾ŠæŠ¾ŃŽ. 2004
ŠæŠ¾Š“Š¾Ń€Š¾Š¶ŃƒŃŽŃ‡Šø єŠ²Ń€Š¾ŠæŠ¾ŃŽ. 2004ŠæŠ¾Š“Š¾Ń€Š¾Š¶ŃƒŃŽŃ‡Šø єŠ²Ń€Š¾ŠæŠ¾ŃŽ. 2004
ŠæŠ¾Š“Š¾Ń€Š¾Š¶ŃƒŃŽŃ‡Šø єŠ²Ń€Š¾ŠæŠ¾ŃŽ. 2004
Ā 
Š¾Š±Ń€Š°Š·Š¾Ń‚Š²Š¾Ń€Ń‡Šµ Š¼ŠøстŠµŃ†Ń‚Š²Š¾ ітŠ°Š»Ń–Ń—
Š¾Š±Ń€Š°Š·Š¾Ń‚Š²Š¾Ń€Ń‡Šµ Š¼ŠøстŠµŃ†Ń‚Š²Š¾ ітŠ°Š»Ń–Ń—Š¾Š±Ń€Š°Š·Š¾Ń‚Š²Š¾Ń€Ń‡Šµ Š¼ŠøстŠµŃ†Ń‚Š²Š¾ ітŠ°Š»Ń–Ń—
Š¾Š±Ń€Š°Š·Š¾Ń‚Š²Š¾Ń€Ń‡Šµ Š¼ŠøстŠµŃ†Ń‚Š²Š¾ ітŠ°Š»Ń–Ń—
Ā 
KITCHEN SAFETY AND SANITATION
KITCHEN SAFETY AND SANITATIONKITCHEN SAFETY AND SANITATION
KITCHEN SAFETY AND SANITATION
Ā 

Similar to Line tracker robot avr atmega8535

Membuat robot line follower psrits
Membuat robot line follower   psritsMembuat robot line follower   psrits
Membuat robot line follower psrits
Mustaziri Cool
Ā 
Dani w ( 100210007 ) tm transformer rev
Dani w ( 100210007 ) tm transformer revDani w ( 100210007 ) tm transformer rev
Dani w ( 100210007 ) tm transformer rev
Ratzman III
Ā 
PS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa CPS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa C
Josephine Prasetya
Ā 

Similar to Line tracker robot avr atmega8535 (20)

Membuat robot-tidak-susah
Membuat robot-tidak-susahMembuat robot-tidak-susah
Membuat robot-tidak-susah
Ā 
Membuat robot line follower psrits
Membuat robot line follower   psritsMembuat robot line follower   psrits
Membuat robot line follower psrits
Ā 
Bahan bacaan 3.2
Bahan bacaan 3.2Bahan bacaan 3.2
Bahan bacaan 3.2
Ā 
Landasan teori pada BAB II arduino uno r3.pdf
Landasan teori pada BAB II arduino uno r3.pdfLandasan teori pada BAB II arduino uno r3.pdf
Landasan teori pada BAB II arduino uno r3.pdf
Ā 
Lapres invers kinematika robot planar 2 dof
Lapres invers kinematika robot planar 2 dofLapres invers kinematika robot planar 2 dof
Lapres invers kinematika robot planar 2 dof
Ā 
arduino project useful for us
arduino project useful for usarduino project useful for us
arduino project useful for us
Ā 
Ppt project instrumentasi smart drying with arduino 2016 kelompok 7
Ppt project instrumentasi smart drying with arduino 2016 kelompok 7Ppt project instrumentasi smart drying with arduino 2016 kelompok 7
Ppt project instrumentasi smart drying with arduino 2016 kelompok 7
Ā 
Dani w ( 100210007 ) tm transformer rev
Dani w ( 100210007 ) tm transformer revDani w ( 100210007 ) tm transformer rev
Dani w ( 100210007 ) tm transformer rev
Ā 
Estimasi Biaya Pemuatan Pintu Otomatis
Estimasi Biaya Pemuatan Pintu OtomatisEstimasi Biaya Pemuatan Pintu Otomatis
Estimasi Biaya Pemuatan Pintu Otomatis
Ā 
sensor jarak
sensor jaraksensor jarak
sensor jarak
Ā 
PRESENTASI LINE FOLLOWER ATAU ROBOT GARIS.pptx
PRESENTASI LINE FOLLOWER ATAU ROBOT GARIS.pptxPRESENTASI LINE FOLLOWER ATAU ROBOT GARIS.pptx
PRESENTASI LINE FOLLOWER ATAU ROBOT GARIS.pptx
Ā 
Traffic Light Berbasis ATMega32A
Traffic Light Berbasis ATMega32ATraffic Light Berbasis ATMega32A
Traffic Light Berbasis ATMega32A
Ā 
Contoh makalah line follower analog sederhana
Contoh makalah line follower analog sederhanaContoh makalah line follower analog sederhana
Contoh makalah line follower analog sederhana
Ā 
Control motor dc forward reverse using android
Control motor dc forward reverse using androidControl motor dc forward reverse using android
Control motor dc forward reverse using android
Ā 
Control DC Motor via Bluetooth
Control DC Motor via BluetoothControl DC Motor via Bluetooth
Control DC Motor via Bluetooth
Ā 
Control DC Motor with Smartphone via Bluetooth
Control DC Motor with Smartphone via BluetoothControl DC Motor with Smartphone via Bluetooth
Control DC Motor with Smartphone via Bluetooth
Ā 
Soal Ujian Tim Support
Soal Ujian Tim SupportSoal Ujian Tim Support
Soal Ujian Tim Support
Ā 
Perancangan Robot Sederhana
Perancangan Robot SederhanaPerancangan Robot Sederhana
Perancangan Robot Sederhana
Ā 
PS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa CPS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa C
Ā 
Rancang bangun robot becak cina dengan at-mega 16
Rancang bangun robot becak cina dengan at-mega 16Rancang bangun robot becak cina dengan at-mega 16
Rancang bangun robot becak cina dengan at-mega 16
Ā 

Recently uploaded

Jual Obat Aborsi Batam ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jual Ob...
Jual Obat Aborsi Batam ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jual Ob...Jual Obat Aborsi Batam ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jual Ob...
Jual Obat Aborsi Batam ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jual Ob...
Jual Obat Aborsi Batam ( Asli Ampuh No.1 ) 082223109953
Ā 
Obat Aborsi Sungai Penuh 082223109953 Jual Cytotec Asli Di Sungai Penuh
Obat Aborsi Sungai Penuh 082223109953 Jual Cytotec Asli Di Sungai PenuhObat Aborsi Sungai Penuh 082223109953 Jual Cytotec Asli Di Sungai Penuh
Obat Aborsi Sungai Penuh 082223109953 Jual Cytotec Asli Di Sungai Penuh
Obat Aborsi Sungai Penuh 082223109953 Jual Cytotec Asli
Ā 
obat aborsi Pangkal pinang Wa 082223109953 Jual obat aborsi Cytotec asli Di P...
obat aborsi Pangkal pinang Wa 082223109953 Jual obat aborsi Cytotec asli Di P...obat aborsi Pangkal pinang Wa 082223109953 Jual obat aborsi Cytotec asli Di P...
obat aborsi Pangkal pinang Wa 082223109953 Jual obat aborsi Cytotec asli Di P...
obat aborsi Pangkal pinang 082223109953 Jual obat aborsi
Ā 
Petunjuk teknis Pengisian Usulan Alat Kesehatan SOPHI.pptx
Petunjuk teknis Pengisian Usulan Alat Kesehatan SOPHI.pptxPetunjuk teknis Pengisian Usulan Alat Kesehatan SOPHI.pptx
Petunjuk teknis Pengisian Usulan Alat Kesehatan SOPHI.pptx
pkmcipakudrive
Ā 
Jual Obat Aborsi Denpasar Bali ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik...
Jual Obat Aborsi Denpasar Bali ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik...Jual Obat Aborsi Denpasar Bali ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik...
Jual Obat Aborsi Denpasar Bali ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik...
Jual Obat Aborsi Denpasar ( Asli Ampuh No.1 ) 082223109953
Ā 
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptxPresentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
yoodika046
Ā 
Electrostatic Precipitator handbook manual
Electrostatic Precipitator handbook manualElectrostatic Precipitator handbook manual
Electrostatic Precipitator handbook manual
dendranov19
Ā 
Bahan kuliah elemen mesin semester 2 rekayasa manufaktur
Bahan kuliah elemen mesin semester 2 rekayasa manufakturBahan kuliah elemen mesin semester 2 rekayasa manufaktur
Bahan kuliah elemen mesin semester 2 rekayasa manufaktur
AhmadAffandi36
Ā 
Jual Cytotec Di Batam Ori šŸ‘™082122229359šŸ‘™Pusat Peluntur Kandungan Konsultasi
Jual Cytotec Di Batam Ori šŸ‘™082122229359šŸ‘™Pusat Peluntur Kandungan KonsultasiJual Cytotec Di Batam Ori šŸ‘™082122229359šŸ‘™Pusat Peluntur Kandungan Konsultasi
Jual Cytotec Di Batam Ori šŸ‘™082122229359šŸ‘™Pusat Peluntur Kandungan Konsultasi
ssupi412
Ā 
Obat Aborsi jakarta WA 082223109953 Jual Obat Aborsi Cytotec Asli Di jakarta
Obat Aborsi jakarta WA 082223109953  Jual Obat Aborsi Cytotec Asli Di jakartaObat Aborsi jakarta WA 082223109953  Jual Obat Aborsi Cytotec Asli Di jakarta
Obat Aborsi jakarta WA 082223109953 Jual Obat Aborsi Cytotec Asli Di jakarta
Obat Aborsi jakarta WA 082223109953 Cytotec Asli Di jakarta
Ā 
ESTIMASI BIAYA PEMELIHARAAN BANGUNAN BERDASARKAN PEDOMAN PEMELIHARAAN DAN.pptx
ESTIMASI BIAYA PEMELIHARAAN BANGUNAN BERDASARKAN PEDOMAN PEMELIHARAAN DAN.pptxESTIMASI BIAYA PEMELIHARAAN BANGUNAN BERDASARKAN PEDOMAN PEMELIHARAAN DAN.pptx
ESTIMASI BIAYA PEMELIHARAAN BANGUNAN BERDASARKAN PEDOMAN PEMELIHARAAN DAN.pptx
adnijayautama
Ā 

Recently uploaded (16)

Jual Obat Aborsi Batam ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jual Ob...
Jual Obat Aborsi Batam ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jual Ob...Jual Obat Aborsi Batam ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jual Ob...
Jual Obat Aborsi Batam ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jual Ob...
Ā 
Pelaksana Lapangan Pekerjaan Bangun air Limbah Permukiman Madya
Pelaksana Lapangan Pekerjaan Bangun air Limbah Permukiman MadyaPelaksana Lapangan Pekerjaan Bangun air Limbah Permukiman Madya
Pelaksana Lapangan Pekerjaan Bangun air Limbah Permukiman Madya
Ā 
Obat Aborsi Sungai Penuh 082223109953 Jual Cytotec Asli Di Sungai Penuh
Obat Aborsi Sungai Penuh 082223109953 Jual Cytotec Asli Di Sungai PenuhObat Aborsi Sungai Penuh 082223109953 Jual Cytotec Asli Di Sungai Penuh
Obat Aborsi Sungai Penuh 082223109953 Jual Cytotec Asli Di Sungai Penuh
Ā 
obat aborsi Pangkal pinang Wa 082223109953 Jual obat aborsi Cytotec asli Di P...
obat aborsi Pangkal pinang Wa 082223109953 Jual obat aborsi Cytotec asli Di P...obat aborsi Pangkal pinang Wa 082223109953 Jual obat aborsi Cytotec asli Di P...
obat aborsi Pangkal pinang Wa 082223109953 Jual obat aborsi Cytotec asli Di P...
Ā 
Gambar Rencana TOYOMARTO KETINDAN Malang jawa timur.pdf
Gambar Rencana TOYOMARTO KETINDAN Malang jawa timur.pdfGambar Rencana TOYOMARTO KETINDAN Malang jawa timur.pdf
Gambar Rencana TOYOMARTO KETINDAN Malang jawa timur.pdf
Ā 
Petunjuk teknis Pengisian Usulan Alat Kesehatan SOPHI.pptx
Petunjuk teknis Pengisian Usulan Alat Kesehatan SOPHI.pptxPetunjuk teknis Pengisian Usulan Alat Kesehatan SOPHI.pptx
Petunjuk teknis Pengisian Usulan Alat Kesehatan SOPHI.pptx
Ā 
Jual Obat Aborsi Denpasar Bali ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik...
Jual Obat Aborsi Denpasar Bali ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik...Jual Obat Aborsi Denpasar Bali ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik...
Jual Obat Aborsi Denpasar Bali ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik...
Ā 
Makalah pptMOTOR LISTRIK DAN MOTOR AC.pptx
Makalah pptMOTOR LISTRIK DAN MOTOR AC.pptxMakalah pptMOTOR LISTRIK DAN MOTOR AC.pptx
Makalah pptMOTOR LISTRIK DAN MOTOR AC.pptx
Ā 
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptxPresentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
Ā 
Electrostatic Precipitator handbook manual
Electrostatic Precipitator handbook manualElectrostatic Precipitator handbook manual
Electrostatic Precipitator handbook manual
Ā 
Bahan kuliah elemen mesin semester 2 rekayasa manufaktur
Bahan kuliah elemen mesin semester 2 rekayasa manufakturBahan kuliah elemen mesin semester 2 rekayasa manufaktur
Bahan kuliah elemen mesin semester 2 rekayasa manufaktur
Ā 
K3 INSTALASI PENYALUR PETIR PERMEN 31 TH 2015
K3 INSTALASI PENYALUR PETIR PERMEN 31 TH 2015K3 INSTALASI PENYALUR PETIR PERMEN 31 TH 2015
K3 INSTALASI PENYALUR PETIR PERMEN 31 TH 2015
Ā 
Jual Cytotec Di Batam Ori šŸ‘™082122229359šŸ‘™Pusat Peluntur Kandungan Konsultasi
Jual Cytotec Di Batam Ori šŸ‘™082122229359šŸ‘™Pusat Peluntur Kandungan KonsultasiJual Cytotec Di Batam Ori šŸ‘™082122229359šŸ‘™Pusat Peluntur Kandungan Konsultasi
Jual Cytotec Di Batam Ori šŸ‘™082122229359šŸ‘™Pusat Peluntur Kandungan Konsultasi
Ā 
PPT PELAKSANA LAPANGAN PERPIPAAN MADYA - IWAN SYAHRONI.pptx
PPT PELAKSANA LAPANGAN PERPIPAAN MADYA - IWAN SYAHRONI.pptxPPT PELAKSANA LAPANGAN PERPIPAAN MADYA - IWAN SYAHRONI.pptx
PPT PELAKSANA LAPANGAN PERPIPAAN MADYA - IWAN SYAHRONI.pptx
Ā 
Obat Aborsi jakarta WA 082223109953 Jual Obat Aborsi Cytotec Asli Di jakarta
Obat Aborsi jakarta WA 082223109953  Jual Obat Aborsi Cytotec Asli Di jakartaObat Aborsi jakarta WA 082223109953  Jual Obat Aborsi Cytotec Asli Di jakarta
Obat Aborsi jakarta WA 082223109953 Jual Obat Aborsi Cytotec Asli Di jakarta
Ā 
ESTIMASI BIAYA PEMELIHARAAN BANGUNAN BERDASARKAN PEDOMAN PEMELIHARAAN DAN.pptx
ESTIMASI BIAYA PEMELIHARAAN BANGUNAN BERDASARKAN PEDOMAN PEMELIHARAAN DAN.pptxESTIMASI BIAYA PEMELIHARAAN BANGUNAN BERDASARKAN PEDOMAN PEMELIHARAAN DAN.pptx
ESTIMASI BIAYA PEMELIHARAAN BANGUNAN BERDASARKAN PEDOMAN PEMELIHARAAN DAN.pptx
Ā 

Line tracker robot avr atmega8535

  • 1. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Page 1 of 15 Membuat Sendiri Robot Line Tracker Robot Line Tracker Pada project kali ini kita akan membahas cara membuat robot line tracker yang dapat bergerak mengikuti track berupa garis hitam setebal 3 cm. Garis hitam tersebut disusun membentuk sejumlah persimpangan-persimpangan. Robot diprogram untuk dapat menghitung jumlah persimpangan yang sudah dilaluinya, kemudian belok sesuai dengan arah yang diinginkan. Untuk membaca garis, robot dilengkapi dengan sensor proximity yang dapat membedakan antara garis hitam dengan lantai putih. Sensor proximity ini dapat dikalibrasi untuk menyesuaikan pembacaan sensor terhadap kondisi pencahayaan ruangan. Sehingga pembacaan sensor selalu akurat. Agar pergerakan robot menjadi lebih halus, maka kecepatan robot diatur sesuai dengan kondisi pembacaan sensor proximity. Jika posisi robot menyimpang dari garis, maka robot akan melambat. Namun jika robot tepat berada diatas garis, maka robot akan bergerak cepat. Robot juga dapat kembali ke garis pada saat robot terlepas sama sekali dari garis. Hal ini bisa dilakukan karena robot selalu mengingat kondisi terakhir pembacaan sensor. Jika terakhir kondisinya adalah disebelah kiri garis, maka robot akan bergerak ke kanan, demikian pula sebaliknya. Gambar 1. Robot Line Tracker Sensor Proximity 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. Berikut adalah ilustrasinya : LED Photodioda Garis Hitam Gambar 1. Cahaya pantulan sedikit LED Photodioda Garis Putih Gambar 2. Cahaya pantulan banyak Gambar 2. Prinsip Kerja Sensor Proximity
  • 2. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 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. Berikut adalah gambar rangkaian sensor proximity yang digunakan pada robot ini : Ke AVR (PD.3) Page 2 of 15 +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V Ke AVR (PD.0 ) R1 220 R2 10K D2 PD +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V +5V Ke AVR (PD.1 ) Ke AVR (PD.4) Ke AVR (PD.2 ) Ke AVR (PD.5) R3 470 D6 LED R1 220 VR2 10K D4 LED R5 10K U1B LM339 + - 5 4 2 3 12 D1 LED R4 220 D2 PD D3 LED R6 470 D5 PD U1A LM339 + - 7 6 1 3 12 R2 10K VR1 10K R6 470 R4 220 D6 LED D4 LED VR2 10K U1D LM339 + - 11 10 13 3 12 D5 PD U2A LM339 + - 7 6 1 3 12 D3 LED R5 10K R3 VR1 470 10K D1 LED R6 VR2 470 10K R4 220 R5 10K D5 PD U1C LM339 + - 9 8 14 3 12 D4 LED D6 LED R6 470 U2B LM339 + - 5 4 2 3 12 R4 220 D4 LED R5 10K VR2 10K D6 LED D5 PD Gambar 3. Rangkaian Sensor Proximity 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. Gambar 4. Posisi Pemasangan Sensor Proximity Pada Robot
  • 3. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Sensor proximity terdiri dari 6 pasang LED dan photodiode yang disusun sedemikian rupa sehingga jarak antara satu sensor dengan yang lainnya lebih kecil dari lebar garis hitam. Perhatikan gambar berikut : Page 3 of 15 Sensor Line Line Track SkiXX SkiX Ski Ska SkaX SkaXX PIND.5 PIND.4 PIND.3 PIND.2 PIND.1 PIND.0 Gambar 5. Jarak Antar Sensor Proximity Rancangan Mekanik Robot Proximity Sensor Motor Kanan Motor Kiri Freewheel Baterai 12V Robot Tampak Atas Rangkaian Elektronika Robot Tampak Samping Gambar 6. Mekanik Robot
  • 4. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Page 4 of 15 Algoritma Pergerakan Robot Sebelum membuat program, maka kita perlu mendefinisikan seluruh kemungkinan pembacaan sensor proximity. Dengan demikian kita dapat menentukan pergerakan robot yang tujuannya adalah menjaga agar robot selalu berada tepat diatas garis. Berikut adalah beberapa kemungkinan pembacaan garis oleh sensor proximity : SkiXX SkiX Ski Ska SkaX SkaXX SkiXX SkiX Ski Ska SkaX SkaXX 1 2 SkiXX SkiX Ski Ska SkaX SkaXX 3 4 SkiXX SkiX Ski Ska SkaX SkaXX SkiXX SkiX Ski Ska SkaX SkaXX 5 SkiXX SkiX Ski Ska SkaX SkaXX 6 SkiXX SkiX Ski Ska SkaX SkaXX 7 Gambar 7. Kemungkinan Posisi Sensor Proximity Pada Line Setelah mengetahui kemungkinan-kemungkinan posisi sensor, maka selanjutnya harus didefinisikan aksi dari setiap kondisi tersebut. Perhatikan tabel berikut ini : Tabel 1. Aksi Pergerakan Robot Posisi Sensor Aksi Robot Roda Kiri Roda Kanan 1 Belok Kanan Tajam Maju cepat Berhenti 2 Belok Kanan Sedang Maju cepat Maju lambat 3 Belok Kanan Ringan Maju cepat Maju sedang 4 Maju Lurus Maju cepat Maju cepat 5 Belok Kiri Ringan Maju sedang Maju cepat 6 Belok Kiri Sedang Maju lambat Maju cepat 7 Belok Kiri Tajam Berhenti Maju cepat
  • 5. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Page 5 of 15 Lapangan Uji Coba Lapangan berupa garis-garis hitam diatas lantai berwarna putih. Garis hitam disusun membentuk banyak persimpangan. Ukuran tiap kotak adalah 30 cm x 30 cm. Ketebalan garis hitam adalah 3 cm. Garis hitam ini bisa dibuat menggunakan isolasi hitam kemudian ditempel pada lantai atau kertas karton berwarna putih. 30 cm 30 cm Gambar 8. Lapangan Uji Coba Dalam aplikasi ini, robot akan bergerak mengikuti kotak terluar lapangan. Posisi awal robot seperti terlihat pada gambar berikut ini : Gambar 9. Pergerakan Robot di Lapangan
  • 6. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 1N4001 Page 6 of 15 Driver Motor DC Untuk menggerakkan dua buah motor dc, digunakan IC H-Bridge Motor Driver L298, yang mampu memberikan arus maksimum sebesar 1A ke tiap motor. Input L298 ada 6 jalur, terdiri dari input data arah pergerakan motor dan input untuk PWM (Pulse Width Modulation). Untuk mengatur kecepatan motor, pada input PWM inilah akan diberikan lebar pulsa yang bervariasi dari mikrokontroler. +12V +12V MOTOR KANAN 1N4001 U1 5 1A1 7 1A2 10 2A1 2A2 6 11 2EN L298 12 1EN 1Y1 2 3 1Y2 2Y1 13 14 2Y2 1E 1 2E 15 1N4001 1 1N4001 1N4001 1N4001 MOTOR KIRI 1N4001 1 1N4001 Ke AVR (PC.0) Ke AVR (PC.1) Ke AVR (PC.2) Ke AVR (PC.3) Ke AVR (PC.4) Ke AVR (PC.5) Gambar 10. Rangkaian Driver Motor DC Untuk menentukan arah pergerakan motor maka pada input L298 harus diberikan kondisi sesuai dengan tabel berikut : Tabel 2. Tabel Kebenaran Driver Motor Motor 1 Motor 2 Input Output Input Output I1A1 1A2 1EN 1Y1 1Y2 Aksi Motor 2A1 2A2 2EN 2Y1 2Y2 Aksi Motor 0 0 1 0 0 Free Running Stop 0 0 1 0 0 Free Running Stop 0 1 1 0 12V CW 0 1 1 0 12V CW 1 0 1 12V 0 CCW 1 0 1 12V 0 CCW 1 1 1 12V 12V Fast Stop 1 1 1 12V 12V Fast Stop x x 0 0 0 Free Running Stop x x 0 0 0 Free Running Stop
  • 7. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Ke Driv er Motor Ke Driv er Motor Ke Driv er Motor Ke Driv er Motor Page 7 of 15 AVR Microcontroller Sebagai ā€otakā€ robot digunakan mikrokontroler AVR jenis ATmega8535 yang akan membaca data dari sensor proximity, mengolahnya, kemudian memutuskan arah pergerakan robot. Gambar 11. Mikrokontroler ATmega8535 Pada Robot Pada robot line track ini, keluaran sensor proximity dihubungkan ke PortD.0 dan PortD.5 pada mikrokontroler. Sedangkan driver motor dihubungkan ke PortC.0 s/d PortC.5 seperti terlihat pada gambar berikut : +5V MOSI SCK RESET +5V +5V Ke Driv er Motor Ke Driv er Motor VCC Ke Sensor Proximity Ke Sensor Proximity Ke Sensor Proximity Ke Sensor Proximity Ke Sensor Proximity Ke Sensor Proximity MOSI MISO SCK MISO GND 33pF 33pF 10uF/16V XTAL 11.0592 MHz U1 1 2 PB.1 (T1) PB.0 (XCK/T0) PB.2 (INT2/AIN0) 6 PB.4 (SS) 5 PB.3 (OC0/AIN1) RESET 13 12 XTAL2 14 15 PD.1 (TXD) 17 18 PD.4 (OC1B) ATmega8535 3 XTAL1 9 VCC 10 GND 11 PB.6 (MISO) 7 PB.7 (SCK) 8 PD.0 (RXD) PD.2 (INT2) 16 PD.3 (INT1) PD.5 (OC1A) 19 PD.6 (ICP1) 20 (OC2) PD.7 21 (ADC0) PA.0 40 (ADC1) PA.1 39 38 (ADC2) PA.2 (ADC3) PA.3 37 (ADC4) PA.4 36 35 (ADC5) PA.5 (ADC6) PA.6 34 (ADC7) PA.7 33 (TOSC2) PC.7 29 28 (TOSC1) PC.6 PC.5 27 PC.4 26 25 PC.3 PC.2 24 (SDA) PC.1 23 22 (SCL) PC.0 AREF 32 GND 31 AVCC 30 PB.5 (MOSI) 4 S1 10K SPI PORT 123456 Gambar 12. Mikrokontroler ATmega8535
  • 8. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Membuat Source Code Source code secara lengkap dapat dilihat pada Lampiran A. Source code dibuat dengan menggunakan software CodeVisionAVR dengan langkah-langkah sebagai berikut : Page 8 of 15 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
  • 9. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 5. Klik File -> Generate, Save and Exit 6. Buatlah source code seperti pada Lampiran A. 7. Setelah selesai membuat source code, klik Setting -> Programmer 8. Pilih AVR Chip Programmer Type : Kanda System STK200+/300 dan pilih Printer Port pada Page 9 of 15 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.
  • 10. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Page 10 of 15 Penjelasan Source Code Berikut adalah penjelasan tiap bagian dari source code. 1. Membuat definisi port yang digunakan sebagai berikut : #define SkiXX PIND.0 // Sensor kiri terluar #define SkiX PIND.1 // Sensor kiri luar #define Ski PIND.2 // Sensor kiri tengah #define Ska PIND.3 // Sensor kanan tengah #define SkaX PIND.4 // Sensor kanan luar #define SkaXX PIND.5 // Sensor kanan terluar #define EnKi PORTC.4 // Enable L298 untuk motor kiri #define dirA_Ki PORTC.0 // Direction A untuk motor kiri #define dirB_Ki PORTC.1 // Direction B untuk motor kiri #define EnKa PORTC.5 // Enable L298 untuk motor kanan #define dirC_Ka PORTC.2 // Direction C untuk motor kanan #define dirD_Ka PORTC.3 // Direction D untuk motor kanan 2. Menentukan library yang digunakan : #include <mega8535.h> // Library untuk chip ATmega8535 #include <delay.h> // Library delay 3. Membuat variable sebagai pengingat kondisi pembacaan sensor line terakhir. bit x; 4. Membuat ISR Timer 0 / Interrupt Service Routine Timer 0. ā€¢ ISR ini digunakan untuk menghasilkan pulsa PWM untuk mengendalikan motor kiri dan kanan melalui bit EnKi dan EnKa. ā€¢ ISR Timer 0 dieksekusi secara periodik ketika Timer 0 overflow. Lamanya tergantung nilai Timer/Counter 0 (TCNT0). ā€¢ Periode pulsa ditentukan oleh TCNT0. Nilai maksimumnya 0xFF atau 255d. ā€¢ Duty cycle PWM untuk motor kiri ditentukan oleh nilai lpwm. Maksimum 255. ā€¢ Duty cycle PWM untuk motor kanan ditentukan oleh nilai rpwm. Maksimum 255. unsigned char xcount,lpwm,rpwm; // Definisi variable // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Place your code here xcount++; // xcount=xcount+1 if(xcount<=lpwm)EnKi=1; // EnKi=1 jika xcount <= lpwm else EnKi=0; // EnKi=0 jika xcount > lpwm if(xcount<=rpwm)EnKa=1; // EnKa=1 jika xcount <= rpwm else EnKa=0; // EnKa=0 jika xcount > rpwm TCNT0=0xFF; // Timer0 Value Menentukan periode pulsa PWM } 5. Membuat sub rutin agar robot bergerak maju void maju() { dirA_Ki=1;dirB_Ki=0; // Motor kiri maju dirC_Ka=1;dirD_Ka=0; // Motor kanan maju } 6. Membuat sub rutin agar robot belok ke kiri void belok_kiri() { unsigned int i; lpwm=50; rpwm=50; // Kecepatan pelan delay_ms(60); // Robot dimajukan sedikit dirA_Ki=0;dirB_Ki=1; // Motor kiri mundur dirC_Ka=1;dirD_Ka=0; // Motor kanan maju for(i=0;i<=1000;i++) while (!SkiXX ||!SkiX) {}; for(i=0;i<=1000;i++) while ( SkiXX || SkiX) {}; lpwm=0; rpwm=0; // Robot berhenti }
  • 11. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Pada program diatas, tampak ada 2 ā€œfor whileā€ yang masing-masing diulang 1000 kali untuk memastikan bahwa sensor benar-benar membaca sebuah garis, bukan noda atau kotoran yang ada di lapangan. ā€¢ for(i=0;i<=1000;i++) while (!SkiXX ||!SkiX) {}; Robot akan terus belok kiri selama sensor SkiXX=0 atau SkiX=0 (sensor berada diatas garis hitam) Page 11 of 15 ā€¢ for(i=0;i<=1000;i++) while ( SkiXX || SkiX) {}; Selanjutnya robot tetap belok kiri selama sensor SkiXX=1 atau SkiX=1 (sensor berada diatas permukaan putih) 7. Membuat sub rutin agar robot belok ke kanan void belok_kanan() { unsigned int i; lpwm=50; rpwm=50; // Kecepatan pelan delay_ms(60); // Robot dimajukan sedikit dirA_Ki=1;dirB_Ki=0; // Motor kiri maju dirC_Ka=0;dirD_Ka=1; // Motor kanan mundur for(i=0;i<=1000;i++) while (!SkaXX ||!SkaX) {}; for(i=0;i<=1000;i++) while ( SkaXX || SkaX) {}; lpwm=0; rpwm=0; // Robot berhenti } 8. Membuat sub rutin membaca line unsigned char sensor; void scan_rule1() { maju(); // Robot bergerak maju sensor=PIND; // PIND diberi nama sensor sensor&=0b00111111; // sensor di-AND-kan dengan 0b00111111 switch(sensor) { case 0b00111110: rpwm=0; lpwm=200; x=1; break; case 0b00111100: rpwm=50; lpwm=200; x=1; break; case 0b00111101: rpwm=75; lpwm=200; x=1; break; case 0b00111001: rpwm=100; lpwm=200; x=1; break; case 0b00111011: rpwm=150; lpwm=200; x=1; break; case 0b00110011: rpwm=200; lpwm=200; break; case 0b00110111: rpwm=200; lpwm=150; x=0; break; case 0b00100111: rpwm=200; lpwm=100; x=0; break; case 0b00101111: rpwm=200; lpwm=75; x=0; break; case 0b00001111: rpwm=200; lpwm=50; x=0; break; case 0b00011111: rpwm=200; lpwm=0; x=0; break; case 0b00111111: break; if(x) {lpwm=50; rpwm=0; break;} else {lpwm=0; rpwm=50; break;} } } Variabel x ini berfungsi sebagai pengingat posisi terakhir robot terhadap garis. Jika robot berada di kanan garis, maka x=0. Jika robot berada di kiri garis, maka x=1. Ketika robot lepas dari track, maka program akan membaca kondisi variable x, sehingga dapat ditentukan arah gerak robot agar robot dapat kembali ke garis, seperti terlihat pada instruksi berikut : if(x) {lpwm=50; rpwm=0; break;} else {lpwm=0; rpwm=50; break;} Jika x=1 maka robot belok kanan, jika x=0 maka robot belok kiri. 9. Membuat sub rutin membaca persimpangan void scan_count(unsigned char count) { unsigned int i; unsigned char xx=0; while(xx<count) { for(i=0;i<1000;i++) while((sensor & 0b00011110)!=0b00000000) scan_rule1(); for(i=0;i<1000;i++) while((sensor & 0b00011110)==0b00000000) scan_rule1(); xx++;
  • 12. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Page 12 of 15 } } Variable count digunakan untuk menentukan jumlah persimpangan yang harus dilewati. Variable xx berisi jumlah persimpangan yang telah dilewati. Nilainya akan bertambah 1 ketika kondisi 4 sensor tengah membaca garis hitam semua kemudian membaca garis putih semua. 10. Membuat main program void main(void) { . . . . while (1) { // Place your code here scan_count(3); // Maju 3 persimpangan belok_kanan(); // Belok kanan }; }
  • 13. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Page 13 of 15 Lampiran A. Source Code ā€œ Line Tracker Robotā€ /********************************************* This program was produced by the CodeWizardAVR V1.24.0 Standard Automatic Program Generator Ā© Copyright 1998-2003 HP InfoTech s.r.l. http://www.hpinfotech.ro e-mail:office@hpinfotech.ro Project : Version : Date : 17/11/2007 Author : hendawan Company : Comments: Chip type : ATmega8535L Program type : Application Clock frequency : 11,059200 MHz Memory model : Small External SRAM size : 0 Data Stack size : 128 *********************************************/ #define SkiXX PIND.0 #define SkiX PIND.1 #define Ski PIND.2 #define Ska PIND.3 #define SkaX PIND.4 #define SkaXX PIND.5 #define EnKi PORTC.4 #define dirA_Ki PORTC.0 #define dirB_Ki PORTC.1 #define EnKa PORTC.5 #define dirC_Ka PORTC.2 #define dirD_Ka PORTC.3 #include <mega8535.h> #include <delay.h> bit x; unsigned char xcount,lpwm,rpwm; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Place your code here xcount++; if(xcount<=lpwm)EnKi=1; else EnKi=0; if(xcount<=rpwm)EnKa=1; else EnKa=0; TCNT0=0xFF; // Timer0 Value Menentukan periode pulsa PWM } void maju() { dirA_Ki=1;dirB_Ki=0; dirC_Ka=1;dirD_Ka=0; } void belok_kiri() { unsigned int i; lpwm=50; rpwm=50; delay_ms(60); // dimajukan sedikit dirA_Ki=0;dirB_Ki=1; dirC_Ka=1;dirD_Ka=0; for(i=0;i<=1000;i++) while (!SkiXX ||!SkiX) {}; for(i=0;i<=1000;i++) while ( SkiXX || SkiX) {}; lpwm=0; rpwm=0; } void belok_kanan() { unsigned int i; lpwm=50; rpwm=50; delay_ms(60); // dimajukan sedikit dirA_Ki=1;dirB_Ki=0;
  • 14. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Page 14 of 15 dirC_Ka=0;dirD_Ka=1; for(i=0;i<=1000;i++) while (!SkaXX ||!SkaX) {}; for(i=0;i<=1000;i++) while ( SkaXX || SkaX) {}; lpwm=0; rpwm=0; } // Declare your global variables here unsigned char sensor; void scan_rule1() { maju(); sensor=PIND; sensor&=0b00111111; switch(sensor) { case 0b00111110: rpwm=0; lpwm=200; x=1; break; case 0b00111100: rpwm=50; lpwm=200; x=1; break; case 0b00111101: rpwm=75; lpwm=200; x=1; break; case 0b00111001: rpwm=100; lpwm=200; x=1; break; case 0b00111011: rpwm=150; lpwm=200; x=1; break; case 0b00110011: rpwm=200; lpwm=200; break; case 0b00110111: rpwm=200; lpwm=150; x=0; break; case 0b00100111: rpwm=200; lpwm=100; x=0; break; case 0b00101111: rpwm=200; lpwm=75; x=0; break; case 0b00001111: rpwm=200; lpwm=50; x=0; break; case 0b00011111: rpwm=200; lpwm=0; x=0; break; case 0b00111111: break; if(x) {lpwm=50; rpwm=0; break;} else {lpwm=0; rpwm=50; break;} } } void scan_count(unsigned char count) { unsigned int i; unsigned char xx=0; while(xx<count) { for(i=0;i<1000;i++) while((sensor & 0b00011110)!=0b00000000) scan_rule1(); for(i=0;i<1000;i++) while((sensor & 0b00011110)==0b00000000) scan_rule1(); xx++; } } void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out Func6=Out Func7=Out // State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0 State7=0 PORTC=0x00; DDRC=0xFF; // Port D initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=P State1=P State2=P State3=P State4=P State5=P State6=P State7=P PORTD=0xFF; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 10,800 kHz // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x05; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization
  • 15. Application Note Line Tracker Robot using AVR Microcontroller Created by Hendawan Soebhakti on Desember 2007 Page 15 of 15 // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // 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=0x01; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off ACSR=0x80; SFIOR=0x00; // Global enable interrupts #asm("sei") while (1) { // Place your code here scan_count(3); belok_kanan(); }; }