Line Follower Robot

Line Follower Robot

Introducere

Prezentarea pe scurt a proiectului vostru:

  • Proiectul este un line follower robot care va folosi 2 senzori infrarosu pentru a detecta culoarea unei linii si a vira in directia acesteia.
  • Scopul acestui proiect este de a testa implementarea unui self-driving device care va putea fi implementat si in alte modalitati de transport.
  • Ideea initiala pentru acest proiect a fost un detector de banda auto care va avertiza audio un sofer cand acesta este pe linie alba continua.
  • Acest proiect consider ca va ajuta colegi in implementarea unui robot complex care va putea sa conduca pe strazi.

Descriere generală

Robotul este compus dintr-un device Arduino Uno care va fi activat de o baterie de 9V. Microcontroller-ul va primi output-ul de la 2 fotodiode IR/Detectoare de culoare pentru a mentine o linie de culoare neagra(albul reflecta toata lumina si negrul absoarbe). Vom folosi 2 senzori IR ale caror unde nu vor fi reflectare de culoarea negru si astfel vor trimite logic LOW catre placa arduino. In functie de inputul primit de cei 2 senzori vom trimite output signal prin PWM catre un driver de 12 volti pentru 2 motoare DC. Pentru a intoarce dreapta vom trimite HIGH la motorul din dreapta si LOW la celalalt, iar pentru stanga vom inversa semnalul. Putem controla si viteaza de rotatie a motoarelor prin PWM, astfel incat cu cat crestem duratia pulsurilor cu atat motorul se va invarti mai repede.

The Motor Block

The IR BLock

The IR LED Circuit Diagram

Hardware Design

Aici puneţi tot ce ţine de hardware design:

  • Piesele vor fi:
    • Bară de Senzori Infraroșu Reflectivi QTR-3A;
    • Fir pentru Baterie de 9V cu Mufa DC;
    • Modul cu Driver de Motoare Dual L298N Rosu;
    • Motor cu Reductor 1035Y 12V57;
    • Placa de Dezvoltare Compatibila cu Arduino UNO R3 (ATmega328p + ATmega16u2) + Cablu 50 cm;
    • Kit Breadboard HQ830 cu Fire și Sursă;
  • Scheme electrice:
The IR LED Circuit Diagram

Driver Circuit Diagram

Arduino Diagram

  • diagrame de semnal
Driver Signal Diagram

IR LED Detector Signal Diagram

  • rezultatele simulării
  Din construirea proiectului + rularea codului se poate observa ca dioda masoara in principal reflectivitarea luminii, rezultand in valori mai mici la negru, la suprafate mate si la umbra(de exemplu la lumina reflectata de ALB se masoara ~35). In general pentru o reflectivitate decenta am ales valoarea de 600 pentru comparatie pentru a muta robotul spre stanga si dreapta. Motoarele vor functiona foarte incet din cauza curentului mic de la arduino si nu este nevoie de o baterie 9V, cei 5V generati de placa Arduino sunt suficienti.
  Conexiunile Hardware sunt astfel:
  Driver:
      -ENA = Pin 10 Arduino
      -ENB = Pin 3 Arduino
      -In1 = Pin 7 Corespunde OUTA1
      -In2 = Pin 6 Corespunde OUTA2
      -In3 = Pin 5 Corespunde OUTB1
      -In4 = Pin 4 Corespunde OUTB2
      -5V = 5V Output Arduino
      -12V = Vin Arduino
      -GND = GND1 Arduino
  IR Array:
      -VCC = Pin 12 Arduino
      -Pin 1 = A0 RIGHT
      -Pin 2 = A1 CENTER
      -Pin 3 = A2 LEFT
      -GND = GND2 Arduino
  Adaptor Baterie 9V -> Conectat la Vin

Software Design

Descrierea codului aplicaţiei (firmware): Codul a fost scris folosind structura standard Arduino + functii standard Arduino. Nu a fost necesara o librarie speciala, desi exista librarii pentru senzorii QTR mai noi(8+). Pentru a selecta pins s-a folosit documentatia pentru Senzorul IR QTR-3 si pentru Driver-ul de motor L298N. Senzorul se va citi cu ADC, si se vor afla valori intre 0-700, acestea crescand cu cat lumina reflecta mai putin. Driver-ul poate folosi Digital PWN, astfel ca se va conecta la pinii de digital PWM, iar pinii de directie la pini de logica digitala. Software-ul va verifica pentru 4 situatii detectate de Diodele IR: Nu detecteaza Nimic - Dioda din centru nu reflecta nimic, asteapta semnal. Se pune in set-up pentru a nu intrerupe loop-ul Mers Dreapta - Dioda dreapta gaseste valori mari(citeste curba negru spre dreapta) Mers Stanga - Dioda stanga gaseste valori mari(citeste curba negru spre dreapta) Mers Inainte - Dioda dreapta + stanga au valori mari(citeste drum negru in fata) Stop

* mediu de dezvoltare

  Arduino IDE + AVR
  

* librării şi surse 3rd-party

  Default Arduino Libraries and modules: Digital PWM, USART, GPIO, ADC
  

* algoritmi şi structuri pe care plănuiţi să le implementaţi

  Nu este nevoie de structuri de date sau algoritmi specializati.
  Implementarea software contine in mare o serie de verificari logice pentru valoarea citita de diodele IR: Centru pentru mers, Dreapta si Stanga pentru Directie. 
  

* (etapa 3) surse şi funcţii implementate

  Functii standard arduino: pinMode, analogWrite, digitalWrite, analogRead

Rezultate Obţinute

Codul functioneaza corect, si robotul reuseste sa invarta motoarele. A fost necesara testarea polaritatii motoarelor cu inputurile aparatului de driver pentru a avea directia si rularea corecta.

O imagine a proiectului finit:

Un demo al motoarelor ruland, folosind de asemenea consola pentru debug: https://youtu.be/nwMmXv6_WuA

Concluzii

Acesta a fost primul proiect pentru PM la care am lucrat si pot spune ca am invatat multe despre implementarea hardware a aparatelor. Datorita librariilor arduino, migrarea in lucrul cu microcontrollere a fost naturala, si cele mai mari challenges au fost imbinarile hardware. Robotul este un prototip momentan, care doresc sa il dezvolt in viitor cu piese cu precizie mai mare si cu periferice(chassis, roti) pentru a putea face un line follower complet.

Demo Final, cu testare pe linie Neagra deasupra Hartie Alba:

https://youtu.be/Qy1Xug2Kc1A

Download

O arhiva cu toate fisierele rezultate din acest proiect poate fi gasita aici: line_follower.rar

Jurnal

  • 21/04/2022 - Select Project
  • 22/04/2022 - Create Wiki
  • 04/05/2022 - All Components arrive
  • 06/05/2022 - Start writing testing code for motors
  • 12/05/2022 - Weld QTR Array
  • 14/05/2022 to 21/05/2022 - Test analog values for QTR sensor and PWM for motor driver
  • 22/05/2022 - Write Final Code, Comment Code + Record Demo
  • 23/05/2022 - Upload Demo, Upload Files, Complete Wiki

Bibliografie/Resurse

pm/prj2022/apredescu/linefollowerdanielescusotiutemil.txt · Last modified: 2022/06/02 07:18 by emil.danielescu
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