This shows you the differences between two versions of the page.
|
pm:prj2026:vlad.radulescu2901:rares.ciociea [2026/05/05 15:35] rares.ciociea [3. Diagrame de Semnal] |
pm:prj2026:vlad.radulescu2901:rares.ciociea [2026/05/13 10:18] (current) rares.ciociea [2. Scheme Electrice și Maparea Pinilor] |
||
|---|---|---|---|
| Line 7: | Line 7: | ||
| ====== Descriere generală ====== | ====== Descriere generală ====== | ||
| - | <note tip> | + | <note> |
| - | {{:pm:prj2026:vlad.radulescu2901:schema_bloc.png?200|}} | + | {{:pm:prj2026:vlad.radulescu2901:schema_bloc.png?700|}} |
| **Descrierea sumara a modulelor si a modului de interactiune** | **Descrierea sumara a modulelor si a modului de interactiune** | ||
| Line 56: | Line 56: | ||
| *(Notă tehnică: Alimentarea logicii de 5V a microcontrolerului se face prin pinul de +5V al modulului L298N, acesta coborând tensiunea de 6V a bateriei printr-un regulator integrat).* | *(Notă tehnică: Alimentarea logicii de 5V a microcontrolerului se face prin pinul de +5V al modulului L298N, acesta coborând tensiunea de 6V a bateriei printr-un regulator integrat).* | ||
| - | (Schema eletrica) | + | {{:pm:prj2026:vlad.radulescu2901:schematic_provizoriu_ciociea_rares.png?500|}} |
| **Tabelul Conexiunilor Hardware (Pinout Map):** | **Tabelul Conexiunilor Hardware (Pinout Map):** | ||
| - | Pentru interfațarea senzorilor cu perifericele interne ale ATmega328P (Timere, ADC, USART, Întreruperi) s-a utilizat următoarea mapare: | + | Pentru interfațarea senzorilor cu perifericele interne ale ATmega328P s-a utilizat următoarea mapare: |
| ^ Modul Extern ^ Pin Modul ^ Conexiune ATmega328P ^ Rol / Periferic Utilizat ^ | ^ Modul Extern ^ Pin Modul ^ Conexiune ATmega328P ^ Rol / Periferic Utilizat ^ | ||
| | **Modul HC-05** | TX | PD0 (RXD) | Comunicație Serială (USART) | | | **Modul HC-05** | TX | PD0 (RXD) | Comunicație Serială (USART) | | ||
| | **Modul HC-05** | RX | PD1 (TXD) | Comunicație Serială (USART) | | | **Modul HC-05** | RX | PD1 (TXD) | Comunicație Serială (USART) | | ||
| - | | **L298N (Driver)** | ENA | PB1 (OC1A) | Control Viteză Motor Stânga (PWM Hardware) | | + | | **L298N (Driver)** | ENA | PD5 | Control Viteză Motor Stânga (PWM Hardware) | |
| - | | **L298N (Driver)** | ENB | PB2 (OC1B) | Control Viteză Motor Dreapta (PWM Hardware) | | + | | **L298N (Driver)** | ENB | PD6 | Control Viteză Motor Dreapta (PWM Hardware) | |
| - | | **L298N (Driver)** | IN1, IN2 | PD4, PD5 | Control Direcție Motor Stânga (GPIO) | | + | | **L298N (Driver)** | IN1, IN2 | PD4, PD7 | Control Direcție Motor Stânga (GPIO) | |
| - | | **L298N (Driver)** | IN3, IN4 | PD6, PD7 | Control Direcție Motor Dreapta (GPIO) | | + | | **L298N (Driver)** | IN3, IN4 | PB2, PB3 | Control Direcție Motor Dreapta (GPIO) | |
| - | | **Divizor Tensiune** | Vout (Intersecție) | PC0 (ADC0) | Monitorizare nivel baterie (ADC) | | + | | **Divizor Tensiune** | Vout (Intersecție) | PC0 (A0) | Monitorizare nivel baterie (ADC) | |
| - | | **TCRT5000** | A0 | PC1 (ADC1) | Detecție analogică margine (ADC) | | + | | **TCRT5000** | A0 | PC1 (A1) | Detecție analogică margine / podea (ADC) | |
| - | | **HC-SR04 (Senzori)** | Pinii Echo | PD2/PD3 (INT0/INT1) | Captură timp răspuns (Întreruperi Externe) | | + | | **HC-SR04 (Față)** | Trig, Echo | PD2, PD3 | Măsurare distanță față (GPIO) | |
| + | | **HC-SR04 (Stânga)** | Trig, Echo | PC2 (A2), PC3 (A3) | Măsurare distanță stânga (ADC folosit ca GPIO) | | ||
| + | | **HC-SR04 (Dreapta)** | Trig, Echo | PC4 (A4), PC5 (A5) | Măsurare distanță dreapta (ADC folosit ca GPIO) | | ||
| + | ===== 3. Diagrame de Semnal ===== | ||
| + | Pentru interfațarea corectă a perifericelor s-au analizat următoarele semnale cheie: | ||
| + | **A. Diagrama de semnal pentru senzorii HC-SR04 (Time-of-Flight)** | ||
| + | Microcontrolerul emite un impuls logic HIGH de 10µs pe pinul Trigger. Senzorul răspunde cu un semnal HIGH pe pinul Echo, a cărui durată este proporțională cu distanța. Această durată este măsurată hardware folosind întreruperile externe și un Timer. | ||
| - | ===== Software Design ===== | + | {{:pm:prj2026:vlad.radulescu2901:hc-sr04.png?800|}} |
| + | **B. Diagrama semnalului PWM pentru L298N** | ||
| + | Controlul locomoției și aplicarea metodei de "Soft Start" se realizează prin modularea lățimii impulsurilor (PWM) aplicate pe pinii ENA și ENB ai driverului, dictând astfel cuplul și viteza motoarelor. | ||
| - | <note tip> | + | {{:pm:prj2026:vlad.radulescu2901:l298n.png?800|}} |
| - | Descrierea codului aplicaţiei (firmware): | + | |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | ====== Software Design ====== |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | *(Nota: Aceasta sectiune prezinta o arhitectura de nivel inalt, detaliile urmand sa fie rafinate in etapa finala de implementare).* |
| - | * (etapa 3) surse şi funcţii implementate | + | |
| - | </note> | + | ===== 1. Mediu de dezvoltare ===== |
| + | Pentru scrierea, compilarea si incarcarea firmware-ului, mediul de dezvoltare ales este **Arduino IDE**. Desi platforma hardware este un ATmega328P Xplained Mini, ecosistemul Arduino ofera un flux de lucru mult mai rapid (Rapid Prototyping) si o sintaxa mai accesibila pentru gestionarea pinilor (GPIO) si a functiilor de timp, comparativ cu programarea stricta pe registri in Microchip Studio. | ||
| + | |||
| + | ===== 2. Librarii si surse 3rd-party ===== | ||
| + | Pentru a mentine un control strict asupra executiei si a minimiza overhead-ul, utilizarea librariilor externe va fi limitata la minimum necesar: | ||
| + | * Se va folosi exclusiv biblioteca standard **Arduino Core** (pentru functii de baza precum millis(), analogRead(), analogWrite(), digitalWrite()). | ||
| + | * Interfatarea cu senzorii ultrasonici si citirea nivelului bateriei se vor face prin metode standard, fara a importa librarii masive din surse terte. | ||
| + | * Optional, pentru modulul Bluetooth, se poate folosi libraria SoftwareSerial.h inclusa in pachetul standard Arduino. | ||
| + | |||
| + | ===== 3. Algoritmi si structuri de date planificate ===== | ||
| + | Aplicatia va fi proiectata pe o arhitectura **non-blocanta** (fara utilizarea instructiunii delay()), esentiala pentru reactia in timp real a robotului la datele primite de la senzori. | ||
| + | * **Multitasking cooperativ:** Se va utiliza functia millis() pentru a implementa "software timere". Acest algoritm permite procesorului sa citeasca senzorii, sa raporteze date prin Bluetooth si sa ajusteze PWM-ul motoarelor (aproape) simultan. | ||
| + | * **Masina de Stari Finita (FSM):** Structura principala de control va fi un bloc switch-case ce defineste comportamentul robotului. Starile planificate includ: MERGE_FATA, DETECTARE_PERETE, INTOARCERE_90_GRADE_ST/DR, ALINIERE_ZIG_ZAG, OPRIRE_URGENTA_MARGINI si LOW_BATTERY. | ||
| + | * **Algoritm de acoperire:** Logica FSM va dicta un traseu de tip zig-zag. La detectarea unui obstacol frontal, robotul va verifica senzorii laterali pentru a alege directia corecta de viraj, alternand intoarcerile stanga-dreapta. | ||
| + | ===== 4. Surse si functii implementate (Etapa 3) ===== | ||
| + | *(Sectiunea va fi completata cu fragmente de cod in momentul finalizarii dezvoltarii. Principalele functii planificate sunt:)* | ||
| + | * void setup() si void loop() - structura de baza Arduino. | ||
| + | * void readSensors() - responsabila de declansarea impulsurilor Trig si citirea duratei Echo, precum si citirea ADC pentru TCRT5000 si baterie. | ||
| + | * void motorControl(int vitezaStanga, int vitezaDreapta) - o functie de abstractizare ce transpune cerintele de miscare in semnale PWM si stari logice pentru driverul L298N. | ||
| + | * void updateFSM() - functia care proceseaza datele de la senzori si decide comutarea dintr-o stare in alta. | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| <note tip> | <note tip> | ||
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | To be determined. |
| </note> | </note> | ||
| Line 110: | Line 137: | ||
| <note> | <note> | ||
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | ===== Resurse Hardware (Datasheet-uri) ===== |
| + | * **ATmega328P Xplained Mini** - User Guide-ul oficial Microchip (utilizat pentru maparea pinilor fizici ai placii si schemele de alimentare): [[https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328P-Xplained-Mini-User-Guide-DS50002659B.pdf|ATmega328P Xplained Mini User Guide (PDF)]] | ||
| + | * **Microcontroler ATmega328P** - Datasheet complet (utilizat pentru intelegerea arhitecturii, registrilor interni, Timere, ADC, USART si intreruperi): [[https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P Datasheet (PDF)]] | ||
| + | * **Driver Motoare L298N** - STMicroelectronics Datasheet (consultat pentru limitele de curent, caderea de tensiune pe puntea H si logica de control): [[https://www.st.com/resource/en/datasheet/l298.pdf|L298N Datasheet (PDF)]] | ||
| + | * **Senzor Ultrasonic HC-SR04** - Specificatii tehnice (utilizat pentru extragerea diagramelor de semnal si a formulei de calcul a distantei bazate pe viteza sunetului): [[https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf|HC-SR04 Datasheet (PDF)]] | ||
| + | * **Modul Bluetooth HC-05** - Manual de utilizare (consultat pentru tensiunile de operare si pinii de comunicatie RX/TX): [[https://components101.com/sites/default/files/component_datasheet/HC-05%20Datasheet.pdf|HC-05 Datasheet (PDF)]] | ||
| + | * **Senzor Infrarosu TCRT5000** - Vishay Datasheet (utilizat pentru curbele de reflectie si intelegerea circuitului emitator-receptor): [[https://www.vishay.com/docs/83760/tcrt5000.pdf|TCRT5000 Datasheet (PDF)]] | ||
| + | * **Motoare DC cu Reductor (TT Motors 1:48)** - Specificatii generice pentru motoarele galbene de sasiu (utilizate pentru a calcula curentul de stall necesar a fi suportat de L298N): [[https://cdn.sparkfun.com/datasheets/Robotics/DG01D.pdf|TT Motor Datasheet (PDF)]] | ||
| + | |||
| + | ===== Resurse Software ===== | ||
| + | * **OCW UPB - Proiectare cu Microprocesoare:** Suportul teoretic de laborator pentru configurarea perifericelor hardware si notiuni de electronica: [[https://ocw.cs.pub.ro/courses/pm|ocw.cs.pub.ro/courses/pm]] | ||
| + | * **Arduino Reference:** Documentatia oficiala pentru arhitectura de cod si functiile standard (millis, pini I/O) utilizate in sistemul non-blocant: [[https://www.arduino.cc/reference/en/|Arduino Language Reference]] | ||
| + | * **WaveDrom:** Unealta utilizata pentru generarea diagramelor de semnal (timing diagrams) din sectiunea de Hardware Design: [[https://wavedrom.com/|wavedrom.com]] | ||
| </note> | </note> | ||
| <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> | ||