Introducere

In cazul in care aveti o masina dar nu sunteti un as in ale parcarilor laterale, de ce sa nu dati masina altcuiva de incredere sa o parcheze? Solutia pe care o propun eu pentru acel cineva este un sistem automat de comanda a masinii, care sa faca toata treaba in locul dummeavoastra.

Solutia propusa de mine urmareste gasirea unui spatiu suficient de mare pentru a realiza parcarea, si efectuarea automata a manevrelor, fara a cauza incidente neplacute pentru celelalte masini.

Sistemul va fi activat la cererea utilizatorului prin apasarea unui buton. Din acel moment, masina va rula inainte pana cand va gasi loc liber. In cazul unui sistem real, pe o masina VW sa zicem, din acest moment, utilizatorul va fi anuntat sa schimbe vitezele corespunzator directiei in care urmeaza sa se realizeze urmatoarea manevra. Sistemul meu, nedispunand de o cutie de viteze, va realiza toate manevrele automat, fara interventia utilizatorului.

Utilitatea unui astfel de sistem nu cred ca mai are nevoie de nicio prezentare speciala, prezenta sa pe orice automobil fiind un mare ajutor indiferent de calitatile soferilor.

Descriere generală

In realizarea proiectului, am pornit de la o masinuta radio comandata luata de la un hipermarket, la care am adaugat placuta realizata la prima etapa a proiectului si de asemenea componentele necesare detectiei obstacolelor cat si de control al motoarelor.

Dezavantajul masinilor cumparate de la astfel de magazine este ca nu sunt foarte manevrabile, in sensul ca nu poti vira foarte mult. Pentru implementarea unui line follower ar trebui luata in considerare varianta creari unui sasiu special, pentru ca o astfel de masinuta nu se va descurca deloc bine. Insa pentru realizarea manevrelor necesare unei parcari consider (am si experimentat) ca se descurca acceptabil.

Hardware Design

Mai jos voi enumera componentele hardware necesare realizarii proiectului:

Numele componentei Stadiu componenta
Masinuta Cumparata
Punte H (L293DNE) Cumparata
4 x Red LEDs Cumparat
4 x Rezistente 1K Gasite acasa
Senzor ultrasonic EZ1 Imprumutat (multumiri colegului :-))

Schemele de la prima etapa a proiectului nu le mai prezint, deoarece se gasesc pe pagina de wiki, atat documentatia cat si schemele propriu-zise.

In continuare voi prezenta ceea ce am adaugat eu din punct de vedere hardware si modul in care functioneaza aceste componete.

Puntea H, este integratul L293DNE. Acest circuit ajuta la comandarea celor doua motoare, prin utilizarea a patru biti de la microcontroller, si anume PC1, PC2 pentru motorul de miscare in fata/spate si respectivi pinii PC4, PC5 pentru controlarea motorului stanga/dreapta. Mai multe date despre acest integrat se pot gasi in datasheet.

Senzorul de distanta pe care l-am folosit (si care se gaseste foarte greu in Romania, iar daca se gaseste se livreaza intr-un timp foarte lung, motiv pentru care eu nu am reusit sa imi cumpar unul pana la data prezentarea proiectului), este Maxbotix EZ1. Acest senzor ultrasonic, poate detecta obiecte aflate la maximum 254 inch, 6.45 m, iar distanta poate fi receptionata fie prin interfata seriala a acestuia, fie folosind iesirea analogica si convertind prin intermediul convertorului ADC al ATMEGA16, valoarea distantei. Mai multe detalii despre acest integrat se gasesc in datasheet.

Cele patru LED-uri, le-am folosit pentru a notifica si vizual directia in care merge masina.

Schemele de la prima parte a proiectului se gasesc la adresa.

Avand in vedere cele mentionate mai sus, si lipsind de pe schema componentele de la prima etapa a proiectului, schema hardware implementata de mine este urmatoarea:

Software Design

Aplicatia mi s-a parut mai confortabil sa o scriu intr-un editor specializat, Programmer's Notepad si sa o compilez din Command Prompt pe Windows.

Programul realizat va trece prin urmatoarele etape:

  • initializeaza porturile pentru motorase, pentru leduri;
  • initializare ADC;
  • cat timp nu este apasat butonul de cautare loc de parcare, asteapta;
  • daca a fost apasat butonul atunci:
    • cauta loc liber;
    • parcheaza;

O schema sugestiva care reprezinta tocmai etapele de mai sus este:

In implementarea propriu-zisa a programului in limbajul C, am definit urmatoarele prototipuri de functii:

  * void initSystem(void);      // setare directie porturi, rezistente de pull-up...
  * void initADC(void);         // initializare convertor AD
  * unsigned int readADCDistance(unsigned char);    // citesc distanta convertita prin intermediul convertorului;
  * int goPark(void);           // functia in care verific daca a fost apasat butonul de start;
  * void findSpace(void);       // caut locul de parcare; 
  * void park(void);            // executa manevrele propriu zise de parcare;
  * void search(void);          // functie apelata de search() pentru a vedea daca exista loc disponibil de parcare
  * void lightUpLEDs(int, int); // aprind o combinatie de maximum doua leduri
  * void driveForward(void);    // merg in fata
  * void driveBackwards(void);  // merg in spate
  * void turnLeft(void);        // virez la stanga
  * void turnRight(void);       // virez la dreapta
  * void stopCar(void);         // opresc masina

Continutul acestor functii il voi furniza in arhiva din sectiunea de download de mai jos. Arhiva va contine atat sursele cat si un Makefile.

Rezultate Obţinute

Intr-o prima faza, neavand senzorul ultrasonic de distanta, am implementat manevrele de parcare laterala a masinii, rezultatul fiind cel dorit.

Dupa ce am reusit sa fac rost de senzor, avand deja codul scris, au fost necesare doar mici ajustari penrtu o functionare corecta a masinutei.

Rezultatele obtinute sunt multumitoare din punctul meu de vedere si consider ca obiectivul pe care mi l-am propus, l-am si indeplinit. :-)

Dupa prezentarea de la laborator voi incerca sa pun si un filmulet cu modul in care functionzeaza masinuta si poze cu ea.

Concluzii

In facultate facem foarta multa teorie si avem impresia ca in orice moment putem pune in aplicare ceea ce stim. Insa din experienta de la cursul de PM, am observat ca nu e deloc asa. Sa realizezi ceva practic este ceva destul de dificil, si necesita un efort destul de mare. Rezultatul insa, sa te joci cu ceva facut de tine, chiar te va incanta.

Download

Bibliografie/Resurse

Lista cu datasheet-urile componentelor folosite sunt urmatoarele:

ATMEGA16

Punte H L293DNE

Senzor ultrasonic de distanta Maxbotix EZ1

pm/prj2010/pgp/easypark.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