Table of Contents

Introducere

Echipa

Scop

Este un clasic urmaritor de linie neagra(Line folower).

Ce stie sa faca

Robotul stie ca atunci cand este pus pe un ring alb cu o linie neagra sa o urmareasca, sau macar sa incerce sa o urmareasca

Descriere generală

Hardware design

Lista piese

Software design

Programul actioneaza motorul folosind 2 PWM-uri ale caror valori se configureaza periodic intr-o functie de intrerupere care se activeaza la TIMER1_COMPA. Exista o serie de definuri globale care definesc gradul de umplere pentru PWM pentru diferite situatii de functionare.

Functii:
-main
-init
-ISR(TIMER1_COMPA_vect)

Functia main apeleaza init si apoi intra in bucla infinata cu while(1).
Functia init:
-seteaza portul A ca input ⇒ exista 8 senzori care sunt cititi folosind PA0-7
-activeaza sensul motoarelor in fata folosind portul C ca output ⇒ PC4,5 pentru motor1 si PC6,7 pentru motor2
-activeaza PWM pe OCR0 si OCR2 pentru motor1, respectiv motor2
-configureaza timer CTC pe OCR1A
-activeaza intreruperea pentru TIMER1_COMP1
Functia ISR(TIMER1_COMPA_vect)
-calculeaza senzorul care are proportionalitatea cea mai mare
-in functie de valoarea medie stabilita se stabileste o valoare pentru PWM1 si PWM2 intre lowPWM si highPWM.

Ideea algoritmului este ca atunci cand media este in partea stanga, de exemplu, motorul stang se incetineste. In cazul in care nici un senzor nu este activ, se testeaza daca la etapa anterioara de test a fost activat unul din senzorii din margine, iar, in acest caz, se considera ca media este pe senzorul din acea medie.

Rezultate obtinute

Concluzii

Download

gunoieru.zip

Jurnal

Miercuri, 16/05/2012, am facut partea de comanda la robotel, fara baterie
Sambata, 19/05/2012, am programat cu succes microcontrolerul folosind timere, intreruperi, PWM si ADC
Duminica, 20/05/2012, am terminat restul de hardware

Este ora 4:00AM, pe data de 21/05/2012

Multumim urmatorilor