Introducere

Echipa

  • Chisa Razvan 334CB
  • Tranca Cristian 334CB

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ă

  • Robotelul este compus din placuta de la laborator, comparatoare de tensiune pentru senzori, 2 motoare, 1 driver L298.
  • Am folosit IN1, IN2 pentru stabilirea sensului motoarului 1, IN3 IN 4 in acelasi mod, si enableurile pentru pwm
  • Senzorii sunt monitorizati de comparatoare si trimit mai departe catre uC datele in format digital

Hardware design

Lista piese

  • Lista de piese folosite la placuta de PM
  • L298
  • diode 1N4007
  • bara de senzori polulu
  • motoare polulu cu reductor 50:1
  • sursa in comutatie
  • baterie LIPO 11.1V
  • Conductori de legatura
  • Intrerupator general
  • Intrerupator pentru sursa de comutatie care alimenteaza senzorii,comparatoarele si motoarele
  • LED mare pe post de suport care si lumineaza cu efect de trolling
  • Silicon termic, mult

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

  • In acest momen robotelul reuseste sa urmareasca linia
  • A trebuit sa schimbam rotile din cauza ca alunecau
  • Am pus sursa de comutatie in scurt, a inceput sa cante(sa tiuie, dar ne-am dat seama ca are protectie)
  • Am avut o lipitura cu 8 fire pe care a trebuit sa facem debugging

Concluzii

  • A trebuit sa mutam bateria din fata in spate, deoarece frecarea era prea mare in anumite situatii pentru ca robotelul sa poata inainta
  • Am adaugat un bargraph pentru a putea configura potentionetrul pentru a putea obtine semnal digital corespunzator
  • Nu prea e bine sa lucrezi cu fire peste tot, este doar genial
  • Este cel mai de gunoi robotel pe care l-am vazut
  • Daca te chinuiesti destul poti face un robotel sa arate foarte urat dar sa mearga foarte bine

Download

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

  • Laboratorul InGeAR pentru motoare, sursa in comutatie, placuta, LED, comparator, bargraf, respack si bara de senzori si spatiu de lucru
  • Domnului Tudor Petre pentru integrate pentru stabilizare tensiune
  • “dutema”
pm/prj2012/pbara/12.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