Masinuta conceputa de mine se afla langa o parcare cu mai multe masini parcate lateral. Scopul ei este sa mearga langa celelalte masini(ostacole), sa gaseasca un loc destul de lung si sa parcheze lateral in acel loc.
Schema bloc hardware
Robotul foloseste senzorul lateral pentru a determina distanta de la el pana la cel mai apropiat obiect din dreapta. Daca aceasta distanta este mai mare decat latimea masinii atunci locul din dreapta e considerat un potential loc de parcare. Cu foto interpretorul de pe roata masoara lungimea locului de parcare. Daca locul este destul de lung atunci masina efectueaza o parcare laterala intrand cu spatele in locul de parcare. Senzorul din spate este pentru siguranta. In caz ca masina a facut o miscare eronata el o opreste sa nu intre intr-un obstacol.
Masinuta foloseste pentru masurarea distantei parcurse un fotointerpretor care are intre dioda si tranzistor un disc cu fante. De fiecare data cand o fanta ajunge in drept cu interpretorul, tranzistorul se deschide si la iesire apare o tensiune de 0 volti. Am legat iesirea la intreruperea 2 a microcontrolerului. Intreruperea numara cate rotatii a rotii s-au efectuat.
Schema electrica fotointerpretor:
Schema placa:
Pentru controlul motoarelor am folosit driverul integrat L298N. Intrarea ENABLE_A a driverului e conectata pe iesirea 2 de PWM ale microncotroller-ului (Timer2). Astfel se poate seta din program turatia motorului din spate. Pentru motorul din fata se pune ENABLE_B pe 1 mereu.
Iesirile senzorilor de distanta intra in porturile de ADC.
Ideia de baza este destul de simpla. La inceput masina tine rotile drepte si merge incet inainte. In momentul in care vede un loc liber in dreapta incepe sa contorizeze lungimea lui. Cand detecteaza sfarsitul locului de parcare verifica ce lungime are locul. Daca este destul de lung ca sa poata intra masina dintr-o miscare in spate trece in urmatoarea faza si opreste motorul. Daca dupa detectia locului de parcare a mai parcurs o distanta oarecare dupa ce a oprit motorul, merge inapoi acea distanta.
Dupa aceasta intoarce la dreapta rotile din fata. Jumatate din lungimea locului de parcare o parcurge astfel. Dupa aceasta intoarce rotile in stanga si mai merge in spate restul locului de parcare.
Distanta parcursa o masoara in intreruperea externa 2. Aceasta e apelata cand are loc o semirotatie a rotii din spate. Timerul 2 se ocupa de detectia locului de parcare. Senzorul din spate este pentru a fi sigur ca masina nu intra in masina din spate.
Masina a intampinat o problema de hardware la prezentare. S-a intamplat ceva cu driverul si nu mai intorceau rotile din fata la stanga in ultimul stadiu de parcare. De aceea masina nu se aseaza dreapta in locul de parcare. Urmeaza sa schimb driverul. In rest celelalte parti merg bine. Gaseste mereu locul de parcare, se aseaza langa locul de parcare. Merge bine cat timp trebuie tinute rotile rotite la dreapta.
Am intamplinat multe probleme la partea hardware, motorul din fata mai ales. Acesta se blocheaza cand intorc rotile din fata si de aceea consuma mult curent. De asemenea are nevoie de mult curent la pornire. Un curent mic nu ii da destula putere sa intoarca pana la urma rotile. Partea de soft e de incredere. Am testat-o mult. Driverul de motor face probleme. Urmeaza sa schimb driverul si sa uploadez un video cu masina in actiune :).