Differences

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

Link to this comparison view

pm:prj2026:bianca.popa1106:stefan.stan [2026/05/10 00:00] (current)
stefan.stan2907 created
Line 1: Line 1:
 +====== SonicThreshold:​ Digital Hearing Tracker ======
 +**Student:​** Stan Ștefan Corneliu \\
 +**Grupa:** 332CA
  
 +===== 1. Viziune de ansamblu =====
 +
 +**SonicThreshold** este un instrument digital portabil conceput pentru evaluarea rapidă a sensibilității auditive umane. Acesta generează tonuri de test pe patru frecvențe esențiale din spectrul audibil (500Hz, 1000Hz, 2000Hz, 4000Hz), crescând automat și liniar intensitatea sonoră. ​
 +
 +Sistemul interacționează direct cu utilizatorul:​ în momentul perceperii sunetului, persoana testată acționează un buton de declanșare. Microcontrolerul captează instantaneu acest eveniment, salvează nivelul amplitudinii semnalului (pragul de auz) și trece la frecvența următoare. La finalizarea ciclului, dispozitivul afișează sumarul rezultatelor pe un ecran TFT și exportă datele structurate către un PC pentru analiză.
 +
 +**Motivație și Utilitate:​**
 +Proiectul a luat naștere din dorința de a construi un sistem complet care face puntea între procesarea digitală și semnalele analogice, folosind resursele unui microcontroler pe 8 biți. Este util ca instrument demonstrativ de acustică și ca soluție de screening auditiv rapid, fără a depinde de echipamente de laborator complexe.
 +
 +===== 2. Arhitectura Sistemului =====
 +
 +{{ :​pm:​prj2026:​bianca.popa1106:​stefan.stan:​schema_bloc.png?​500 |Arhitectura Hardware SonicThreshold}}
 +
 +Sistemul este centrat în jurul microcontrolerului **ATmega324P**,​ care coordonează următoarele blocuri funcționale:​
 +  * **Interfața de Intrare:** Butoane tactile (start test / înregistrare prag) și un potențiometru analogic pentru reglajul dinamic al vitezei de testare.
 +  * **Sinteza Audio:** Un circuit format dintr-un tranzistor BC547 și un filtru RC, care combină un semnal de frecvență fixă cu un semnal PWM variabil pentru a modula amplitudinea,​ trimis mai departe către un amplificator PAM8403 și o pereche de căști.
 +  * **Afișaj și Semnalizare:​** Un ecran LCD SPI (ST7735) pentru ghidare vizuală și un LED RGB pentru indicarea stării mașinii de stări interne.
 +  * **Stocare timp și Date:** Un modul RTC pe I2C pentru preluarea datei exacte a examinării și o interfață UART pentru exportul serial.
 +
 +===== 3. Implementare Hardware =====
 +
 +^ Componentă principală ^ Rol în circuit ^ Cantitate ^
 +| **ATmega324P** (12 MHz) | Unitatea logică centrală (placă de laborator) | 1 |
 +| **ST7735 TFT 1.8"** | Interfața grafică (afișare progres și rezultate) | 1 |
 +| **DS3231 RTC** | Generare timestamp precis pentru log-uri | 1 |
 +| **PAM8403** | Amplificator audio Clasa D pentru ieșirea de căști | 1 |
 +| **Tranzistor BC547** | Modulator în amplitudine (controlat prin PWM) | 1 |
 +| **Potențiometru 10kΩ** | Reglaj viteză rampă volum | 1 |
 +| **Jack audio mamă 3.5mm** | Conexiune pentru căști standard (32Ω) | 1 |
 +| **LED RGB (Anod Comun)** | Indicator stare sistem (Standby, Rulare, Finalizat) | 1 |
 +| **Componente pasive** | Rezistențe (1kΩ, 10kΩ) și condensator (100nF) pt. filtru | 1 set |
 +
 +===== 4. Design Software =====
 +
 +Logica este scrisă în C, utilizând **AVR-GCC**,​ fiind structurată strict pe arhitectura perifericelor ATmega324P abordate în timpul laboratoarelor:​
 +
 +  * **Lab 0 (GPIO):** Configurarea porturilor pentru citirea butoanelor (cu rezistențe de pull-up activate intern) și comanda stărilor LED-ului RGB.
 +  * **Lab 1 (UART):** Implementarea transmisiei seriale (baud rate 9600) pentru trimiterea pragurilor auditive în format CSV (ex: ``1000, 45``) către un terminal PC.
 +  * **Lab 2 (Întreruperi):​** Maparea butonului de confirmare a auzului pe întreruperea hardware **INT0**, garantând o latență minimă la salvarea volumului curent. Se folosește și întreruperea de *Overflow* a Timer1 pentru generarea precisă a rampei de creștere a volumului la intervale egale.
 +  * **Lab 3 (Timere și PWM):** Nucleul generării audio. **Timer0** este folosit în modul CTC (Clear Timer on Compare Match) pentru a asigura un *toggle* hardware pur la frecvențele țintă (500, 1000, 2000, 4000 Hz). Independent,​ **Timer2** rulează în mod Fast PWM pentru a ajusta factorul de umplere (duty cycle), dictând astfel volumul semnalului.
 +  * **Lab 4 (ADC):** Configurarea Convertorului Analog-Digital pentru a citi o valoare de la 0 la 1023 de pe potențiometru,​ valoare ce este mapată matematic pentru a accelera sau încetini ritmul testului.
 +  * **Lab 5 (SPI):** Inițializarea și comunicarea de mare viteză cu ecranul ST7735 pentru a desena texte, axe și bare de progres în timp real.
 +  * **Lab 6 (I2C):** Protocolul de citire a regiștrilor de timp și dată din modulul DS3231 la momentul apăsării butonului de "​Start"​.
 +
 +===== 5. Jurnal de Dezvoltare =====
 +
 +^ Perioadă ^ Obiectiv ^ Status ^
 +| Mai 2026 | Schițarea arhitecturii,​ trasarea schemei bloc și plasarea comenzilor pentru piese. | Realizat |
 +| TBD | Asamblarea circuitului de modulare și filtrare pe breadboard; validare semnal la osciloscop. | Planificat |
 +| TBD | Scrierea firmware-ului pentru generarea semnalelor (Timere, PWM) și controlul ADC-ului. | Planificat |
 +| TBD | Integrarea driverelor pentru ecranul ST7735 (SPI) și ceasul RTC (I2C). | Planificat |
 +| TBD | Implementarea mașinii de stări (Întreruperi,​ UART), asamblare finală și optimizare cod. | Planificat |
 +
 +===== 6. Bibliografie și Resurse =====
 +
 +==== Resurse Tehnice (Datasheet-uri):​ ====
 +  * [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-8272-8-bit-AVR-microcontroller-ATmega164A_PA-324A_PA-644A_PA-1284_P_datasheet.pdf|Datasheet ATmega324P]] - Baza pentru maparea regiștrilor și a vectorilor de întrerupere.
 +  * [[https://​www.displayfuture.com/​Display/​datasheet/​controller/​ST7735.pdf|Datasheet ST7735]] - Comenzile HEX pentru inițializarea matricei de pixeli.
 +  * [[https://​datasheets.maximintegrated.com/​en/​ds/​DS3231.pdf|Datasheet DS3231]] - Structura regiștrilor interni pentru timp (ore, minute, secunde).
 +  * [[https://​www.diodes.com/​assets/​Datasheets/​PAM8403.pdf|Datasheet PAM8403]] - Specificații alimentare și atenuare zgomot pe intrări.
 +  * [[https://​www.onsemi.com/​pdf/​datasheet/​bc546-d.pdf|Datasheet BC547]] - Curbele de răspuns pentru transferul sarcinii prin baza tranzistorului.
 +
 +==== Suport Curs/​Laborator (PM OCW): ====
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab0|Lab 0: GPIO]] - Structura porturilor și manipulare biți.
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab1|Lab 1: USART]] - Setare Baud Rate și trimitere caractere.
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab2|Lab 2: Întreruperi]] - Gestiunea rutinelor ISR (Interrupt Service Routine).
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3|Lab 3: Timere și PWM]] - Setări prescalere pentru CTC și Fast PWM.
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab4|Lab 4: ADC]] - Multiplexare canal intern și citire ADCH/ADCL.
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab5|Lab 5: SPI]] - Registrele SPCR și SPSR pentru master mode.
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6|Lab 6: I2C (TWI)]] - Semnale START/STOP și adresare slave.
pm/prj2026/bianca.popa1106/stefan.stan.txt · Last modified: 2026/05/10 00:00 by stefan.stan2907
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