Line-follower robot

Greceanu Dan / Mocioi Alexandru, 333CC

Proiectul nostru consta intr-o masinuta alimentata cu baterii,care urmareste un traseu colorat pe un fundal alb.
Ideea acestui proiect nu este una care ne apartine,deoarece conceputul de line-follower este foarte popular.Amprenta noastra a fost pusa pe solutiile hardware si software utilizate in concretizarea acestei idei.
De ce am ales aceasta tema? Foarte simplu.Exista trei motive:
In primul rand ar fi provocarea de a avea o masinuta facuta de la 0,care nu sta degeaba si pe care nu am avut-o in copilarie.
Apoi ar fi faptul ca este un proiect incercat de multa lume in facultate si astfel exista si o competie organizata la care putem participa.
Nu in ultimul rand, sa dovedeste foarte util deoarece nu va ramane asezat in vitrina pentru ca poate fi imbunatatit foarte usor si astfel ne poate ajuta sa exploram mai mult acest domeniu.

Descriere generala


Placa cu microcontroller AT-Mega16*



A fost realizata in prima etapa a proiectului


Schema bloc a proiectului




Placuta de baza este cea realizata in etapa 1 a proiectului. Pentru celelalte 2 module hardware, a fost nevoie de inca 2 placute, una cu circuitul pentru senzorii folositi iar una pentru diverul de motor.
Modulele software sunt mapate exact pe aceasta schema hardware, existand astfel un modul care primeste datele de la senzori si le interpreteaza corespunzator : pozitionare pe alb/negru , si unul care trimite date la puntea H pentru a controla turatia celor 2 motoare. Softul este facut in asa fel incat masina merge continuu pe traseul colorat determinat , oprirea putandu-se face de la comutatorul montat la iesirea din bateriile folosite pentru alimentare.

Hardware Design


Am pornit de la un sasiu cu senile si 2 motoare ce actioneaza rotile din spate, achizitionat de pe site-ul www.shop.turuga.ro , reprezentand robotelul.
* Controlul lui este asigurat de microcontrollerul Atmega16 de la Atmel , care se afla incorporat pe placuta de baza realizata la etapa 1.

* Montajul cu senzori de tipul optocuploare cu reflexie este realizat in asa fel incat sa putem obtine o diferenta de tensiune corespunzatoare intre cele 2 culori alb sau negru detectate. Montajul pentru senzori este urmatorul:

In urma testelor facute s-a constat ca se obtin tensiuni intre 0.4 si 1.4 volti pentru alb si peste 3.5 pentru negru. Datorita faptului ca microcontrolleru-ul contine porti ttl, nu a fost o problema in delimitarea celor 2 stari logice '1' si '0'.
* Pentru controlul motoarelor am folosit diverul de tip punte H, L293D, , capabil sa actioneze ambele motoare. Montajul a fost realiza in felul urmator :}
Astfel se pot observa 4 pini de input A1-4 si 4 pini de output Y1-4; driver-ul trebuie alimentat atat la vcc1 cat si la vcc2 cu 5V.
Pentru testele realizate am folosit urmatorul tabel de valori binare, care sugereaza pozitia switch-urilor puntii H:
1Y 2Y 3Y 4Y Actiune
1 0 1 0 Miscare inainte
1 0 0 0 Miscare dreapta (roata din dreapta este oprita)
0 0 1 0 Miscare stnga (roata din stanga este oprita)
0 0 0 0 Stop


Software Design


Implementarea software a aplicatiei am relizat-o folosing limbajul de programare C si compilatorul , avr-gcc . Programul , scris in microcontroler, va lua decizii in functie de datele primite de la senzori , si va incerca mentinerea masinutei de-a lungul liniei .
Diagrama de stari a aplicatiei implementate este urmatoarea:

Algoritmul folosit este foarte simplu. Pe baza datelor primite de la senzori ia decizia de a urma o anumita directie. Pentru a primi informatiile de la senzori , am folosit portul A de la microcontroller , pe care l-am setat pentru intrare (DDRA=0x00) , iar pentru a controla motoarele am folosit portul B de la microcontroller , pe care l-am setat ca iesire ( DDRB=0xFF) . Functionarea motoarelor , in sensul dorit , o setam folosind operatii de & si | pe biti (setam bitii corespunzatori pe 0 , respectiv 1).

Rezultate Obţinute

In final am obtinut o masina functionala ce urmareste o linie neagra. Puteti urmari o demonstratie la adresa: watch




Concluzii


La finalul acestui proiect , moment in care masinuta este functionala, putem sa notam aspectele importante si problemele intampinate de-a lungul realizarii acestuia.
In ceea ce priveste placuta de baza, este necesara folosirea unui condensator de capacitate mare, la alimentarea ei de la baterii, deoarece in lipsa acestuia,in testele facute de noi de a tura un motor intr-un sens si celalalt in sensul opus,pentru o franare eficienta in curbe, am observat ca se reseteaza programul pe microcontroller.
In cazul placutei cu driverul de motoare, lucrurile sunt destul de clare si probleme nu pot aparea daca se foloseste schema recomandata de noi impreuna cu acele condensatoare ce au rolul de a atenua zgomotul.
Cel mai mult ne-a dat de furca placuta senzorilor.Un prim aspect important este folosirea unor rezistente mai mici pe dioda, pentru ca cele de 330 ohm pe care le-am folosit initial fac senzorii sa fie foarte sensibili la cea mai mica modificare a traseului; de exemplu, daca hartia e putin umflata,se apropie de un senzor si acesta nu mai intoarce sub 2 volti ci 2,1 si astfel microcontrollerul identifica traseul negru desi acesta este alb. De asemenea, cum se poate observa si in poze, am folosit un sistem, un surub si 2 piulite, care ne permite sa reglam poziti senzorilor in orice moment, in functie de traseu, deoarece este extrem de importanta pentru functionarea softului nostru.
Cum am reusit sa eliminam toate problemele de pe partea de electronica, si cum softul nu a fost greu de scris, acum suntem motivati sa continuam acest proiect si sa-l imbunatatim in masura in care timpul si costurile ne-o permit.

Download


In arhiva se gaseste sursa, Makefile si cele doua scheme pentru placuta cu senzori si cea cu puntea H. Schemele au fost realizate in Eagle.
gm_2010.zip

Bibliografie/Resurse

pm/prj2010/avoinescu/line-follower.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0