Ioana ŞTEFAN (78404) - Line Follower

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul consta in contruirea unui robot care se deplaseaza in directia data de o linie continua (mai exact o linie neagra pe un fundal alb). Construirea robotului implica:

  • folosirea senzorilor pentru detectarea pozitiei relative la linia pe care trebuie sa o urmareasca
  • deplasarea robotului prin intermediul motoarelor, in directia corespunzatoare

Am ales acest proiect pentru ca il gasesc a fi foarte interesant si pentru ca este o provocare pentru mine. Lucrand la acest proiect imi doresc sa invat cat mai multe si sa am un punct de start in acest domeniu.

Descriere generală

Senzorii transmit microcontroller-ului ATMEGA datele stranse prin scanarea suprafetei deasupra careia se afla (acumularea informatiilor are loc periodic). Microcontroller-ul decide directia de deplasare pe baza datelor primite, transmitand valori diferite pentru deplasarea fiecarui motor. Fiecare motor primeste input de la microcontroller, in felul acesta stiind cu ce putere sa functioneze si regland directia de deplasare a masinii.

Hardware Design

Componente Cantitate
Placa de proiect PM 1
Masinuta 1
Motor cu perii 2
Senzor infrarosu 3
Punte H dubla / Driver de motoare dual 1
Cablu AM la BM 1
Baterie prin USB 1

Schema electrica

Software Design

Datele de intrare sunt primite de la senzori. Citirea datelor se face prin ADC pe porturile PA0-2 ale microcontroller-ului ATMEGA.

Datele de iesire sunt trimise la cele doua motoare. Transmiterea se face pe porturile PD0-1 si PD4-5. Pentru a regla viteza motoarelor in functie de moment, de folosesc porturile PD4 si PD5, al caror output este controlat de registrii OCR1A si OCR1B (PD4 - OC1B si PD5 - OC1A). Pentru ca cele doua motoare aveau nevoie de doua semnale de input, am trimis cate un semnal de 1 pe celelalte doua legaturi ramase (pe proturile PD0 si PD1).

Pentru ca am trei senzori, i-am folosit pe primul si pe ultimul pentru a identifica pozitia masinii in functie de linie: daca senzorul din stanga primeste o valoare mai mare decat senzorul din dreapta fata de un anumit prag testat, inseamna ca masina se afla prea in dreapta liniei si reglez motoarele (motorul din dreapta se va misca mai repede pentru a repozitiona corect masina); in cazul opus, inseamna ca masina se afla prea in stanga liniei si se regleaza motoarele (motorul din stanga se va misca mai repede pentru repozitionare). In cazul in care nu sunt detectate niciuna din aceste diferente nu exista motiv de repozitionare si se va transmite masinii o viteza egala pentru motoare.

Am folosit urmatoarele: gcc-avr binutils-avr avr-libc.

Rezultate Obţinute

Un robot functional, care urmareste o linie neagra (dreapta si cu usoare curbe). Precizia si acuratetea rezultatelor nu etse intotdeauna cea dorita pentru ca au fost folositi cate un singur senzor pentru directii (fiecare foarte puternic afectat de lumina la un moment dat).

Robotul poate fi observat in urmatoarele imagini:

Poate fi urmarita functionarea aici: https://www.youtube.com/watch?v=Nfhxidawru4

Concluzii

A fost un proiect pentru care a meritat toata munca, un proiect care m-a invatat mai bine diferenta intre teorie si practica si care sunt greutatile care pot sa apara pe parcurs la dezvoltarea unui proiect.

A fost primul proiect pe care l-am construit de la zero (atat pareta hardware cat si partea software), iar pentru aceasta este unul dintre cele mai interesante proiecte la care am lucrat.

Download

Arhiva cu sursa si MAkefile-ul poate fi descracata de aici: Cod proiect

Bibliografie/Resurse

  • Laboratoarele de PM
  • Datasheet ATmega324
  • Proiectele asemanatoate din anii anteriori
  • Documentația în format PDF
pm/prj2018/astratulat/ioana_stefan_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