Line Follower Cerberus + Orthrus = SEGFAULT

Autori

Martinas Mihaela-Alexandra - 332CB
Mitra George Daniel - 333CB
Numele masinutei este atat de lung pentru ca nu puteam renunta la nici unul din ele.=)

Introducere

Line follower-ul este un robot care urmareste o anumita cale care poate fi fie o linie neagra pe o suprafata alba sau invers, important este ca contrasteze foarte mult cele doua culori.

 Orthrus 8->De ce line follower?
Este interesant sa vezi ca ai construit ceva piesa cu piesa si in final va functiona fara ca tu sa mai trebuiasca sa ii dai comenzi in mod constant. Poti considera ca ai create un AI(o inteligenta artificiala). In plus si munca in echipa este placuta daca ai partenerul potrivit. =)

Descriere generala

TBD

Hardware design

Partea hardware constă în trei plăcuțe:

  • plăcuța de PM, sau o plăcuță cu aceleași funcții, dar mult simplificată, fiindcă robotul conține și el destule lucruri;
  • driver pentru motoare;
  • placa principală a robotului.

Plăcuța echivalentă plăcuței de PM a fost proiectată de noi astfel încât să se potrivească layout-ului robotului și să evităm folosirea firelor pentru conectare. Aceasta conține microcontrollerul, cristal, pinii de programare ISP și conector USB B. Aceasta este schema:

Driverul pentru motoare conține un L298, opt diode 1N4007 pentru protecție, și 6 leduri pentru intrări: (ENABLE, IN, IN)*2.

Un circuit L298 are următorul mod de funcționare: pentru fiecare motor, dacă doar una din intrări e 1, merge în față, respectiv în spate; altfel, frânează activ, conectând ambele borne ale motorului la masă sau la alimentare. Schema driverului este următoarea:

Placa de bază a robotului are motoarele montate direct pe ea, are loc pentru senzori de linie ce pot fi puși în două locuri, selectând locul unde se află senzorul cu niște dipswitch-uri, comparator cu AO pentru senzori, un stabilizator de tensiune LM7805 pentru a alimenta plăcuța noastră direct la 5V, un senzor industrial Banner QS18VN6DB, un inversor 74HC04 și un stabilizator de tensiune custom-made [repetor pe emitor cu tranzistor Darlington TIP142]. De altfel, pe plăcuță mai sunt 4 potențiometre, un pushbutton și un dipswitch.

Comparatorul returnează 1 dacă inputul este mai mare decât o referință, 0 altfel. Referința se stabilește folosind un divizor de tensiune cu un potențiometru legat între VCC și GND.

Pentru intrările driverului, fiindcă atunci când merge trebuie să fie 0,1 sau 1,0, folosim un inversor.

Stabilizatorul cu tranzistor Darlington are următoarea schemă:

Toată placa arăta așa înainte de a-i da forma actuală. Traseele au rămas la fel:

Software design

  • Mediile de dezvoltare folosite au fost Programmers's Notepad si AVR Studio
  • Am folosi avrusbboot pentru a incarca programul pe placuta. Avand Windows pe 64biti am intampinat mici probleme, fiind necesara si o biblioteca suplimentara care a fost recunoscuta de laptop dupa multe incercari
  • Pentru a controla motoarele am folosit fast PWM cu prescaler 1024 , non-inverting mode
  • Am folosit un potentiometru[pus ca divizor de tensiune între VCC și GND] pentru a regla viteza maximă a motoarelor.
    • Valoarea citită este folosită ca viteză maximă, din care se scade în mod corespunzător ceva în functie de intrări.
    • Citind valorile pentru motoare de la potentiometru face ca robotelul sa fie mai usor de adaptat in functie de circuit, ne mai fiind nevoie sa facem modificari in cod.
  • Avem 8 senzori analogici, ale caror valori le citim după ce trec printr-un comparator, liniarizand valorile citite si realizand o medie a acestora folosind o formula pe care o puteti gasi in codul atasat.
  • In functie de media realizata si de ultima medie de la pasul anterior se stabileste directia de miscare a rotilor:
    • robotelul va vira stanga
    • robotelul va vira dreapta
    • robotelul va merge inainte
    • daca nu s-a citit nimic valid se va realiza miscarea in conformitate cu ultima valoare medie nenula de la pasii anteriori; astfel, dacă iese de pe traseu, robotul va ține minte pe unde a ieșit și va încerca să se redreseze.
  • Am fi vrut sa facem si PID astfel incat Cerberus+Orthrus sa devina un Lighting McQueen, dar am terminat proiectul destul de tarziu si nu am mai avut timp. Din acest motiv, avem doar partea de P, fapt ce face roboțelul să oscileze la viteze mai mari.


Rezultate obtinute

O masinuta suta la suta functionala de care suntem foarte mandri. Designul chiar daca nu este asa de maret pe cat speram la inceput, totusi are o forma aerodinamica (de Formula 1 am putea spune).


Si doua filmulete cu el:
Orthrus + Cerberus = SEGFAULT avand coada:External Link
Orthrus + Cerberus = SEGFAULT finisat External Link

Surse

Aici puteti gasi codul proiectului nostru: line_follower_orthrus-cerberus-segfault-final.zip

Concluzii

A fost foarte placut sa lucram la proiect, chiar daca l-am terminat cu o noapte inainte de predare. La inceput ne propusesem o alta interfata dar datoria lipsei de timp rezultatul este cel pe care il vedeti, dar noua ne place oricum Orthrus + Cerberus = SEGFAULT.

pm/prj2012/avoinescu/line_follower_segfault.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