Autorii pot fi contactaţi la adresa
Proiectul nostru constă în realizarea unui robot line follower.
Acesta presupune realizarea unei mașinuțe care va urmări o
linie neagră pe fundal negru.
Piese | Număr | Preț | Sursa |
---|---|---|---|
Kit Robot (motoare, roți, platformă șasiu) | 1 | 115 RON | http://www.robofun.ro/kit-roboti/magician_2 |
Driver Motoare L298 | 1 | 78 RON | http://www.robofun.ro/shields/shield-motoare-l298-v2 |
Bară senzori QTR-8A | 1 | 48 RON | http://www.robofun.ro/bara_senzori_linie_qtr_8a?keyword=qtr&category_id=0 |
Cutie baterii | 2 | 10 RON | Robofun |
Plăcuța PM2014 | 1 | 50 RON | PM lab |
Noi am ales să cumpărăm circuitul cu driver-ul de motor gata făcut, la fel și plăcuța cu senzori. De asemenea am cumpărat și un kit pentru asamblarea robotului. Pentru a conecta plăcuța la direver-ul de motoare am folosit portul D astfel PD0-PD3 se conectează pe driver la INPUT1-INPUT4 (în cazul shield-ului aceștia sunt notați M1A, M1B, M2A, M2B). Pentru logica de alimentare am folosit VCC și GND de pe același port.
Bara de senzori se conectează la plăcuța de bază pe portul A (PA0-PA7 se conectează la pinii 1-8 de pe plăcuța de senzori). VCC și GND de pe această bară de senzori i-am conectat la VCC și GND de pe port C. Conexiunile plăcuță - driver L298 le-am realizat cu ajutorul conectorilor mamă tată, iar plăcuță - bară de senzori cu ajutorul conectorilor mamă-mamă.
Pentru alimentarea plăcuței am folosit 2 cutii de baterii de câte 4 x 1.5 V. Cele două cutii le-am legat în serie și am conectat masa și VIN la alimentarea plăcuței. Deoarece cele două cutii de baterii dau împreună 12V am folosit un regulator de tensiune de 5V. Motoarele le alimentăm tot de pe plăcuță cu 12V.
Mediul de programare folosit: WinAVR.
Codul este organizat astfel:
void init_adc(){ // inițializare ADC }
int read_adc_bw(int chn){ // citește date de pe un canal/pin analogic }
void init_timer() { // inițiere timer }
În programul main se citesc valorile de pe pinii analogici și în funcție de aceste valori se ia o decizie cum să se seteze factorul de umplere la cele două motoare.
În momentul de față robotul nu este 100% funcțional deoarece din cauza unui scurtcircuit plăcuța se încălzește prea repede. Am testat și cele două motoare funcționează. De asemenea am testat și bara de senzori și am observat că în funcție de linia citită viteza cu care merg motoarele variază.
A fost foarte challening. Am avut foarte multe de învățat din urma acestei experiențe. Ne bucurăm că am reușit să realizăm o mare parte din ce ne-am propus și sperăm să ducem la bun sfârșit proiectul chiar și după prezentarea proiectului.
Primul pas a fost realizarea plăcuței de bază. După ce am avut gata plăcuța de baza am făcut o listă cu componentele care ne mai lipseau. Nu am reușit să facem o listă completă așa că nu am scăpat să facem un drum pe Maica Domnului. Cea mai mare parte de piese am luat-o de pe Robofun. Lucrul propriu-zis la proiect a început cu asamblarea kitului.
După am trecut la lucruri mai serioase. Am început să conectăm plăcuțele între ele. Și partea cea mai interesantă abia începe. Am întâmpinat următoarele probleme:
- doar unul din motoare era enabled din hardware, celălalt era disabled; Soluție: am conectat un fir între pinii 1 și 15 ai driver-ului L298
- rezolvând problema cu cel de-al doilea motor am vrut să și testăm că într-adevăr merge și am dat să programăm plăcuța; surpriză: nu o recunoștea pe USB; Problemă posibilă: bootloader suprascris; soluție: am mers la laborator să îi punem din nou bootloader
- rezultat: microcontroller prăjit ; Don't worry, mai avem unul
- al doilea microcontroller prăjit (same day ); plăcuța făcea scurt și din cauza aceasta am “prăjit” microcontroller-ele cu două zile înainte de prezentare
- facem rost de un al treilea microcontroller și schimbăm plăcuța (There is still hope ); same problem cu al doilea motor
- verificăm din nou conexiunile, programăm plăcuța să testăm motoarele și … Merge
- cool; am pus și codul pentru line follower;
- mergem să testăm și observăm că plăcuța se încălzea prea tare