Anda di halaman 1dari 13

ROBOTIKA 2

ROBOT LINE FOLLOWER SEDERHANA


PRAKTIKUM III
Robot Line Follower Sederhana
A. Tujuan
1. Mahasiswa dapat mengkombinasikan antara pengontrolan motor
dengan PWM, dengan sensor proximity dengan ADC.
2. Mahasiswa dapat membuat program robot line follower sederhana.
3. Mahasiswa dapat mensimulasikan pada program Proteus, antara
pengontrolan motor dengan PWM, dengan sensor proximity dengan
ADC.
4. Mahasiswa mampu merangkai robot line follower sederhana.
B. Teori Dasar
Robot Line Follower adalah robot yang dapat bergerak mengikuti garis
secara otomatis tanpa ada remot yang mengaturnya. Prinsip dasarnya,
sama seperti manusia, mata digunakan untuk melihat, kaki/roda
digunakan untuk berjalan, dan otak digunakan untuk berpikir. 3 Komponen
utama pada setiap robot : mata, kaki, dan otak.
Pada percobaan sebelumnya kita telah membuat program kontrol motor
dengan PWM, lalu pembacaan sensor proximity dengan ADC. Pada
praktikum ini, akan dikombinasikan kedua metode tersebut sehingga
dapat menghasilkan robot line follower sederhana.
C. Peralatan yang Dibutuhkan
1. Alat dan Bahan
a. Sistem minimum Atmega 8535
b. Downloader USBAsp
c. Sensor proximity (8 buah)
d. Modul LCD
e. Motor DC (2 buah)
f. Driver motor L293D
g. Kabel jumper secukupnya
h. Kabel USB
i. Catu Daya
2. Software
a. CodeVision AVR
b. Proteus ISIS
c. Progisp 1.72

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA
D. Gambar Rangkaian
LCD1

RV9

LM016L

0%

RV8
0%

RV7
0%

RV6
0%

RV5
0%

RV4
0%

RV3
0%

0%

RV2

1k

1k

1k

U1

14
15
16
17
18
19
20
21

IN1
IN2
IN3
IN4
EN2
EN1

13
12
9

PB0/T0/XCK
PB1/T1
PB2/AIN0/INT2
PB3/AIN1/OC0
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/OC1B
PD5/OC1A
PD6/ICP1
PD7/OC2

40
39
38
37
36
35
34
33

PA0/ADC0
PA1/ADC1
PA2/ADC2
PA3/ADC3
PA4/ADC4
PA5/ADC5
PA6/ADC6
PA7/ADC7

1K

22
23
24
25
26
27
28
29

PC0/SCL
PC1/SDA
PC2
PC3
PC4
PC5
PC6/TOSC1
PC7/TOSC2

XTAL1
XTAL2
RESET

1
2
3

1
2
3
4
5
6
7
8

+5V

+12V

32
30

AREF
AVCC

D0
D1
D2
D3
D4
D5
D6
D7

1k

7
8
9
10
11
12
13
14

1k

4
5
6

1k

VSS
VDD
VEE

1k

RS
RW
E

RV1
1k

16

U2

ATMEGA8535
IN1
IN2
EN1
EN2
IN3
IN4

D8

D7

D6

D5

D4

D3

D2

D1

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

R8

R7

R6

R5

R4

R3

R2

R1

330R

330R

330R

330R

330R

330R

330R

330R

2
7
1
9
10
15

IN1
IN2
EN1
EN2
IN3
IN4

VSS

VS OUT1
OUT2

3
6
+88.8

GND

OUT3
GND OUT4

11
14
L293D

+88.8

Gambar 3.1 Rangkaian robot line follower sederhana


E. Langkah Kerja
Adapun langkah kerja pada praktikum ini adalah sebagai berikut:
1. Merangkai peralatan sesuai dengan rangkaian percobaan
2. Menjalankan program Codevision AVR
3. Pilih menu File -> New dan Buat Project baru

Gambar 3.2. Window untuk membuat Project baru


4. Pilih tipe chip AVR AT90,Attiny,ATmega,FPSLIC karena mikrokontroler
yang akan digunakan adalah ATmega8535.

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA

Gambar 3.3. Window untuk memilih tipe Chip


5. Pada window yang muncul, pilih Tab Chip. Konfigurasi jenis chip yang
akan digunakan yaitu ATmega8535, dan Clock 12Mhz.

Gambar 3.4. Konfigurasi Chip pada CodevisionAVR


6. Pilih Tab Ports, lalu PORTD. Atur agar Data Direction menjadi
output. Begitupun dengan PORTB diatur agar menjadi Output.

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA
Gambar 3.5. Konfigurasi Port pada CodevisionAVR
7. Pilih Tab Timer. Lalu pilih Timer1. Atur seperti pada gambar beikut.

Gambar 3.6. Konfigurasi Port pada CodevisionAVR


8. Pilih Tab Alphanumeric LCD, lalu ganti semua kode pada LCD Module
AVR menjadi PORTC. Pada bagian Characters/line set menjadi 8.

Gambar 3.7. Konfigurasi Port pada CodevisionAVR


9. Pilih Tab ADC, lalu centang ADC Enabled dan use 8 bit. Sesuiakan
seperti gambar

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA

Gambar 3.8. Konfigurasi Port pada CodevisionAVR


10.
Klik tombol Generate program, save and exit untuk
menghasilkan dan menyimpan konfigurasi program. Simpan dengan
nama Percobaan 2.

Gambar 3.9. Tombol untuk menyimpan project pada window


CodeWizardAVR
11.

Pada file Percobaan 3.c , ketikkan listing program berikut ini:


#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <alcd.h>
#define IN1 PORTD.0
#define IN2 PORTD.1
#define IN3 PORTD.2
#define IN4 PORTD.3
#define EN1 OCR1A
#define EN2 OCR1B
#asm
.equ __lcd_port = 0x15;
#endasm
#define ADC_VREF_TYPE 0x20
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
int P1,P2,P3,P4,P5,P6,P7,P8;
unsigned char lcd[15];
void lcd_sensor(){

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA
lcd_gotoxy(0,0);
sprintf(lcd,"%X",P1);
lcd_puts(lcd);
lcd_gotoxy(3,0);
sprintf(lcd,"%X",P2);
lcd_puts(lcd);
lcd_gotoxy(6,0);
sprintf(lcd,"%X",P3);
lcd_puts(lcd);
lcd_gotoxy(9,0);
sprintf(lcd,"%X",P4);
lcd_puts(lcd);
lcd_gotoxy(0,1);
sprintf(lcd,"%X",P5);
lcd_puts(lcd);
lcd_gotoxy(3,1);
sprintf(lcd,"%X",P6);
lcd_puts(lcd);
lcd_gotoxy(6,1);
sprintf(lcd,"%X",P7);
lcd_puts(lcd);
lcd_gotoxy(9,1);
sprintf(lcd,"%X",P8);
lcd_puts(lcd);
if (P1 >= 180){
PORTB.0 = 1;
}else{
PORTB.0 = 0;
}
if (P2 >= 180){
PORTB.1 = 1;
}else{
PORTB.1 = 0;
}
if (P3 >= 180){
PORTB.2 = 1;
}else{
PORTB.2 = 0;
}
if (P4 >= 180){
PORTB.3 = 1;
}else{
PORTB.3 = 0;
}
if (P5 >= 180){
PORTB.4 = 1;
}else{
PORTB.4 = 0;
}
if (P6 >= 180){

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA
PORTB.5 = 1;
}else{
PORTB.5 = 0;
}
if (P7 >= 180){
PORTB.6 = 1;
}else{
PORTB.6 = 0;
}
if (P8 >= 180){
PORTB.7 = 1;
}else{
PORTB.7 = 0;
}
}
void maju(){
IN1 = 1;IN2=0;IN3=1;IN4=0; EN1 = 100; EN2 = 100;
}
void manuver_kanan(){
IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 1; EN1 = 100; EN2 = 100;
}
void manuver_kiri(){
IN1 = 0; IN2 = 1; IN3 = 1; IN4 = 0; EN1 = 100; EN2 = 100;
}
void belok_kanan(){
IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 0; EN1 = 100; EN2 = 100;
}
void belok_kiri(){
IN1 = 0; IN2 = 0; IN3 = 1; IN4 = 0; EN1 = 100; EN2 = 100;
}
void idle(){
IN1 = 0; IN2 = 0; IN3 = 0; IN4 = 0; EN1 = 100; EN2 = 100;
}
void main(void)
{
DDRB=0xFF;
DDRD=0x3F;
TCCR1A=0xA1;
TCCR1B=0x0D;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;
lcd_init(16);
while (1)
{
P1 = read_adc(0);P2 = read_adc(1);P3 = read_adc(2);P4 = read_adc(3);
P5 = read_adc(4);P6 = read_adc(5);P7 = read_adc(6);P8 = read_adc(7);
lcd_clear();
lcd_sensor();
delay_ms(50);
if((PORTB == 0b00000001)|(PORTB == 0b00000011)){
manuver_kanan();
EN1 = 200;
EN2 = 200;

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA
lcd_gotoxy(13,1);
lcd_puts("->");
}else if((PORTB == 0b00000100)|(PORTB == 0b00000110)|(PORTB == 0b00000111))
{
belok_kanan();
EN1 = 250;
EN2 = 200;
lcd_gotoxy(13,1);
lcd_puts("->>");
}else if((PORTB == 0b00011000)|(PORTB == 0b00111000)|(PORTB == 0b00011100))
{
maju();
EN1 = 250;
EN2 = 250;
lcd_gotoxy(13,1);
lcd_puts("^");
}else if((PORTB == 0b00100000)|(PORTB == 0b01100000)|(PORTB == 0b11100000))
{
belok_kiri();
EN1 = 200;
EN2 = 250;
lcd_gotoxy(13,1);
lcd_puts("<<-");
}else if((PORTB == 0b10000000)|(PORTB == 0b11000000)){
manuver_kiri();
EN1 = 200;
EN2 = 200;
lcd_gotoxy(13,1);
lcd_puts("<-");
}else {
idle();
EN1 = 0;
EN2 = 0;
lcd_gotoxy(13,1);
lcd_puts("-");
}
}
}

12.
Setelah program selesai. Klik menu Project, lalu pilih Build
All. Yang juga secara otomatis akan menghasilkan file hex dari
program. File hex dapat ditemukan dalam folder hex

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA

Gambar 3.10. Menu untuk meng-compile program pada CodevisionAVR


13.
Untuk simulasi buka program Proteus, lalu rangkai sesuai
petunjuk percobaan. Klik kanan pada Atmega8535 lalu pilih Edit
Properties.

Gambar 3.11. Mengubah properties pada Atmega8535 pada software


Proteus
14.
Pada bagian Program file ganti menjadi URL yang menunjuk file
hex yang dihasilkan Codevision AVR. Klik Ok.

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA

Gambar 3.12. Bagian program file tempat mengisi URL file HEX
15.

Pilih menu Debug lalu klik Start/Restart Debugging

Gambar 3.13. Memulai simulasi dengan menu Debug -> Start


16.
Perhatikan hasil program pada rangkaian Proteus
17.
Untuk rilnya, rangkai ATmega8535 dengan LCD, motor DC, Driver
motor L293D, dan sensor proximity.
18.
Buka program ProgISP. Lalu hubungkan USBASp ke komputer
melalui kabel USB. Pada ProgISP, ikon PRG ISP menandakan bahwa
USBAsp siap digunakan.

Gambar 3.14. Notifikasi bahwa USBAsp siap dipakai


19.

Atur value Fusebit menjadi 0xC9EF

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA

Gambar 3.15. Pengaturan Fusebit pada ProgISP


20.
Setelah mengatur Fusebit, pilih menu File -> Load Flash. Untuk
meload file hex yang dihasilkan dari program CodeVisionAVR.

Gambar 3.16. Menu untuk memuat file HEX pada ProgISP


21.
Setelah file di load, maka tekan tombol Auto untuk
mendownload program ke Sistem minimum.
22.
Setelah didownload, hubungkan USBAsp ke Sistem minimum
Atmega8535 dengan input tegangan dari catudaya.
23.
Amati pergerakan motor yang harus sesuai program yang telah
dibuat serta nilai pada LCD jika sensor proximity diarahkan ke keadaan
gelap (hitam) maupun terang (putih).

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA
F. Diagram Alir (Flowchart)

ROBOTIKA 2
ROBOT LINE FOLLOWER SEDERHANA
Gambar 3.17. Flowchart program

G. Hasil Praktikum
a. Rangkaian pada Proteus
RV8

LCD1

RV9

LM016L

0%

0%

RV7
0%

RV6
100%

RV5
100%

RV4
0%

RV3
0%

0%

RV2

1k

1k

1k

14
15
16
17
18
19
20
21

IN1
IN2
IN3
IN4
EN2
EN1

13
12
9

PB0/T0/XCK
PB1/T1
PB2/AIN0/INT2
PB3/AIN1/OC0
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/OC1B
PD5/OC1A
PD6/ICP1
PD7/OC2

40
39
38
37
36
35
34
33

PA0/ADC0
PA1/ADC1
PA2/ADC2
PA3/ADC3
PA4/ADC4
PA5/ADC5
PA6/ADC6
PA7/ADC7

1K

22
23
24
25
26
27
28
29

PC0/SCL
PC1/SDA
PC2
PC3
PC4
PC5
PC6/TOSC1
PC7/TOSC2

XTAL1
XTAL2
RESET

1
2
3

1
2
3
4
5
6
7
8

+5V

+12V

32
30

AREF
AVCC

D0
D1
D2
D3
D4
D5
D6
D7

1k

7
8
9
10
11
12
13
14

1k

4
5
6

1k

VSS
VDD
VEE

1k

RS
RW
E

RV1
1k

U1

16

U2

ATMEGA8535
IN1
IN2
EN1
EN2
IN3
IN4

D8

D7

D6

D5

D4

D3

D2

D1

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

LED-BLUE

R8

R7

R6

R5

R4

R3

R2

R1

330R

330R

330R

330R

330R

330R

330R

330R

2
7
1
9
10
15

IN1
IN2
EN1
EN2
IN3
IN4

VSS

VS OUT1
OUT2

3
6
+180

GND

OUT3
GND OUT4

11
14
L293D

+180

Gambar 3.18. Rangkaian hasil praktikum


b. Fisik rangkaian
Gambar 3.19. Fisik rangkaian percobaan
H. Analisa Percobaan
Berdasarkan percobaan yang telah dilakukan, ketika value hasil
pembacaan pada PORTB yang mewakili kondisi sensor Proximity, robot
dapat mengambil tindakan sesuai dengan instruksi program yang telah
diberikan. Tanggapan yang diberikan kurang cepat, hal ini ditimbulkan oleh
proses konversi sinyal dari sensor proximity, ke LCD, dan ke driver Motor
L293D.
I. Kesimpulan
Dengan mengkombinasikan antara metode pengontrolan motor DC
dengan PWM, dengan metode pembacaan sensor Proximity dengan ADC,
maka dapat dibuat sebuah robot line follower sederhana yang memiliki
kemampuan untuk mengikuti garis. Pembacaan garis dapat ditingkatkan
dengan menggunakan metode PID, yang menghasilkan program robot line
follower yang lebih baik dan efisien.

Anda mungkin juga menyukai