line follower fix

13
Robot Line Follower Jika anda tertarik dengan dunia robotik, anda dapat memiliki robot sederhana yang dapat berjalan mengikuti garis, robot ini di desain untuk pemula dan menjadi robot pertama anda untuk belajar mengenai sistem kendali robot, melalui robot ini anda juga dapat mempelajari atau mengaplikasikan algoritma (AI) untuk sistem kendalinya. Robot ini dilengkapi dengan 3 buah sensor sebagai indera penglihatan terhadap garis, 3 sensor itu di pasang di sebelah kiri, kanan dan tengah, anda dapat menggunakan sensor ini sebagai pemicu kendali motor kanan dan kiri yang juga dapat di kendalikan melalui program. Line Follower ROBOT dirancang yang menggunakan dua motor kontrol roda belakang dan roda depan tunggal bebas. Ini memiliki sensor 4-inframerah pada bagian bawah untuk mendeteksi pita hitam pelacakan, ketika sensor mendeteksi warna hitam, output dari komparator, LM324 adalah logika rendah dan yang lainnya output tinggi. Gambar Robot Line Follower

Upload: afiedandhy

Post on 06-Dec-2015

214 views

Category:

Documents


1 download

DESCRIPTION

buat robot Line Follower FIx

TRANSCRIPT

Page 1: Line Follower FIx

Robot Line Follower

Jika anda tertarik dengan dunia robotik, anda dapat memiliki robot sederhana yang dapat berjalan mengikuti garis, robot ini di desain untuk pemula dan menjadi robot pertama anda untuk belajar mengenai sistem kendali robot, melalui robot ini anda juga dapat mempelajari atau mengaplikasikan algoritma (AI) untuk sistem kendalinya.Robot ini dilengkapi dengan 3 buah sensor sebagai indera penglihatan terhadap garis, 3 sensor itu di pasang di sebelah kiri, kanan dan tengah, anda dapat menggunakan sensor ini sebagai pemicu kendali motor kanan dan kiri yang juga dapat di kendalikan melalui program.

Line Follower ROBOT dirancang yang menggunakan dua motor kontrol roda belakang dan roda depan tunggal bebas. Ini memiliki sensor 4-inframerah pada bagian bawah untuk mendeteksi pita hitam pelacakan, ketika sensor mendeteksi warna hitam, output dari komparator, LM324 adalah logika rendah dan yang lainnya output tinggi.

Gambar Robot Line Follower

.Rangkaian Line Follower

Page 2: Line Follower FIx

.Mikrokontroler AT89C2051 dan-Bridge driver L293D H digunakan untuk mengontrol arah dan kecepatan motor.

.Gambar Posisi sensor robot, sisi kiri adalah sisi tampilan dan sisi kanan adalah pandangan atas.

Page 3: Line Follower FIx

Skema rangkaian Infrared sensors and comparator

Page 4: Line Follower FIx

Bahasa C

#include d:\mc51\8051io.h#include d:\mc51\8051reg.hextern register unsigned char speedleft,speedright;register unsigned char high,low,flag,time;

main(){ P1=0x40; P3=0xff; high = 80; low = 30; flag = 0; time = 50; Start(); while(1) { P3|= 0x0f; Run(); }}

Start(){ char exit,key; exit =1; while(exit) { key = P1; if((key & 0x40)==0) exit=0; }}

Run(){ char sensors; sensors = (P3 &=0x0f);

if((sensors & 0x01)==0) { TurnRight(); flag = 1; }

else if((sensors & 0x08)==0) { TurnLeft(); flag = 2; } else if(sensors == 0x09) { Forward(high); flag = 0; }

else if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0)) Forward(low);

}

Page 5: Line Follower FIx

Forward(char speed){ P1=0x64; speedright = speed+10; speedleft = speed; delay(time);}

TurnRight(){ P1=0x68; speedright = low+5; speedleft = low; delay(time);}

TurnLeft(){ P1=0x54; speedright = low+5; speedleft = low; delay(time);}

Reverse(char speed){ P1=0x58; speedright = speed; speedleft = speed+5; delay(time);}

Page 6: Line Follower FIx

Bahasa Assembler

:0300000002000EED:03000300020055A3:20000B0002002475810F438901D2AFD2A9D28C12005880FE12001B80FBC0E0C0D0758CFFC3:20002B00758A000508E508B46403750800C395094004C2908002D290E508C3950A4004C2F4:20004B00918002D291D0D0D0E032050B327440F59074FFF5B07450F50C741EF50D7400F548:20006B000E7432F50F120080E5B0440FF5B01200BC0200732205810581740178FD12022609:20008B00F678FD120226E670030200B7E59008F6E654401202517B0012024812025A45F0D2:2000AB0070030200B4740018F602008C15811581220581E5B0540FF5B078FE120226F6E6FF:2000CB0054011202517B0012024812025A45F070030200E91201A97401F50E02018478FE52:2000EB00120226E654081202517B0012024812025A45F0700302010D1201C87402F50E02C1:20010B00018478FE120226E61202517B0912024812025A45F0700302013CE50C75F000C009:20012B00E0C0F0120187158115817400F50E02018478FE120226E61202517B0B1202481271:20014B00025A45F0700CE61202517B0D12024812025A45F0600CE50E75F0007B007C0012E8:20016B00025A45F07003020184E50D75F000C0E0C0F0120187158115811581227464F59067:20018B0078FB120226E6240AF509E6F50AE50F75F000C0E0C0F012020915811581227468C0:2001AB00F590E50D2405F509E50DF50AE50F75F000C0E0C0F012020915811581227454F5D4:2001CB0090E50D2405F509E50DF50AE50F75F000C0E0C0F012020915811581227458F59015:2001EB0078FB120226E6F509E62405F50AE50F75F000C0E0C0F0120209158115812278FBCE:20020B001202268603088604BB0004BC00012279E5A3D9FD1BBBFFF01C80F4C82581C8225C:20022B00C92581C97A0022D083D082CF2581F581CFC082C08322CF2581F581CF227C00CBB6:20024B0030E7011CCB2275F00030E70215F02212026D6009E4F5F02212026D60F7E4F5F057:20026B000422C5F0C39C7003E5F09B22FBE493CB22FCE493FB740193CC22FAE493F9740192:03028B0093CA22F1:00000001FF

Page 7: Line Follower FIx

#include d:\mc51\8051io.h

#include d:\mc51\8051reg.h

extern register

unsigned char speedleft,speedright;

register unsigned char high,low,flag,time;

main(){

P1=0x40;

P3=0xff;

high = 80;

low = 30;

flag = 0;

time = 50;

/*perhitungan port microkontroller

misal untuk port3 (p3)

P3_0 = 0

P3_1 = 0

P3_2 = 1

P3_3 = 1

--------------

P3_4 = 1

P3_5 = 0

P3_6 = 0

P3_7 = 0

Page 8: Line Follower FIx

Jumlah port ada 8 dibagi menjadi 2 kemudian masing2 didesimalkan. P3_0 s/d P3_3 menjadi desimal digit kedua,

P3_4 s/d P3_7 menjadi desimal digit pertama.

0011 -> 3 ; 1000 ->8 ; contoh di atas menjadi 0x38

*/

tepattengah= //00100

serongkanan1= //00110 dan 00010

serongkanan2= //00011

serongkanan3= //00001

serongkiri1= //01100 dan 01000

serongkiri2= //11000

serongkiri3= //10000

Start();

while(1) {

P3|= 0x0f;

Run();

}

}

Start(){

char exit,key;

exit =1;

while(exit){

key = P1;

Page 9: Line Follower FIx

if((key & 0x40)==0)

exit=0;

}

}

Run(){

char sensors;

sensors = (P3 &=0x0f);

if((sensors & 0x01)==0) {

TurnRight();

flag = 1;

}

else if((sensors & 0x08)==0) {

TurnLeft();

flag = 2;

}

else if(sensors == 0x09) {

Forward(high);

flag = 0;

}

else if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0))

Forward(low);

}

Page 10: Line Follower FIx

sensor=P3;

switch(sensor) {

case 0:

lpwm=0;rpwm=0;

if(td==1){lpwm=100;rpwm=0;}

if(td==2){lpwm=0;rpwm=100;}

break;

case 1://00000001

lpwm=100;rpwm=0;td=1;break;

case 3://00000011

lpwm=100;rpwm=20;td=1;break;

case 2://00000010

lpwm=100;rpwm=40;td=1;break;

case 6://00000110

lpwm=100;rpwm=60;td=1;break;

case 4://00000100

lpwm=100;rpwm=80;td=1;break;

case 12://00001100

lpwm=100;rpwm=100;td=0;break;

case 8: //00001000

lpwm=80;rpwm=100;td=2;break;

case 24://00011000

lpwm=60;rpwm=100;td=2;break;

case 16://00010000

lpwm=40;rpwm=100;td=2;break;

Page 11: Line Follower FIx

case 48://00110000

lpwm=20;rpwm=100;td=2;break;

case 32://00100000

lpwm=0;rpwm=100;td=2;break;

case 63://00111111

lpwm=100;rpwm=100;

//

Forward(char speed){

P1=0x64; //01100100

speedright = speed+10;

speedleft = speed;

delay(time);

}

TurnRight(){

P1=0x68; //01101000

speedright = low+5;

speedleft = low;

delay(time);

}

TurnLeft(){ //01010100

P1=0x54;

speedright = low+5;

speedleft = low;

delay(time);

}

Page 12: Line Follower FIx

Reverse(char speed){ //01011000

P1=0x58;

speedright = speed;

speedleft = speed+5;

delay(time);}