Introducere

Un robot Line Follower este un robot autonom capabil sa urmareasca o linie desenata pe un fundal de culoare diferita (de exemplu o linie neagra pe un fundal alb).

Este un tip de robot foarte popular in zilele noastre, existand chiar si competitii de acest gen.

Descriere generală

Schema bloc hardware


Robotul foloseste 5 senzori de lumina pentru a detecta linia. In mod normal doar senzorul din centru trebuie sa vada negru.


Cand robotul incepe sa paraseasca linia, senzorii aditionali vor detecta negru.

In acest moment microcontroller-ul va comanda motoarele astfel incat robotul sa revina pe linie

Hardware Design

Robotul foloseste senzori de lumina pentru a se ghida pe traseu. Un senzor este compus dintr-un LED cu infrarosu (emitator) si un fototranzistor cu infrarosu (receptor). Acestea functioneaza dupa urmatorul principiu:


Schema electrica senzor:

Pe o suprafata alba lumina reflectata este suficienta pentru a deschide fototranzistorul. Acesta se satureaza si tensiunea VOUT va fi undeva in jurul 0,4V.

Pe o suprafata neagra fototranzistorul este blocat (sau deschis in regiunea activa, departe de saturatie), iar VOUT va fi aproximativ 2-3V.


Schema placa:

Iesirile senzorilor de lumina sunt citite cu ajutorul ADC-ului. In acest fel se pot seta in program pragurile pentru care o valoare citita va fi considerata alb/negru.

Pentru controlul motorului am folosit driverul integrat L298N. Intrarile ENABLE_A si ENABLE_B ale driverului sunt conectate pe iesirile de PWM ale microncotroller-ului (Timer0 si Timer2). Astfel se poate seta din program turatia motoarelor.

Software Design

Ideea algoritmului este una foarte simpla. Dintre cei cinci senzori din fata ai robotului, daca unul din cei doi senzori din extremitatea dreapta detecteaza negru, robotul se va intoarce putin dreapta. Daca unul cei doi senzori din extremitatea stanga detecteaza negru, robotelul se va intoarce putin stanga. Altfel , daca se detecteaza negru de catre senzorul din mijloc, acesta se va misca inainte. Acesti pasi se efectueaza intr-o bucla infinita. La intrarea in bucla se citesc valorile de la cei cinci senzori si se efectueaza apoi verificarile mentionate mai sus. Pentru debugging am pus ca 2 led-uri de pe placa sa se lumineze astfel: cand se detecteaza negru pe dreapta, se lumineaza led-ul din dreapta, cand se detecteaza negru pe stanga, se lumineaza led-ul din stanga, iar cand se detecteaza negru pe senzorul din mijloc sunt luminate ambele led-uri.

while (1)
{
    for (i = 0; i < 5; i++)
        sensor[i] = single_conversion(chan[i]);
 
    if (sensor[3] > threshold[3] || sensor[4] > threshold[4])
    {
        PORTC |= (1 << PC0);
        PORTC &= ~(1 << PC2);
 
        robot_right();
        goto next;
    }
    if (sensor[0] > threshold[0] || sensor[1] > threshold[1])
    {
        PORTC &= ~(1 << PC0);
        PORTC |= (1 << PC2);
 
        robot_left();
        goto next;
    }
 
    PORTC |= (1 << PC0) | (1 << PC2);
 
    robot_forward();
 
 
    next:
    _delay_ms(70);
}

In rest, mai avem functii de miscare a robotului pentru care pot fi setate diverse viteze (intrucat folosim pwm-ul).

Rezultate Obţinute

Implementarea, atat cea hardware, cat si cea software este completa. Robotelul a fost testat pe traseul din laborator, iar din cele 9 ture pe care le-am facut de-a lungul testelor, robotelul a ratat anumite curbe numai in 2 din aceste ture (din motive pe care nu ni le putem explica foarte clar).

Concluzii

Partea hardware a fost cea mai solicitanta, partea software iesind mai rapid ca urmare a parcurgerii laboratoarelor de pm.

Download

Jurnal

01 - 28 februarie → partea hardware ( + putin software )

30 - 31 mai 2010 → partea software

Bibliografie/Resurse

– datasheet atmega16 - 1773.pdf

– datasheet l298 - 1773.pdf

– laboratoare pm

– google

pm/prj2010/avoinescu/linef.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