Introducere

Proiectul ales de noi este cunoscut in domeniul roboticii sub numele de Line-Follower Robot. In princpiu, acesta are un singur task de realizat si anume sa se deplaseze urmarind un traseu predefinit. Traseul poate fi reprezentat ca o linie colorata in contrast fata de fundal (in cazul nostru, o linie neagra pe fundal alb).

De ce am ales acest proiect? Motivul principal il constituie interesul fata de domeniul Inteligentei Artificiale, care are un rol important in progresul tehnologic al oamenilor. IA se ocupa cu studierea modului in care se poate simula inteligenta umana pentru extinderea capabilitatilor functionale ale masinilor si pentru a facilita interactiunea om-masina. Robotelul nostru este inteligent prin faptul ca poate raspunde la stimuli – prin utilizarea unor senzori, acesta va putea urmari cu exactitate traseul.

Care este scopul acestui proiect? In urma realizarii proiectului ales, ne vom familiariza atat cu proiectarea de scheme electrice si implementarea lor in hardware, cat si cu programarea software folosind un microcontroller si aplicatii specializate.

Descriere generală

In continuare vom prezenta schema bloc a proiectului:

Mod de functionare

Pentru a ghida masina dupa traseu, vom folosi 5 senzori pe care ii plasam in fata. Sistemul de senzori va transmite semnale analogice catre un comparator. Acesta transforma informatia primita in valori binare pe care le transmite mai departe microcontroller-ului. Utilizand datele de la senzori acesta va determina actionarea motoarelor in mod corespunzator.

Hardware Design

Mai intai, vom preciza ca am pornit cu o masinuta din comert. De la ea, am folosit sasiul, rotile si motoarele. Este vorba despre un motor pentru tractiune si un motor pentru controlarea directiei. Am folosit, de asemenea, placuta cu microcontroller, realizata la laborator.

Microcontroller

p8.jpg

Senzori

sch2.jpg

Folosim 5 senzori si luam in calcul faptul ca linia neagra care reprezinta traseul pentru masina are o grosime de 2 cm. Un senzor consta intr-o fotodioda (receptorul) si un led IR (transmitatorul).

Cum functioneaza? Led-ul emite lumina IR. Daca sub led, suprafata este alba, atunci lumina este reflectata si captata de fotodioda. Daca suprafata este neagra, atunci razele emise nu vor mai fi reflectate.

Fotodioda are o proprietate speciale si anume, aceea ca sub influenta luminii, rezistenta ei electrica scade. Pentru a sesiza schimbarile de rezistenta, se foloseste un divizor de tensiune sau setam o tensiune de referinta folosind un potentiometru.

p5.jpg

UPDATE: Din cauza unor probleme cu fotodiodele, am fost nevoiti sa schimbam fotodiodele si ledurile de mai sus cu senzori intregi.

Am folosit modelul QRD1114: qrd.jpg

Schema:

p9.jpg

Asa arata acum placuta cu senzori:

Motoare

In primul rand, nu putem conecta un motor direct la microcontroller deoarce acesta din urma nu poate asigura curentul necesar pentru functionarea motorului. Prin urmare, controlul motoarelor este realizat folosind o punte H si anume L293NE. Puntea H primeste input de la microcontroller si genereaza output-ul corespunzator pentru motoare. Aceasta permite controlarea vitezei si a sensului de rotatie a motoarelor.

L293NE

Acesta permite cuplarea celor doua motoare datorita existentei a 2 canale (pinii 1-8, respectiv 9-16). Un canal se activeaza prin pinii de enable (EN). Pe primul canal se conecteaza motorul de tractiune, iar pe al doilea cel pentru directie. L293 are 4 intrari (1..4 A) si 4 iesiri (1..4 Y). Pinii de input reprezinta output-ul de la microcontroller, iar pinii de output reprezinta input-urile pentru motoare. Vcc1 va decide valorile high/low pentru tensiunea de intrare, iar Vcc2 este tensiunea la care dorim sa functioneze motoarele.

Schema:

Facem o observatie in legatura cu pinii de iesire: pinii 3 si 14 reprezinta terminalul negativ, iar pinii 6 si 10, cel pozitiv.

Alimentare placuta

Pentru a alimenta placuta cu microcontroller, am realizat un regulator de tensiune la 5V. Output-ul lui se duce catre pinii 10 (Vcc) si 11 (GND) ai microcontroller-ului.

In final, proiectul arata asa:

Software Design

Am folosit WinAvr si avrusbboot pentru a incarca programul pe placuta.

Algoritmul folosit este urmatorul:

  1. daca senzorul C pe linia neagra atunci mergi_inainte
  2. daca senzorul L1 pe linia neagra sau (L1 + C1) pe linia neagra atunci vireaza_stanga
  3. daca senzorul R1 pe linia neagra sau (R1 + C1) pe linia neagra atunci vireaza_dreapta
  4. daca senzorul L2 pe linia neagra atunci vireaza_dreapta si mergi_inapoi
  5. daca senzorul R2 pe linia neagra atunci vireaza_stanga si mergi_inapoi
  6. daca nu este nici un senzor pe linia neagra atunci stop

Rezultate Obţinute

Am reusit sa obtinem un robotel care merge inainte si inapoi, dar care nu ia curbele bine deoarece are viteza prea mare. Tot din cauza vitezei prea mari, masina opreste cu intarziere. O alta problema aparuta este aceea ca nu poate sa ia viraje sub un unghi mic din considerente mecanice.

Concluzii

In aceasta sectie am dori sa facem cateva observatii ce speram ca vor fi de folos studentilor care vor aborda acest proiect. In primul rand, folosirea unei masinute din comert nu este cea mai buna solutie. Ar fi fost indicat sa cumparam toate piesele separat si sa le asamblam noi. In al doilea rand, recomandam sa folositi senzori si nu fotodioda + led ir separat. Ar mai fi si problema cablurilor care nu numai ca arata rau, dar si incurca - in acest sens recomandam pcb-ul. Nu in ultimul rand, aveti grija sa alimentati separat motoarele, pentru a avea suficienta putere ca sa se efectueze virajele si nu uitati sa limitati viteza in curbe folosind pwm.

In concluzie, proiectul a fost interesant, educativ si ne-a facut placere sa lucram la el.

Download

Acesta este codul folosit pentru programarea placutei: cod_pm.zip

Bibliografie/Resurse

Datasheet ATMEGA16

Datasheet L293

Datasheet LM324

Datasheet QRD1114

Line-Follower-Robot

Follower.pdf

pm/prj2010/rtataroiu/lfr.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