Collision detect

Introducere

Scopul proiectului meu este realizarea unui robot care sa se plimbe autonom si sa poate ocolii obstacolele. Pentru asta robotul trebuie sa fie dotat cu senzori si cu cat sunt mai multi cu atat va fii mai precis.

Descriere Generala

Descriere

Pentru realizarea acestui avem nevoie de o interfata pentru controlul motoarelor, de un modul pentru detectarea obstacolelor si de un modul de decizie. Proiectul este realizat pe un schelet de robot (tanc) pe care am pus 2 motoare, cate unul pentru controlul fiecarei senile. Modulul de detectarea a obstacolelor este realizat de un senzor de distanta(SHARP GP2D120XJ00F), iar decizia este luata de un microcontroler Atmega16. Pentru alimentare folosesc 8 baterii de 1.5 V. Cu 4 baterii alimentez placa de baza cu microcontrolerul, iar cu restul de 4 alimentez motoarele ce sunt controlate de o punte H.

Schema Bloc

Kitul de robot impreuna cu motorul pe care l-am folosit.

Hardware Design

Desenul schemei si simularile le-am realizat in Proteus.

Deoarece nu am gasit senzor de distanta in Proteus am folosit o rezistenta variabila pentru a simula detectarea obstacolelor si a realiza in linii mari programul pe care l-am incarcat in microcontroler.

Lista de Piese

Microcontroler Atmega16

Punte H L298N

LED

2* Rezistenta 0.47 ohmi

1* Rezistena 330K

8* Dioda 1N4148

Senzor Distanta SHARP GP2D120XJ00F

Dezvoltare

Proiectul a fost realizat in jurul placutei construita la laborator langa care am adaugat alta placuta ce contine controlul motoarelor(puntea H, cele 8 diode,rezisentele). Puntea H a fost alimentata de la baterie pe pinul de Vs, respecitv de la microcontroler pe pinul de Vss. La placuta ce contine puntea H am conectat si un LED care se aprinde cand senzorul va detecta un obstacol.

Software Design

Mediul de dezvoltare: AVR Studio,WinAvr

Algoritmul se bazeaza pe citirea unui senzor din 200ms in 200 ms si daca acesta detecteaza ceva va seta pe “1” pinul unde este legat becul pentru a-l aprinde si se foloseste un algoritm pentru ocolire a obstacolului. Initial se vireaza la stanga,iar daca nu se poate trece de acest obstacol, robotul va merge inapoi si isi va schimba si directia de virare la intalnirea urmatorului obstacol. Sunt definite functii pentru modul de mers al robotului(inainte,inapoi,stanga,dreapta). Controlul motorului este realizat de catre puntea H conform specificatiilor din Datasheet. Pentru a vira la stanga sau la dreapta una din senile va merge in fata si cealalta in spate.

Pseudocod:

while(1) {

  1. citeste senzor
  2. verifica daca este obstacol
  3. aplica algoritmul de ocolire daca s-a detectat un obstacol
  4. daca nu s-a detectat niciun obstacol merge in fata

}

Senzorul se monteaza pe portul de ADC al microcontroler-ului, iar codul pentru citirea portului A a fost luata din laborator.

Tabel cu logica pentru controlul motoarelor.

Pentu mai multe detalii cititi codul sursa.

cod.zip

Rezultate Obtinute

Concluzii

Implementarea acestui proiect a fost foarte incitanta. Dupa cateva drumuri facute pana la magazinul de componente si destul de mult debug, in final am reusit sa realizez ce mi-am propus. Pentru ca am avut doar un singur senzor care nici nu detecta la distante foarte mari, robotul mai avea uneori anumite probleme de detectie.

Proiectul trebuie inceput din timp deoarece duraza destul de mult partea de debug, comandarea pieselor, drumurile facute la magazinul de componente. Eu am comandat piesele de la robofun si am asteptat mai mult de o saptamana pentru a venii motorul. Restul de componente le-am gasit in stoc.

Download

Bibliografie/ Resurse

Resurse Hardware

Resurse Software

pm/prj2011/dloghin/collision_detect.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