Introducere

Proiectul realizat este un robot Line-Follower:

  • urmareste o linie neagra pe un circuit alb
  • ideea de a face un Line-Follower a fost a lui Dan Tudose. Noua ne-a placut, si iata-ne ca am facut acest proiect
  • daca vizionam acest proiect “out-of-the-box” toate partile principale pe care le-am facut, pot avea diferite aplicatii practice

Descriere generală

Pe langa placuta de baza(cu uC ATMEGA16) facuta la laborator, am mai realizat inca 3 placute:

  • 1 - placuta ce contine senzorii plus rezistentele - aceasta se leaga la placuta cu 2 - facuta in EAGLE
  • 2 - placuta ce contine punteaH, comparatorii - aceasta se leaga la placuta 1 la placa de baza, iesirile puntii H la motoare - facuta in EAGLE
  • 3 - o placuta cu 4 divizoare de tensiune folosind rezistente ( o sa explic mai jos de ce am avut nevoie de acest modul) - facuta pe placuta cu gauri

Voi pune poze cu schematic-urile din EAGLE :

Hardware Design

Necesarul de piese a fost:

  • placuta de baza cu uC facuta la laborator
  • 8 x RPR-220 (acestea contineau in aceeasi capsula atat fotodioda cat si led-ul IR) - optocuploare
  • rezistente pentru led-uri si divizoarele de tensiune
  • 2 comparatoare LM339 ( fiecare continea cate 4 intrari/iesiri → 8 in total - cati senzori avem)
  • potentiometru
  • punte H L298
  • stabilizator de tensiune 5V(5A) - 1084
  • condensatori de 10uC pentru stabilizator
  • Suport cu bila - pentru o frecare minima cu pista
  • textolit pentru placutele imprimate
  • barete mama/tata
  • suport 6 baterii
  • set 6 baterii

Poza1 Poza2

Poza3 Poza4

Software Design

Codul aplicatiei:

  • Mediu de Dezvoltare: Programmers Notepad[WINAVR]
  • Biblioteci : avr\io.h, avr\interrupt.h
  • Masinuta se activeaza/dezactiveaza apasand pe butonul de pe placuta de baza
  • Algoritm:
    • Intr-o bucla while(1), se citeste starea celor 8 senzori
      • Daca
        • senzorul cel mai din dreapta detecteaza linia atunci valoarea lui right este 3
        • al doilea senzor din dreapta detecteaza linia atunci valoarea lui right este 2
        • al treilea senzor din dreapta detecteaza linia atunci valoarea lui right este 1
        • daca al patrulea senzor din dreapta detecteaza linia atunci valoarea lui right este 0
      • Asementor se calculeaza valoarea si pentru left
      • In functie de diferenta dintre cele 2 (|left-right| ) se va seta viteza pe fiecare motor
        • Daca diferenta dintre cele 2 este
          • 0 , atunci ambele motoare vor merge cu viteza cea mai mare definita de noi in PWM
          • 1 , atunci un motor va merge cu viteza cea mai mare definita de noi, celalalt este lasat pe liber
          • 2 , atunci un motor va merge cu viteza cea mai mare definita de noi, celalalt este pus pe franare
          • 3 , atunci un motor va merge cu viteza cea mai mare definita de noi, celalalt pe reverse cu o treapta inferioara de viteza celui care merge in fata
  • Sursa impreuna cu Makefile-ul:

Rezultate Obţinute

In urma efortului depus pentru acest proiect am obtinut un line-follower functional Problemele aparute pe parcursul proiectului:

  • Proiectare gresita a placilor in EAGLE(a trebuit sa refacem o placa…:-D - Eagle NewBie)
  • Probleme cu motoarele/puntea H:
    • Motoarele functioneaza in regim normal la 3V
    • Puntea H are nevoie de minim 5V pe intrare (Vs) pentru a functiona (Vih+2.5, Vih = 2.3)
    • 5V in PWM de 50%, motoarele se comportau ok(nu exista riscul arderii)
    • Problema e ca Vh-ul nostru era de 5V(cel venit de la placuta). Facand calculul de mai sus aveam nevoie pe Vs de 7.5 (inadmisibil, a se vedea aici)
    • Pentru a rezolva problema am facut un divizor de tensiune care sa traga tensiunea pe pinii de intrare ai puntii H de la 5V la 2.5V ( Vih_min=2.3, deci a fost ok) - o solutie nu foarte eleganta, dar din lipsa de timp am aplicat-o (o solutie era sa schimbam integratul L298 cu L293, dar asta insemna sa schimbam circuitul - nu se potrivea pin la pin cu L293 -).
    • Daca lasam alimentarea Vh-ul la 5V, atunci motoarele incepeau sa isi ia curent si din pinii de INPUT (adica de la uC….ceea ce ducea la incalzirea stabilizatorului de pe placuta + resetarea uC).

Concluzii

  • Partea HARDWARE destul de greu de implementat (oricum a doua oara daca am proiecta asa ceva, am sti care sunt bubele si unde am facut destul de multe erori)
  • Partea SOFTWARE foarte usor de implementat ( cateva ore e mult spus, cred:-P)
  • Costul total al robotului a ajuns la 250RON (daca nu mai bine, cu inca un set de baterii schimbat si alte componente gresit alese)

Download

Bibliografie/Resurse

pm/prj2010/dtudose/lfo.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