Căruța - Line Follower

Autori

  • Dumitrache Rares-Mihai , 334 CB
  • Zamfir Mihai-Alexandru , 334 CB

Introducere

Un line follower al viitorului:) Un line follower este un robot autonom, capabil să se deplaseze pe un traseu predefinit. Traseul este de fapt o dungă colorată, așezată pe un fundal de culoare contrastantă. De obicei, se folosește traseul de culoare neagrș, iar fundalul de culoare albș (ca și în cazul nostru).

Robotul are forma unei mașinuțe cu două roți în față, conectate la două motoare, o bilă rotativă în spate, așezate pe un șasiu din plexiglass, care se ghidează după 8 senzori cu infraroșu, așezați pe o bară, în față.

Motivul pentru care am ales acest proiect este în primul rând pasiunea pentru Inteligența Artificială, robotul nostru fiind inteligent prin faptul că raspunde la stimuli (senzori), urmărind astfel traseul, fara a interacționa cu cineva.

Scopul proiectului este, în afară de realizarea cu succes a robotului propus, îmbunătățirea cunoștințelor de electronică, de proiectare și implementare a circuitelor electrice și integrarea lor în hardware, cât și dezvoltarea skill-ului de programare pe microcontrollere și sisteme embeded.

Descriere generală

Schema bloc a proiectului este:

Schema bloc a line follower-ului

Mod de funcționare:

⇒ Senzorii sunt asezati pe o placuta QTR-8A, ATmega16 face parte din placuta realizata la etapa 1 (proiect2012), puntea H L298N este pe o placuta descrisa mai jos (cu un condesantor si 8 diode).

⇒ Se observă împărțirea blocului tn 3 module:

  • Input date
    • Cei 8 senzori IR vor transmite semnale analogice în funcție de ce culoare “văd”: ~200mV (alb) ; 3V-3,5V (negru)
  • Prelucrare date
    • AtMega16 va prelua pe portul A semnalul de la senzori și având pragul logic pe la 1,5V-2V, va codifica automat semnalul la 0 sau 1. După aceea determină pe baza algoritmului, modul de comandă al motoarelor.
  • Output date
    • Microcontrollerul va trimite punții H duala - L298N - direcția și viteza (prin pwm) de rotire a motoarelor, aceasta trimițând semnale analogice celor două motoare.
    • Controlerul va mai trimite pe portul C registrul în care este salvată configurația curentă a senzorilor, pentru a fi afișată pe un bargraf de leduri, pentru debug și aspect vizual

⇒ Alimentarea placutei cu ATmega16 si a driverului se face de la 2 baterii de 9V, asezate pe cadrul robotului.

Hardware Design

Kit Robot

  • Sasiu din plexiglass
  • 2 motoare cu reductor → 1121
    • Tensiune motoare : 6 V
    • Viteza de rotatie in gol : 85 rotatii per minut
    • Curent in gol : 70 mA
    • Curent in sarcina maxima : 800 mA
    • Cuplu : 5.4 KG forta X cm
  • Bila rotativa pentru suport sasiu → 951
  • 2 Roti → 184
  • Distantiere metal
  • Suruburi

Piesele kitului de robot Kitul robot asamblat

Senzori

  • Aceasta placuta are 8 perechi de leduri infrarosii/fototranzistori montate la o distanta de aproximativ 9,5 mm .
  • Perechile de leduri sunt dispuse in serie pentru a reduce consumul, totodata pentru economisirea energie, MOSFET-ul permite oprirea ledurilor.
  • Fiecare senzor furnizeaza semnal de iesire analogic.
  • Bara senzori linie QTR-8A → 960

Bara de senzori QTR-8A - specificatii Bara de senzori QTR-8A

  • Specificatii Schema de proiectare a senzorilor IR
    • Dimensiuni: 2.95” x 0.5” x 0.125”
    • Tensiunea de operare: 3.3-5.0 V
    • Curentul – : 100 mA
    • Formatul output-ului: 8 tensiuni analogice
    • Tesiunea de iesire : 0 V pana la tensiunea de alimentare
    • Distanta optima: 0.125” (3 mm)
    • Distanta maxima recomandata: 0.25” (6 mm)
    • Greutate: 0.11 oz (3.09 g)

Driver motor

În primul rând, nu putem conecta un motor direct la microcontroller deoarece acesta nu poate asigura curentul necesar pentru funcționarea motorului. Prin urmare, controlul motoarelor este realizat folosind o punte H. Puntea H primește input de la microcontroller și generează output-ul corespunzător pentru motoare. Aceasta permite controlarea vitezei și a sensului de rotație a motoarelor.

  • Placuța cu driverul a fost corodată și conține:
    • 3 conectori cu șurub (cate unul pentru motoare si unul pentru alimentare)
    • 1 condesator de 1000uF, cu suport de până la 35V
    • 7 pini de intrare (1 Vcc + câte 3 pentru fiecare motor: PWM, Input1, Input2)
    • Punte H duală: L298N
      • Aceasta permite cuplarea celor două motoare datorită existentei a 2 canale de control. Un canal se activează prin pinii de enable (EN), pe care se da PWM-ul pentru a stabili viteza motoarelor (pwm=0 → turatie=0% ; pwm=255 → turatie=100%). L298 are 4 intrari si 4 iesiri . Pinii de input reprezinta output-ul de la microcontroller, iar pinii de output reprezinta input-urile pentru motoare. VSS va decide valorile high/low pentru tensiunea de intrare, iar VS este tensiunea la care dorim sa functioneze motoarele.

Punte H dual L298N Punte H dual L298 - descrierea pinilor

  • Schema circuit driver:

Schema circuit driver motoare

Alte componente

Pe lângă principalele componente descrise mai sus, care sunt absolut necesare pentru buna funcționare a robotului, acestuia i-au mai fost adăugate și alte elemente de design sau pentru debug.

  • Comutator basculant în 2 poziții pentru întreruperea alimentării motoarelor
  • 2 perechi de cate 2 leduri plate (cate o pereche pentru fiecare motor) pentru a semnaliza directia de deplasare a motoarelor (led galben înainte, led roșu înapoi)
  • Bargraf de leduri, conectat la microcontroller pe portul C, ce citește iesirea senzorilor

Software Design

  • Mediul de dezvoltare folosit a fost AVR Studio 5.1
  • Pentru a încărca programul pe plăcuță, am folosit WinAVR si avrusboot
  • Algoritmul folosit este relativ simplu și intuitiv. Am încercat prima data proiectarea unui algoritm PID, dar am ajuns la concluzia că motoarele sunt prea slabe, robotelul având o viteza prea mică pentru a folosi PID. Astfel am ales algoritmul banal care s-a dovedit a fi foarte eficient.
    • Se fac inițializările corespunzatoare la început: se seteaza Timerul 1 pentru PWM Phase Correct, cu un prescaler de 1024
    • Apoi într-o buclă infinită se citesc valorile senzorilor
    • Se scrie outputul pe bargraf
    • Se setează valoare pentru PWM (viteza motoarelor în OCR1AL și OCR1BL)
    • În funcție de valoarea citita de la senzori, se seteaza directia de înaintare a ambelor motoare sau a unuia singur, celălalt fiind în modul free-running și astfel mașinuța va lua curba.

Rezultate Obținute

În final am obținut un roboțel ce arată ca o “căruță”, la care sunt înhămați 8 senzori frumoși, ce conține 2 motoare, maxim 6 dacă se vrea construirea unei rachete.

TO DO poze robot + filmulet

Concluzii

Proiectul a fost foarte interesant, educativ și am lucrat cu foarte mare placere la el.

De programat, cred că este cel mai simplu proiect care se poate face la PM, iar dacă se cumpără kit-ul cu toate componentele, se lucrează maxim o zi la el și devine și partea hardware ușoară. Prețul este unul destul de ridicat, dar produsul final este unul drăguț și care poate fi adaptat și îmbunătățit pe viitor de pasionați.

Piesele le-am cumpărat pe toate de la RoboFun. Am avut prima dată o problemă cu puntea H pentru că era arsă, dar mi-a fost schimbată fără probleme. A doua problemă pe care am întâlnit-o din neatenție a fost neconectarea maselor celor două plăcuțe (cea cu ATmega16 și cea cu puntea H), având practic două circuite diferite și roboțelul nu mergea.

Pe viitor aș dori să-i pun și un senzor SHARP de evitare a obstacolelor si un modul bluetooth pentru control. De asemenea, daca voi pune niște motoare mai puternice, voi dezvolta un algoritm cu PID.

Download Cod Sursă

Codul sursă, împreună cu fișierul hex și schema driverului: raresdumitrache_mihaizamfir_334cb_linefollower.zip

Bibliografie / Resurse

Mulțumiri

Am dori să-i mulțumim zeului “dutemă” pentru ajutorul acordat!!! ♥

pm/prj2012/pbara/11.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