This shows you the differences between two versions of the page.
pm:prj2022:apredescu:linefollowerdanielescusotiutemil [2022/05/23 16:18] emil.danielescu [Hardware Design] |
pm:prj2022:apredescu:linefollowerdanielescusotiutemil [2022/06/02 07:18] (current) emil.danielescu [Hardware Design] |
||
---|---|---|---|
Line 57: | Line 57: | ||
IR LED Detector Signal Diagram | IR LED Detector Signal Diagram | ||
- | {{:pm:prj2022:apredescu:ir_led_signal_diagram.png?nolink&300|}} | + | {{:pm:prj2022:apredescu:ir_led_signal_diagram.png?nolink&600|}} |
* rezultatele simulării | * 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 "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. | + | 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 | ||
Line 69: | Line 89: | ||
<note tip> | <note tip> | ||
Descrierea codului aplicaţiei (firmware): | 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 | ||
</note> | </note> | ||
Line 75: | Line 105: | ||
| | ||
* librării şi surse 3rd-party | * librării şi surse 3rd-party | ||
- | Default Arduino Library | + | Default Arduino Libraries and modules: Digital PWM, USART, GPIO, ADC |
| | ||
* algoritmi şi structuri pe care plănuiţi să le implementaţi | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
- | TODO on Code write. As of now no special Data structures are needed | + | 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 | * (etapa 3) surse şi funcţii implementate | ||
- | TODO | + | Functii standard arduino: pinMode, analogWrite, digitalWrite, analogRead |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | 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. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
+ | O imagine a proiectului finit: | ||
+ | {{:pm:prj2022:apredescu:whatsapp_image_2022-05-23_at_4.12.46_pm.jpeg?nolink&300|}} | ||
+ | |||
+ | Un demo al motoarelor ruland, folosind de asemenea consola pentru debug: | ||
+ | https://youtu.be/nwMmXv6_WuA | ||
===== Concluzii ===== | ===== 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. | ||
- | ===== Download ===== | ||
- | <note warning> | + | Demo Final, cu testare pe linie Neagra deasupra Hartie Alba: |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | + | ||
- | 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**. | + | |
- | </note> | + | |
+ | https://youtu.be/Qy1Xug2Kc1A | ||
+ | ===== Download ===== | ||
+ | O arhiva cu toate fisierele rezultate din acest proiect poate fi gasita aici: | ||
+ | {{:pm:prj2022:apredescu:line_follower.rar|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note tip> | + | * 21/04/2022 - Select Project |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * 22/04/2022 - Create Wiki |
- | </note> | + | * 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 ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
- | </note> | ||
**Resurse Hardware** | **Resurse Hardware** | ||
* https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf | * https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf | ||
Line 116: | Line 154: | ||
**Resurse Software** | **Resurse Software** | ||
- | TODO | + | * Tutorial L298N: https://www.youtube.com/watch?v=_I-7XYaAtAo |
+ | * IR Sensor Tutorial: https://www.youtube.com/watch?v=tUTr58fq308 | ||
+ | * QTR Anaolg Sensor: https://create.arduino.cc/projecthub/saher-iqbal/line-follower-robot-36516b | ||
| | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||