You are on page 1of 6

VISOKA TEHNIČKA ŠKOLA

NIŠ

SEMINARSKI RAD
Primena mikrokontrolera na primeru
robota koji prati liniju
Predmet: Programiranje mikrokontrolera

Mentor: Student:
Prof. dr Zoran N. Milivojević Radenković Vladimir
SEk 84/06

senzora za praćenje i naravno.3.3 i Sl. četiri IR senzora i komparatora LM324. dok su P3. 2 . Port P1. i raspored senzora dati su na Sl. prema rasporedu pinova ENx (x=12 ili x=34) ulazi inhibicionog napona Vinh. Zadatak je bio uz pomoć mikrokontolera. robot Plermjai Inchuay-a (Sl. U ovom radu biće proučen rad Plermjai Inchuay-a koji je pobednik Ving-Paw takmičenja Tajlandskih studenata na temu . dva elektromotora i napajanja konstruisati robota sposobnog da prati liniju. Zahvaljujući karakteristikama ugrađenih komponenti.6 vezan je za start dugme.7 vezan je za LED diodu.robot Robot je implementiran primenom Atmel-ovog mikrkontolera AT89C2051. OUT3 i OUT4 za drugi electromotor. Posebno temeljno biće analiziran program konstruktora sa obradom svakog bloka posebno. Zbog toga će hardverska konstrukcija njegovog projekta ovde biti detaljno obrađena. Izlazi pokretača OUT1 i OUT2 vezani su za jedan. uz ukazivanje prednosti i nedostataka pomenutog. Šema IR senzora i komparatora.0 i P1. IN3=A in IN4=B. a tabela funkcija i šema pokretača motora na Sl.1) pokazao se kao najbrži i najprecizniji u praćenju.2. Sl.2 do P1.4.5 vezani su na ulaze IN1-IN4 pokretača.1 . IN1=D. Portovi P1.4-P3.7 slobodni. Port 1. Radi razumevanja i povezivanja šeme robota i tabele funkcija i šeme pokretača treba naglasiti da su.a i samog programa koje su pisali konstruktori.0 do P3.. Senzori su preko komparatora vezani na port P3 – od P3. Portovi P1.Robot koji prati liniju”. H-Bridge pokretača motora L293D.1 vezani su na EN12 i EN34 pinove H-Bridge pokretača.5. pokretača motora. Šema robota data je na Sl. IN2=C.

2 – šema robota Sl.Sl.4 – raspored senzora Sl.3 – šema IR senzora i komparatora Sl.5 – šema H-bridge pokretača i tabela funkcija 3 .

register unsigned char high. na viši naponski nivo i deklariše kao ulaz.2 i P3. uključen taster. #include d:\mc51\8051io. } TurnRight – skretanje u desno. čime se ceo port P3 deklariše kao ulazni. Start blok proverava while petljom da li if((key & 0x40)==0) exit=0. punom brzinom oba else if(sensors == 0x09) { motora se ide napred. Program za mikrokontroler 2051 pisan je u C-jeziku. } traku. nisko flag = 0. TurnLeft(). do greške u programu. while(exit) { key = P1.7 uključuje LED time = 50. diodu. } Run() { char sensors.speedright. deklarisani kao izlaz.time. izvršava se blok flag = 1. Ukoliko senzori 2 i 3 registruju crnu flag = 2.0. P3=0xff. exit =1. prvi senzor je TurnRight(). Start().low.flag. Ujedno.P3.key. znači uslov za izvršenje programa je high = 80. a P3. } (sensors==0x0d))&&(flag==0)) 4 . nuli. else if((sensors & 0x08)==0) { izvršava se blok TurnLeft – skretanje u levo.h extern register unsigned char speedleft. registrovao crnu liniju. naponsko stanje na P1.7 neaktivni. Start() { char exit. sensors = (P3 &=0x0f).h #include d:\mc51\8051reg.3 na nižem logičkom stanju. Početna sekvenca P3=11111111. i Keil-ovim MC51 kompajlerom preveden u heksadecimalni kod. } Uz uslov dok je P3 nije jednak 00001111 } (dok svi senzori ne detektuju belu boju) izvršava se blok Run. program se dalje ne izvršava.3 su na visokom.6 stavlja P1=0x40. Ako je P3.4-P3. else if(((sensors==0x0b)|| flag = 0.1. P3=00001001. while(1) { Maska postavljena na P3 briše sadržaj P3|= 0x0f. pinova koji nisu konektovani da ne bi došlo Run(). a ostali pinovi su na logičkoj low = 30. je došlo do promene logičkih stanja porta P1 } i ukoliko nije. if((sensors & 0x01)==0) { dok su P3. main() U main bloku zadata je početna sekvenca { bitova za P1=01000000 čime se P1. Program u C-jeziku je razumljiv i bice u narednom delu proučen uz detaljno objašnjenje svakog bloka. Forward(high). Ukoliko se registruje niže logičko stanje na P3.

IN4 i P1=0x54. umesto speedleft = speed+5. P1=01000101=45h delay(time). P1=01100100. Greška u bloku Forward – speedright delay(time). IN3 na visokom naponskom nivou. } Ukoiko je logička sekvenca Forward(char speed) P3=00001011 ili 00001101 (senzori 1 i 4 i { jedan od senzora 2 ili 3 registruju crnu P1=0x64. kreće brzo pravolinijski.0ah. P1. gde je } sadržaj bitova obeleženih sa x nebitan. robot speedright = speed+10. po speedright = low+5.2. a kreće se brzo pravolinijski.0ch i kada se robot ne P1=0x68. komandom else } gde je trebalo definisati postupak u slučaju mogućih neobradjenih kombinacija P3 TurnRight() 00000011.6 na višem logičkom stanju. Nelogično. Blok za kretanje u nazad.05h. IN1. usporava. sa linije – P3=0fh. šemi trebalo da je kodovnje za speedleft = low. Skretanje u levo . niti slucaj skretanja speedright = low+5.IN2 i IN4 na visokom nivou – po šemi { bi trebalo da je P1= 01001001=49h P1=0x58.else if blok nije završen delay(time). koji nigde nije } pozvan. Forward(low)=>P1= 01xxxx00.00001100 { odnosno 03h. { P1. znači P1.00000101. Greška . uostalom } obe ove promenljive su suvisne. programiranje rada motora vrsi se preko TurnLeft() porta P1. Forward(low). Skretanje u desno – P1=01101100 - Reverse(char speed) IN1. Forward(high)=>P1=01100010=62h delay(time). 5 . START dugme uključeno. P1=01011000 – IN2 i IN3 na visokom naponskom nivou – L293D nema opciju vraćanja u rikverc.5. traku). speedleft = low. speedleft = speed.P1=01010100 – IN1 i speedright = speed.00001010. mora da bude jednaka speedright.

prostije strukture. postavlja se pitanje o stručnosti Tajlandskih studenata koji su učesvovali na takmičenju. 2051 je mnogo bolje rešenje zbog brzog odlučivanja. i da je samo zahvaljujući brzom odlučivanju mikrokontrolera 2051 pobedio na takmičenju.Po sudaru i skretanju sa putanje oba robota su nastavila da se kreću nekontolisano. .kmitl. ili je projektant zlonamerno izbacio program s greškom na internet. .ac.Za prostu primenu koja je bila zadata.Na demonstraciji se jasno vidi da se analizirani robot kreće po pravoj liniji u cik-cak. gde se analizirani predstavio mnogo bolje.Uprkos greškama koje u primetne u pogramu. pa samim tim i lakšeg programiranja. Sl.th/~kswichit/LFrobot/LFrobot. pa postoje dve mogućnosti – ili šema povezivanja sa slike nije tačna. robot ipak radi. i to bolje od konkurentnih. Na adresi http://www.6 – poligon 6 . .6. Možemo primetiti sledeće: . Za takmičenje je pripremljen poligon sa slike Sl. dokaz da while petlja sa početka programa nije ispunila zadatak.htm može se videti takmičenje između robota kog smo analizirali i sličnog projektovanog uz upotrebu Motorolinog mikrokontrolera 68HC11.