Cosmin CLAPON - Obstacle Avoiding Robot

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scopul proiectului constă în implementarea unui robot ce poate evita obstacole.

Colectarea datelor se face printr-un senzor de distanță ce va fi rotit de către un servo pentru măsurarea distanței pe o arie mai mare. Folosind aceste date, robotul va fi ghidat conform unui algoritm astfel încât acesta să evite obstacole.

Descriere generală

Schemă bloc

Hardware

  • Senzorul de distanță va fi folosit pentru măsurarea distanței până la un obiect.
  • Servo-ul va fi folosit pentru rotirea senzorului de distanță astfel încât zona acoperită de senzor să fie mai mare.
  • Driver-ul va fi folosit pentru a acționa motoarele robotului.

Software

Algoritmul (în cazul cel mai slab) va conduce robotul random evitând obstacole, urmând să experimentez variante mai avansate după ce obțin platforma fizică complet funcțională și după ce verific calitatea măsurătorilor senzorului de distanță.

Hardware Design

Listă de piese

Schemă electrică

Software Design

  • Motoarele sunt controlate prin semnale PWM de 15kHz generate de timer0 pe cele doua canale (OC0A, OC0B).
  • Servo-ul este controlat tot printr-un semnal PWM cu perioada 20ms generat de timer1 pe canalul OC1B.
  • Datele de la senzorul de distanță sunt citite prin ADC (PA0).

Robotul este condus după următorul algoritm:

 1. dacă distanța citită de senzor < THRESHOLD
    2. oprește motoarele
    3. învârte servo-ul în 3 direcții diferite și citește distanța pentru fiecare
    4. selectează direcția cu distanța maximă
    5. dacă distanța maximă < THRESHOLD
       6. poziționează robotul într-o direcție random
    7. altfel
       8. poziționează robotul în direcția respectivă
 9. alftel
    10. conduce motoarele pe direcția înainte
 11. goto 1

Rezultate Obţinute

The Adobe Flash Plugin is needed to display this content.

Concluzii

A fost primul meu proiect hardware și mi s-a părut interesant. Am învățat să fac o schemă hardware pe care s-o și implementez căutând componentele necesare și lipindu-le pe placă, să programez un microcontroller și să rezolv eventualele probleme ce țin mai mult de hardware.

Download

Jurnal

  • Am întâmpinat niște probleme cu plăcuță de bază din cauză că nu aveam lipiți condensatorii de 100nF.
  • Driver-ul de motoare nu funcționa cum trebuie (scotea la ieșire curenți foarte mici) din cauza rezistențelor de current sensing prea mari. Am conectat ieșirile 1 și 15 direct la GND și acum funcționează.
  • Am testat toata partea de hardware și totul funcționează cum trebuie.
  • Am terminat și partea de software.
  • Proiectul este complet funcțional.

Bibliografie/Resurse

pm/prj2014/avoinescu/obstacle-avoiding-robot.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