Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:florin.stancu:mihnea.popescu1811 [2026/05/07 21:36]
mihnea.popescu1811 [Descriere generală]
pm:prj2026:florin.stancu:mihnea.popescu1811 [2026/05/15 02:51] (current)
mihnea.popescu1811 [Schematic]
Line 10: Line 10:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-{{:​pm:​prj2026:​florin.stancu:​diagrama_block.png?800|}}+Fluxul de date planificat si interactiunea modulelor:​ 
 + 
 +  - Citire ADC: Sistemul citeste potentiometrul pentru a stabili distanta dorita fata de perete (referinta). 
 +  - Preluare Date Senzori: La intervale regulate (ex. 50ms), MCU declanseaza senzorii ultrasonici si calculeaza distantele (Fata, Stanga, Dreapta) folosind Timere/​Intreruperi. 
 +  - Calcul Eroare: Se calculeaza diferenta dintre distanta laterala curenta si referinta dorita. 
 +  - Procesare PID: Modulul central aplica algoritmul de control pe baza erorii pentru a calcula corectia necesara. 
 +  - Generare Semnal: MCU genereaza semnalele PWM ajustate si pinii de directie. 
 +  - Actionare: Driverul L298N primeste comenzile si modifica asimetric turatia celor doua motoare DC pentru a corecta traiectoria. 
 + 
 +Logica de navigare foloseste o ierarhie stricta: EVITARE COLIZIUNE FRONTALA > URMARIRE PERETE LATERAL. Daca senzorul frontal scade sub un prag critic, robotul suprascrie bucla PID si executa o rotatie de urgenta. 
 + 
 +{{:​pm:​prj2026:​florin.stancu:​diagramabunablock.png?800|}}
 ===== Hardware Design ===== ===== Hardware Design =====
 Design-ul fizic este conceput pentru a asigura stabilitatea robotului in timpul navigarii prin labirint, utilizand un sasiu alungit 2WD care permite montarea strategica a senzorilor. Elementul central il reprezinta sistemul de detectie format din trei senzori ultrasonici,​ dispusi pentru a acoperi zonele frontala, stanga si dreapta, oferind robotului o "​viziune"​ completa asupra mediului inconjurator. Design-ul fizic este conceput pentru a asigura stabilitatea robotului in timpul navigarii prin labirint, utilizand un sasiu alungit 2WD care permite montarea strategica a senzorilor. Elementul central il reprezinta sistemul de detectie format din trei senzori ultrasonici,​ dispusi pentru a acoperi zonele frontala, stanga si dreapta, oferind robotului o "​viziune"​ completa asupra mediului inconjurator.
Line 26: Line 37:
   * Fire de conexiune Dupont (Tata-Tata pentru breadboard, Mama-Tata pentru senzori si driver)   * Fire de conexiune Dupont (Tata-Tata pentru breadboard, Mama-Tata pentru senzori si driver)
  
 +^ Board Pin ^ Function ^ Component ^ Direction ^ Description ^
 +| Pin 4 | Digital Out | Driver L298N (IN1) | Output | Directie motor stang |
 +| Pin 5 | Digital Out | Driver L298N (IN2) | Output | Directie motor stang |
 +| Pin 6 | Digital Out | Driver L298N (IN3) | Output | Directie motor drept |
 +| Pin 7 | Digital Out | Driver L298N (IN4) | Output | Directie motor drept |
 +| Pin 10 | PWM Out | Driver L298N (ENA) | Output | Viteza motor stang |
 +| Pin 11 | PWM Out | Driver L298N (ENB) | Output | Viteza motor drept |
 +| Pin 2 | Digital Out | Senzor Fata (Trig) | Output | Trigger ultrasunete |
 +| Pin 3 | Digital In | Senzor Fata (Echo) | Input | Receptie ecou |
 +| Pin 8 | Digital Out | Senzor Stanga (Trig) | Output | Trigger ultrasunete |
 +| Pin 9 | Digital In | Senzor Stanga (Echo) | Input | Receptie ecou |
 +| Pin 12 | Digital Out | Senzor Dreapta (Trig) | Output | Trigger ultrasunete |
 +| Pin 13 | Digital In | Senzor Dreapta (Echo) | Input | Receptie ecou |
 +
 +
 +===== Schematic =====
 +
 +{{:​pm:​prj2026:​florin.stancu:​schematicbun.png?​800|}}
 ===== Software Design ===== ===== Software Design =====
  
  
-<note tip> +Dezvoltarea software-ului se realizeaza la nivel bare-metal, avand la baza o arhitectura orientata pe evenimente ​(intreruperisi o bucla de control principala. 
-Descrierea codului aplicaţiei ​(firmware): + 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR+  * **Mediu ​de dezvoltare:** Codul este scris in C, folosind un mediu precum Visual Studio Code cu avr-gcc si Makefile ​(sau Atmel/​Microchip ​Studio). 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib+  * **Librarii si surse 3rd-party:** Se vor folosi exclusiv bibliotecile standard AVR (`<avr/io.h>`, `<​avr/​interrupt.h>`, `<​util/​delay.h>​`). Nu se folosesc biblioteci externe (cum ar fi cele de Arduino), tot codul interactionand direct cu registrii. 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi +  * **Algoritmi si structuri ​de date:** 
-  * (etapa 3surse şi funcţii ​implementate +    **Algoritm PID:** Calcul matematic folosit pentru a mentine distanta constanta fata de perete si a elimina oscilatiile ​(mersul in zig-zag)
-</​note>​+    * **Finite State Machine (FSM):** Masina de stari pentru controlul logicii de navigare (ex. stari: `FOLLOW_WALL`,​ `CORNER_TURN`,​ `AVOID_FRONT_OBSTACLE`). 
 +    * Structuri de tip `struct` pentru a grupa datele senzorilor si coeficientii PID (Kp, Ki, Kd, eroarea_anterioara). 
 +  * **Surse si functii ​implementate:** 
 +    * `init_timers_and_pwm()`:​ Configureaza registrele pentru generarea PWM-ului motoarelor si timerele pentru senzori. 
 +    * `read_ultrasonic(sensor_pin)`:​ Declanseaza senzorul si masoara durata semnalului Echo prin intreruperi pentru a calcula distanta. 
 +    * `compute_PID(current_dist,​ setpoint)`: Calculeaza eroarea si aplica formula Proportional-Integral-Derivativ. 
 +    * `drive_motors(speed_left,​ speed_right)`:​ Aplica rezultatul PID pe pinii de comanda ai driverului L298N.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
pm/prj2026/florin.stancu/mihnea.popescu1811.1778178992.txt.gz · Last modified: 2026/05/07 21:36 by mihnea.popescu1811
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