Line Follower Robot
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
The IR LED Circuit Diagram
Driver Circuit Diagram
Arduino Diagram
Driver Signal Diagram
IR LED Detector Signal Diagram
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
* 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
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
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:
O arhiva cu toate fisierele rezultate din acest proiect poate fi gasita aici: line_follower.rar
Resurse Hardware
Resurse Software