This shows you the differences between two versions of the page.
|
pm:prj2026:alexandru.predescu:andrei.tokacs [2026/05/16 23:21] andrei.cotiga |
pm:prj2026:alexandru.predescu:andrei.tokacs [2026/05/23 21:41] (current) andrei.cotiga [Download] |
||
|---|---|---|---|
| Line 3: | Line 3: | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| - | Proiectul constă într-un sistem electronic capabil să detecteze obiecte în apropierea unui vehicul și să alerteze utilizatorul prin semnale vizuale și sonore. Scopul proiectului este de a simula funcționarea senzorilor de parcare reali pentru a ajuta la prevenirea lovirii obstacolelor în timpul manevrelor. Ideea de la care am pornit a fost dorința de a implementa un sistem de siguranță auto folosinf componente accesibile și un microcontroler de tip ATmega328P. Acest proiect este util deoarece oferă o soluție de asistență în condiții de vizibilitate redusă sau spații înguste și reprezintă un exercițiu excelent pentru înțelegerea modului în care senzorii de proximitate interacționează cu un microcontroler prin intermediul timerelor. | + | Proiectul constă într-un sistem electronic capabil să detecteze obiecte în apropierea unui vehicul și să alerteze utilizatorul prin semnale vizuale și sonore. Scopul proiectului este de a simula funcționarea senzorilor de parcare reali pentru a ajuta la prevenirea lovirii obstacolelor în timpul manevrelor. Ideea de la care am pornit a fost dorința de a implementa un sistem de siguranță auto folosind componente accesibile și un microcontroler de tip ATmega328P. Acest proiect este util deoarece oferă o soluție de asistență în condiții de vizibilitate redusă sau spații înguste și reprezintă un exercițiu excelent pentru înțelegerea modului în care senzorii de proximitate interacționează cu un microcontroler prin intermediul timerelor. |
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| Line 50: | Line 50: | ||
| ::: | ::: | ||
| - | {{:pm:prj2026:alexandru.predescu:img-20260516-wa0030.jpg?600|}} | + | |
| + | {{:pm:prj2026:alexandru.predescu:poza1andr.jpeg?400|}} | ||
| ::: | ::: | ||
| ::: | ::: | ||
| - | {{:pm:prj2026:alexandru.predescu:img-20260516-wa0031.jpg?200|}} | + | |
| + | {{:pm:prj2026:alexandru.predescu:poza2andr.jpeg?400|}} | ||
| ::: | ::: | ||
| ::: | ::: | ||
| - | {{:pm:prj2026:alexandru.predescu:img-20260516-wa0032.jpg?600|}} | + | |
| + | {{:pm:prj2026:alexandru.predescu:poza3andr.jpeg?400|}} | ||
| ::: | ::: | ||
| Line 64: | Line 70: | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| - | <note tip> | + | Software-ul sistemului de asistență la parcare este implementat în limbajul C (abordare bare-metal, manipulând direct regiștrii microcontrolerului) și rulează pe ATmega328P. |
| - | Descrierea codului aplicaţiei (firmware): | + | |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | **Mediu de dezvoltare și librării:** |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * **Mediu:** Arduino IDE integrat cu pachetul extensie **MiniCore**, necesar pentru a asigura comunicarea cu programatorul hardware mEDBG de pe placa XMINI. |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * **Librării standard AVR:** `<avr/io.h>` (pentru definirea regiștrilor sistemului) și `<util/delay.h>` (pentru gestionarea pauzelor necesare senzorului). Nu s-au utilizat biblioteci terțe (precum funcțiile implicite Arduino), ci s-a preferat interacțiunea directă la nivel de hardware. |
| - | * (etapa 3) surse şi funcţii implementate | + | |
| - | </note> | + | **Fluxul principal și algoritmi implementați:** |
| + | Programul este structurat într-o buclă infinită care rulează următoarele module logice: | ||
| + | * **Inițializare Hardware (GPIO & Timere):** Se configurează direcția pinilor folosind regiștrii `DDRB` și `DDRD`. Timer-ul 1 este inițializat în modul Normal cu un prescaler de 8 pentru a oferi o rezoluție de 0.5 microsecunde per tick, necesară măsurării distanței. | ||
| + | * **Achiziție Date (HC-SR04):** Sistemul generează un puls scurt de 10 microsecunde pe pinul `Trig`. Ulterior, monitorizează pinul `Echo`. În momentul declanșării ecoului, contorul `TCNT1` este resetat. La finalizarea recepției, valoarea numărată este preluată și transformată matematic în centimetri (aplicând viteza sunetului). | ||
| + | * **Procesare și Semnalizare:** În funcție de distanța calculată, sistemul ia decizii bazate pe trei praguri (adaptate pentru testare pe birou: >20cm, 10-20cm, <10cm). LED-urile sunt comutate folosind registrul `PORTD`. | ||
| + | * **Generare Semnal Sonor (PWM Hardware):** Pentru buzzer-ul pasiv s-a utilizat Timer-ul 2 configurat în modul CTC (Clear Timer on Compare Match). Prin setarea registrului `OCR2A`, se comută automat starea pinului `PB3` (OC2A) pentru a genera o frecvență audibilă clară (aprox. 1kHz), controlând durata prin cod. | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| - | <note tip> | + | În urma realizării practice a proiectului și rulării codului pe placa ATmega328P XMINI, au fost obținute următoarele rezultate: |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | * **Măsurare precisă:** Citirea valorilor senzorului ultrasonic se realizează stabil, sistemul calculând cu acuratețe distanța până la obstacol folosind Timer-ul 1. |
| - | </note> | + | * **Răspuns vizual instantaneu:** Comutarea stării LED-urilor prin registrele I/O se face fără întârzieri perceptibile. Modulele auto-flash oferă un aspect dinamic sistemului. |
| + | * **Modulare sonoră funcțională:** Buzzer-ul pasiv emite tonuri la frecvența dorită. Frecvența repetării bip-urilor scade odată cu distanța, oferind un feedback acustic progresiv excelent. | ||
| + | * **Depanare hardware:** Pe parcursul implementării, s-a observat că prezența buzzer-ului pe pinul `PB3` bloca comunicarea ISP în faza de programare (eroare debugWIRE). Problema a fost rezolvată prin izolarea acestui pin în timpul procesului de *Upload*. | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | |||
| + | Proiectul demonstrează succesul integrării conceptelor fundamentale de la materia PM: manipularea porturilor de intrare/ieșire (GPIO), generarea de semnale și, cel mai important, utilizarea avansată a Timerelor pentru captură de date și generare PWM hardware (mod CTC). | ||
| + | |||
| + | Sistemul creat este complet funcțional, oferind o simulare precisă a unui senzor de parcare real. Modularitatea codului permite ca, pe viitor, pragurile de avertizare să fie scalate cu ușurință pentru un automobil de dimensiuni reale. | ||
| ===== Download ===== | ===== Download ===== | ||
| - | <note warning> | + | {{:pm:prj2026:alexandru.predescu:proeictpmandreitok.zip|}} |
| - | 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ă ;-). | + | |
| - | </note> | + | |
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| + | |||
| + | * **08.05.2026:** Alegerea temei de proiect, documentarea tehnică și achiziția componentelor hardware necesare. | ||
| + | * **16.05.2026:** Testarea modulelor și realizarea schemei electrice pe breadboard (conectarea senzorului, LED-urilor și a buzzer-ului la pinii dedicați ai plăcii XMINI). | ||
| + | * **23.05.2026:** Configurarea pachetului MiniCore. Scrierea codului C bare-metal, calibrarea timerelor pentru HC-SR04, rezolvarea interferenței hardware de pe pinul ISP și finalizarea paginii de wiki. | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| + | |||
| + | * Datasheet ATmega328P | ||
| + | * Datasheet Senzor Ultrasonic HC-SR04 | ||
| + | * Laboratorul 1 PM - Interfața GPIO | ||
| + | * Laboratorul 3 PM - Timere și Generare semnal PWM | ||
| <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> | ||