Line follower

Introducere

Proiectul presupune crearea unui robotel de tip line follower. Robotelul va urmari o linie neagra pe un fundal negru, indiferent de forma circuitului. Proiectul a presupus atat partea hardware cat si partea software pentru robotel. Am ales acest proiect pentru ca era foarte interesant si avea o finalitate practica: crearea unui robotel propriu.

Descriere generala

Pentru realizarea hardware am folosit placuta de la etapa I, cu microcontrolerul ATMEGA16, plus inca cateva componente:

  • driver de motoare cu circuit integrat L298N
  • kit robot : doua motoare de curent continuu 120:1 tip Pololu, 2 roti pentru aceste motoare, o roata de sprijin metalica si setul de conectori, suruburi si piulite necesare asamblarii kit-ului.
  • bara senzori de reflectanta (8 senzori analogici) QTRA 8A
  • o cutie cu 4 baterii de 1.5 fiecare (pentru motoare)
  • o baterie de 9V pentru placuta
  • 8 diode Schottky

Kit robot:

Bara senzori:

Integratul L298N:

Hardware design

ATMEGA 16 + Senzori + L298N

Senzorii i-am legat la PORT A, INPUT-urile pentru driver le-am legat la PORTC 0-3, ENABLE A/B le-am legat la PORTD 0-1.

Schema driver motoare

L298N are 4 input-uri cu care controleaza miscarea motoarelor si 2 enable inputs pentru a porni sau opri motoarele. Pentru viteza motorului, ne folosim de PWM de la ATMEGA16. Diodele Schottky le-am folosit pentru ca campul magnetic si electric al motoarelor sa nu faca probleme circuitului. Tensiunea pentru motoare am luat-o folosind 4 baterii de 1.5 V. VCC-ul l-am luat de la placuta.

Software design

Initial initializam timerul pe mod PWM si configuram porturile de input si output.

In main avem o bucla infinita in care:

  • citim valorile de la cei 8 senzori
  • verificam primii 4 senzori din stanga si ultimii 4 din dreapta
  • determinam spre ce directie e deviat robotul
  • daca linia neagra e in mijloc (deviatia e 0), dam comanda sa mearga inainte
  • daca e deviat spre dreapta, oprim roata din stanga si il lasam sa se redreseze
  • daca e deviat spre stanga, oprim roata din dreapta si il lasam sa se redreseze
  • retinem de fiecare data ultima comanda intr-o variabila history
  • daca robotul detecteaza numai alb, atunci acesta se va roti in sens trigonomentric sau invers trigonomentric in functie de ultima comanda data (variabila history)

Rezultate obtinute

Concluzii

Proiectul a fost foarte interesant. Am avut ocazia sa facem ceva practic, sa creem practic un robot, pornind de la hardware pana la implementare software. Am avut dificultati cu ENABLE A/B, care initial le-am legat la PORTD 4/5, dar PORTD 4 nu primea tensiune de 5 V, asa ca am mutat pe pinii PORTD 0/1. Scrierea algoritmului pentru deplasare nu a fost grea. O alta problema au fost senzorii, deoarece i-am lipit un pic strambi si un pic prea aproape de pamant, dar in final s-a dovedit ca nu sunt o problema. Durata proiectului a fost de aproximativ 5 zile. Robotelul merge bine si suntem bucurosi ca am putut sa realizam acest proiect.

Download

Bibliografie

pm/prj2012/dtudose/10.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