LineFollower

Introducere

  • Robotelul urmareste un traseu oarecare reprezentat de o linie neagra pe fond alb.
  • Am ales acest proiect deoarece mi s-a parut unul dintre cele interesante din punctul de vedere al rezultatului.

Descriere generală

Este construit din mai multe module:

  • Placuta de baza cu microcontrolerul
  • 8 senzori IR
  • Un driver (L298) ce comanda 2 motoare (cate unul pentru fiecare roata)

Schema bloc:

Mod de functionare:

  • Fiind vorba de 8 senzori, acestia sunt impartiti 4 (L) - 4 (R). Daca numarul celor care vad linia neagra din partea stanga este egal cu al celor din dreapta, ambele roti vor fi comandate sa mearga in fata. In cazul in care diferenta este diferita de 0, o roata va merge in spate, iar alta in fata, determinand robotul sa vireze.
  • Pentru alimentare am folosit o baterie de 9V ce alimenteaza placuta prin stabilizatorul de tensiune; driverul primeste VSS de la unul din pinii de VCC ai placutei si VS (power supply) de la 4 baterii de 1.5V (motivul pentru care nu am alimentat de la aceeasi baterie si driverul si placuta a fost acela ca motoarele s-ar fi ars la o tensiune de 9V)

Hardware Design

Lista de piese:

Schema electrica:

  • Pinii 6 si 11 (EN A, EN B) se leaga la pinii PD4 si PD5 de pe microcontroler (OC1A si OC1B) pentru a putea fi controlati prin PWM (vezi schema de mai jos)
  • Tensiunea VSS a driverului este adusa de la placuta de baza (5V) (pinul 9 din schema)
  • Tensiunea VS (power supply pentru motoare) este _neaparat_ adusa dintr-o sursa externa
  • Deasemenea trebuie avut grija ca masa pentru driver sa fie aceeasi ca masa pentru placuta de baza
  • Pinii de input de pe driver sunt legati la PORT C de pe microcontroler
  • Pinul 8 al driverului lipseste din schema (este GND)

Senzorii:

  • Avantajul acestor senzori este ca au iesire digitala, astfel nu este nevoie de folosirea convertorului ADC
  • Sunt legati la PORT A pe microcontroler

Software Design

  • Mediul de dezvoltare folosit este AVR Studio
  • Algoritmul folosit este relativ simplu si intuitiv: intr-o bucla infinita, in functie de outputul senzorilor sunt comandate cele doua motoare prin intermediul driverului; pentru detalii de implementare vezi sursele atasate in arhiva

Rezultate Obţinute

  • Poze

De la ce am inceput

Si unde am ajuns

  • Filme

watch

( Observatie: in film alimentarea este facuta de la priza cu un adaptor pe 16V, deoarece nu am avut baterie de 9V ;-) )

Concluzii

  • M-am apucat destul de (foarte) tarziu de acest proiect, motiv pentru care am apelat la componente mai scumpe (vezi senzorii…exista si varianta mai ieftina, aceea de a-i construi)
  • Chiar daca a fost un proiect mai greu si se putea lucra in doi la el, am ales sa il fac singur pentru a nu exista cearta de dupa “cui ramane”
  • Pentru cei ce se tin de treaba, nu ar trebui sa dureze mai mult de 3-4 zile de lucrat (lipit, testat, codat), insa trebuie acordat putin timp si pentru documentare (datasheet, tutoriale, proiecte facute de altii)
  • Pentru alte intrebari, detalii : horatiu.popescu@cti.pub.ro

Download

  • Arhiva cu codul c si makefile-ul corespunzator: lf_code.zip

Bibliografie/Resurse

pm/prj2010/dtudose/line_fol.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