Line Follower

Introducere

Proiectul presupune realizarea unui robot care se va deplasa pe o suprafata alba si va urmari o linie neagra.Cu ajutorul unor senzori va detecta linia neagra si se va deplasa de-a lungul ei.In cazul curbelor, robotul le va urma.

Descriere generala

In realizarea proiectului am folosit urmatoarele componente: Placa imprimata de la etapa I, pe care am atasat-o de o placa sasiu de care sunt legate doua servomotoare conectate la doua roti si doi senzori optici (in sensul de deplasare al robotului). Tot de sasiu am legat alimentarea (formata din opt baterii de 1.5 V legate in serie) de 12 V. Placa de la etapa I este alimentata direct de la 12 V prin intermediul mufei care face legatura cu regulatorul de voltaj, output-ul fiind de 5 V.Asadar servomotoarele si senzorii sunt alimentate la o tensiune de 5V . Intensitatea curentului prin servomotoare este de 100mA. Cand unul din senzori intalneste culoarea neagra, roata de pe partea acestuia se opreste, iar roata de pe partea opusa se roteste cu viteza maxima. Cand ambii senzori sunt pe culoarea alba, ambele motoare merg inainte cu viteza maxima.

Schema bloc

Hardware Design

Piese folosite :

  • 2 servomotoare Tower Pro Micro Servo 9g
  • 2 senzori optici RPR220
  • 2 rezistente 10K ohm + 2 rezistente 470 ohm (folosite in cadrul senzorilor)
  • 2 socluri de cate 4 baterii
  • 8 baterii de 1.5 V
  • 1 intrerupator
  • 1 bareta mama
  • 1 panglica IDE
  • 2 roti
  • 4 distantiere
  • 2 placi de test

Pe sasiu am atasat :

  • Placa de baza realizata in etapa 1;

Am conectat alimentarea (cele 8 baterii inseriate) la mufa ce are conexiune directa cu reductorul de tensiune.

  • Cei doi senzori legati individual cu cate un mecanism detasabil (pentru a putea fi reglati in functie de grosimea liniei negre)

Pentru functionalitatea senzorilor am folosit circuitul de mai jos in care am conectat la dioda respectiv tranzistorul senzorilor optici, doua rezistente (o rezistenta de 10K ohm → legata direct de colectorul tranzistorului, o rezistenta de 470 ohm inseriata cu dioda)

* Cele doua servomotoare cu cele doua roti (fiecare servomotor fiind conectat separat la cate o roata)

Initial servomotoarele au fost fabricate cu un mecanism ce le permitea o rotatie de doar 180 grade Pentru a facilita o rotatie completa (360 grade) am adus mici modificari :

  • am taiat mecanismul de oprire prezent pe una din rotile dintate, rezultatul fiind ca in poza :
  • am pilit capatul potentiometrului continut de motor astfel incat roata dintata care avea mecanismul de oprire sa poata fi rotita fara a modifica valoarea potentiometrului (mentionez ca potentiometrul l-am setat la o valoare de mijloc).

Am ajuns la aceasta concluzie deoarece la rotirea in sens invers a oricarui motor, potentiometrul se seta pe valoarea 0 si astfel roata se bloca;

 
* Cu ajutorul a doua distantiere, am atasat alimentarea (cu cele 8 baterii inseriate). 

La alimentare am atasat un buton care imi intrerupe/porneste robotul.

Software Design

Mediu de dezvolate:

  • Codul a fost scris in C
  • Am compilat cu AVR-gcc

Descriere cod :

  • Functia care face robotul sa inainteze cand ambii senzori detecteaza alb:

void move_forward() {

channelA(MOTOR_DREPT, MAX);

channelA(MOTOR_DREPT, MIN);

channelB(MOTOR_STANG, MIN);

channelB(MOTOR_STANG, MAX);

PORTB = MOTOR_STANG;

PORTA = MOTOR_DREPT;

}

  • Cand unul din senzori detecteaza negru, schimb factorul de umplere al motoarelor(motorul din partea senzorului il opresc si cel din partea opusa functioneaza la putere maxima).

Functia care face acest lucru este urmatoarea:

void move_right_engine() {

channelA(MOTOR2, MAX);

channelA(MOTOR2, MIN);

PORTB = MOTOR1;

}

Rezultate obtinute

Robotul functioneaza dupa cum ne-am propus.Am testat robotul atat pe circuite create de mine cat si pe cele de la facultate si am observat o functionare corecta a acestuia.

Mentionez ca viteza cu care parcurge un circuit este decenta.Deoarece senzorii sunt foarte apropiati de motoare, robotul poate lua curbe destul de “stranse” foarte precis.

Avand in vedere ca senzorii sunt suficient de departati unul de altul, robotul functioneaza pe circuite proiectate cu linii negre atat groase cat si subtiri.

Am obtinut o aderenta buna a rotilor plasand bateriile astfel incat centrul acestora de greutate sa “cada” deasupra rotilor.

Am atasat si cateva poze cu “produsul” final:

Video

Concluzii

A fost un proiect interesant, mai ales datorita faptului ca am realizat ceva practic. Ne-a placut si faptul ca am dobandit abilitatea de a face lipituri si am capatat indemanarea de a lucra cu un letcon. Lucru in echipa ne-a ambitionat. Chiar daca am intampinat si probleme la care nu ne asteptam, le-am rezolvat cu darzenie.

Download

Cod robot

Bibliografie/Resurse

Datasheet ATMega16: doc2466.pdf

Datasheet Senzori RPR-220: rpr-220.pdf

pm/prj2011/dtudose/def/linefollower.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