This is an old revision of the document!
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 "flashlight"-ul unui telefon se masoara ~650-700). In general pentru o reflectivitate decenta am ales valoarea de 35 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.
* 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
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Resurse Software
TODO