Explore Rover

Introducere

Construirea unei masinute care pe baza unui senzor de distanta exploreaza o anumita zona.


Descriere generala

Dupa cum se poate vedea si din schema bloc, microcontroller-ul citeste valori de la senzorul de distanta si pe baza informatiilor primite de la acesta comanda driver-ul.

Hardware Design

Pentru realizarea proiectului am folosit un kit de masinuta [1] cu 4 motorase si un senzor Sharp de distanta [2].

  • Motoare de 6V
  • Driver L298N
  • Senzor distanta Sharp GP2Y0A21YK
  • Placa de baza cu ATMega16
Senzor

Am folosit pentru masurarea distantei un senzor Sharp GP2Y0A21YK. Acesta are un pin de Vcc, un pin de masa si un pin pe care scoate o tensiune care varieaza in functie de distanta masurata. Pentru a transforma acea tensiune in distanta i-am masurat valorile tensiunii de iesire pentru distante in intre 0-80cm, la intervale de 5cm. Semnalul scos de senzor este masurat pe pinul de ADC0 [3].


Driver & Motoare

Motoarele sunt controlate prin intermediul unui driver L298N. Avand in vedere ca virajele se vor realiza in mod asemanator cu cele ale unui tanc, motoarele le-am legat in paralel 2 cate 2. Fiecare canal de iesire al driver-ului are montate 4 diode 1N4007 pentru protectie, iar intrarea de Vs are o capacitate de 100nF legata la masa.

Atat driverul cat si placa de baza sunt alimentate de la un set de 6 baterii de 1.5V = 9V. Insa, motoarele nu primesc decat 6V (atat spune in specificatia lor), limitarea facandu-se prin PWM pe intrarile de Enable ale celor 2 canale ale driver-ului. Pentru a face asta am folosit cele 2 Timere pe 8 biti ale microcontroller-ului [4].

Circuitul imprimat pentru driver este urmatorul:


Software Design

Masinuta intainteaza in linie dreapta pana la intalnirea primului obstacol. In momentul in care a detectat un obstacol la o distanta <25cm, va incepe sa exploreze in stanga pentru a gasi o cale de ocolire, apoi in dreapta (daca n-a gasit liber in stanga) directiei originale.

Intre manevrele de schimbare de directie am introdus o pauza de 1 secunda pentru ca schimbarea directiei sa se efectueze dupa ce robotul s-a oprit din deplasarea sa.


Rezultate obtinute

  • Masinuta detecteaza fara probleme obstacolele, exceptie facand situatiile in care obstacolul “agata” robotul lateral unde senzorul nu are vizibilitate.
  • Sunt ceva probleme la viraje uneori. Un set baterii 6×1.5V nu asigura suficient curent pentru a asigura o buna functionare a motoarelor in viraje pe loc. In plus, masinuta nu e suficient de grea, astfel ca rotile aluneca uneori.

Concluzii

  • A fost o experienta interesanta si utila avand in vedere ca este primul proiect care a imbinat atat parti hardware cat si software.
  • Desi planuiam sa folosesc un algoritm mai elaborat, limitarile hardware nu mi-au permis asta.
  • Diferente destul de mari intre ceea ce face software-ul si hardware-ul, apar tot felul de erori pe care nu le pot controla fara adaugarea unor senzori in plus.
  • N-a fost o idee buna sa pun 2 motoare in paralel pe fiecare parte pentru ca motorul care se poate invarti cel mai usor tinde sa fie cel mai bine alimentat.
  • Pe viitor, intentionez sa adaug un modul Bluetooth si sa dezvolt o aplicatie de control a robotului pentru Android.

Download

Arhiva cu programul: 334cb_condurache_cristian.zip


Bibliografie/Resurse

pm/prj2012/abostan/8.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