Autorul poate fi contactat la adresa: Login pentru adresa
Vreau sa construiesc un robot de tip line follower care, in plus poate sa ocoleasca obstacolele aflate in fata lui.
Proiectul a pornit de la ideea de a evita obstacole folosind senzori, si acesta este primul lucru pe care doresc sa-l implementez.
Am ales acest proiect deoarece mi-am dorit dintotdeauna sa construiesc un robot autonom. Mai mult, cred ca acest proiect ma va invata foarte multe despre lucrul cu microcontrollere, senzori si motorase.
Piesa | Qty | Link | Datasheet |
---|---|---|---|
Placa PM | 1 | ||
Driver motoare | 1 | http://www.robofun.ro/driver-TB6612FNG | http://www.pololu.com/file/0J86/TB6612FNG.pdf |
Kit Robot Magician | 1 | http://www.robofun.ro/kit-roboti/magician_2 | |
Bara senzori linie | 1 | http://www.robofun.ro/bara_senzori_linie_qtr_8a | http://www.pololu.com/file/0J117/QRE1113GR.pdf |
Senzor distanta IR | 1 | http://www.robofun.ro/senzor_sharp_%20GP2Y0A21YK | http://www.robofun.ro/docs/GP2Y0A21YK.pdf |
Cablu pt senzor distanta | 1 | http://www.robofun.ro/cabluri/cablu_senzor_3_fire_12_7_cm | |
Cutie 6 baterii AA | 1 | http://www.robofun.ro/surse_de_alimentare/baterii/cutie-6-baterii-cablu | |
Fire conexiune | 1×10 | http://www.robofun.ro/fire_conexiune_tata_mama |
Codul a fost dezvoltat folosind Programmer's Notepad si WinAvr (nota: aparent trebuie instalat in C:/WinAvr… pt ca altfel nu merge)
Cei 8 senzori sunt conectati astfel:
dreapta <-PB0-PB1-PB2-PB3-PC1-PC2-PC3-PC4-> stanga
Programul este destul de simplu:
initializez porturi pornesc motoarele do forever { daca am obstacol in fata { mergi la dreapta un timp t mergi la stanga pana cand cel mai din stanga senzor intoarce 1 } daca input 1 de la senzori in afara de cei 2 din centru, atunci scade factor umplere pt motorul respectiv (cu cat senzorul e mai in extrema, cu atat cotesc mai repede) }
De mentionat faptul ca, de-a lungul experimentelor mele, am descoperit ca incetinirea unui motor in curba da rezultate mai bune decat accelerarea celuilalt motor.
Dupa multa munca, am obtinut un line follower bun, chiar daca este putin inestetic (si vulnerabil la coliziuni!); partea de evitare de obstacole este, din nefericire, incompatibila cu un traseu asa cum am avut la laborator (insa functioneaza pt o linie dreapta).
Partea cea mai dificila a proiectului a fost partea mecanica, adica montarea tuturor pieselor pe 'sasiul' robotului. Am avut nevoie de piese auxiliare (a se citi table si bucati de plastic) pentru a completa montajul. Datorita felului in care a fost facuta placa, aceasta nu se poate fixa folosind suruburi (nu exista loc in toate cele 4 colturi pentru suruburi).
O mare greseala pe care am facut-o a fost ca am luat un soclu foarte nepotrivit pentru porturi (se poate vedea pe porturile A); drept urmare, nu am putut conecta cablurile intr-un mod civilizat, si am fost nevoit sa le lipesc direct de placa.
Senzorul de linie a fost cel mai ne-cooperant; desi pe pagina producatorului spune ca distanta optima de functionare este de 6mm, eu am observat ca de fapt distanta optima e undeva pe la 12, 13 mm (concluzia fiind: verificati in primul rand iesirile senzorilor si vedeti daca corespund cu asteptarile).
Arhiva cu sursa proiectului + Makefile