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

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):

  • Datasheet ATmega324P - Baza pentru maparea regiștrilor și a vectorilor de întrerupere.
  • Datasheet ST7735 - Comenzile HEX pentru inițializarea matricei de pixeli.
  • Datasheet DS3231 - Structura regiștrilor interni pentru timp (ore, minute, secunde).
  • Datasheet PAM8403 - Specificații alimentare și atenuare zgomot pe intrări.
  • Datasheet BC547 - Curbele de răspuns pentru transferul sarcinii prin baza tranzistorului.

Suport Curs/Laborator (PM OCW):

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