Differences

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

Link to this comparison view

pm:prj2025:fstancu:cristina.drinciu [2025/05/25 18:05]
cristina.drinciu [Software Design]
pm:prj2025:fstancu:cristina.drinciu [2025/05/30 13:42] (current)
cristina.drinciu [Hardware Design]
Line 103: Line 103:
 {{:​pm:​prj2025:​fstancu:​poza2_amp.jpg?​350 |}} {{:​pm:​prj2025:​fstancu:​poza4_amp.jpg?​350|}} {{:​pm:​prj2025:​fstancu:​poza2_amp.jpg?​350 |}} {{:​pm:​prj2025:​fstancu:​poza4_amp.jpg?​350|}}
 {{:​pm:​prj2025:​fstancu:​poza3_amp.jpg?​350 |}} {{:​pm:​prj2025:​fstancu:​poza1_amp.jpg?​350|}} {{:​pm:​prj2025:​fstancu:​poza3_amp.jpg?​350 |}} {{:​pm:​prj2025:​fstancu:​poza1_amp.jpg?​350|}}
 +{{:​pm:​prj2025:​fstancu:​final_project1.jpeg?​350|}} {{:​pm:​prj2025:​fstancu:​final_project.jpeg?​350|}}
  
 Link catre poze si video demonstrativ:​ [[https://​drive.google.com/​drive/​folders/​1RUL_uXa5XXPFie1JvUg6ljKmbEH5EQQS | aici ]] Link catre poze si video demonstrativ:​ [[https://​drive.google.com/​drive/​folders/​1RUL_uXa5XXPFie1JvUg6ljKmbEH5EQQS | aici ]]
Line 143: Line 144:
 === I2C (TWI) === === I2C (TWI) ===
 __//​Rol://​__ Interfața I²C (TWI) generică, folosită pentru a comunica cu DAC-ul MCP4725 la ~400 kHz. __//​Rol://​__ Interfața I²C (TWI) generică, folosită pentru a comunica cu DAC-ul MCP4725 la ~400 kHz.
 +
 +{{:​pm:​prj2025:​fstancu:​amp_twcr.png?​500|}}
  
 Ce face fiecare functie: Ce face fiecare functie:
Line 267: Line 270:
  
 __//​Rol://​__ Preluare continuă de semnal analogic și declanșare ISR pentru procesare. __//​Rol://​__ Preluare continuă de semnal analogic și declanșare ISR pentru procesare.
 +
 +{{:​pm:​prj2025:​fstancu:​amp_admux.png?​500|}}
 +
 +{{:​pm:​prj2025:​fstancu:​amp_adcsra.png?​500|}}
 +
 +{{:​pm:​prj2025:​fstancu:​amp_adcsrb.png?​500|}}
 +
  
 Avem urmatoarele setari pentru registre: Avem urmatoarele setari pentru registre:
Line 327: Line 337:
       * DAC → ieșire audio analogic       * DAC → ieșire audio analogic
  
-===== Rezultate Obţinute =====+===== Rezultate Obţinute ​si Performanta ​=====
  
-<note tip> +Amplificatorul functioneaza destul de bine, putand sa genereze un semnal audio destul de bun
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+Chiar daca am incercat sa lucrez la o frecventa destul de ridicata pentru a avea un sample rate cat mai mare, notele joase sunt redate foarte clar iar cele mai inalte sunt redate o idee mai prost, avand o frecventa destul de mare si masuratorile nu sunt atat de accurate.
-</​note>​+
  
-===== Concluzii =====+=== Optimizarile folosite pentru a obtine performante si imbunatiri care pot fi adaugate ​===
  
-===== Download =====+**1) Free-Running ADC**
  
-<note warning>​ +  * Folosim ADC în Free-Running Mode pentru conversii continue la rata stabilită de prescalerfără a reporni manual conversia la fiecare eşantion.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute ​în urma realizării proiectului:​ sursescheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă pe wiki folosind facilitatea ​**Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +  ​Avantaj: latență minimă între eşantioane și utilizare eficientă a CPU în ISR
-</​note>​+
  
 +
 +**2) Intreruperi**
 +
 +  * toată logica de procesare audio (distorsiune,​ tremolo, delay) se execută în ISR(ADC_vect),​ eliminând buclele de polling
 +
 +  * debounce butoane și toggle LED se fac în ISR-uri separate (PCINT2 si TIMER0), evitând blocarea buclei principale.
 +
 +
 +**3) Math Library**
 +
 +  * Tremolo folosește sinf() din <​math.h>,​ costisitor în cicluri CPU
 +
 +  * Pentru o versiune și mai rapidă, se poate înlocui cu un tabel de valori pre-calculate (lookup table) pentru LFO.
 +
 +
 +**4) Buffer Circular Fix-Size pentru Delay**
 +
 +  * Delay folosește un buffer circular simplu, cu indexare modulară, pentru acces și scriere în timp constant (O(1)).
 +  * Dimensiunea buffer-ului (980) este un compromis între intârziere perceptibilă și consum de memorie SRAM (≈2 KB).
 +
 +=== Frecvente ale proiectului ===
 +
 +**1) Rata de eşantionare ADC: ~10 kHz**
 +
 +Prescaler ADC = 64 la 16 MHz → ADC clock ≈ 250 kHz → 25 cicluri pe conversie → ~10 k conversii/​s,​ fiind suficient pentru frecventele relevante ala chitarii.
 +
 +**2) LFO Tremolo: 5 Hz**
 +
 +Frecvență perceptibilă plăcută de modulare de volum. Phase increment pre-calculatează saltul de fază pe eşantion, fără recalcule de frecvență în timp real.
 +
 +**3) Timer Debounce: 1 kHz (1 ms tick)**
 +
 +Asigură o rata de debounce robustă în maxim 50 ms fără pierderi de evenimente.
 +
 +**4) I2C (TWI): ~400 kHz**
 +
 +Comunicarea cu DAC la fast-mode pentru a corespunde celor 10 k eşantioane/​s și overhead-ul I2C.
 +
 +=== Estimarea Consumului de Putere ===
 +
 +  * Microntroller ATmega328P in mod normal (16 MHz, Vcc = 5 V): ~10–20 mA
 +  ​
 +  *  DAC MCP4725: ~0.5 mA
 +  ​
 +  *  LM358: fiecare canal ~0.7 mA
 +
 +  *  LED-uri și Butoane: LED-uri aprinse (3 × 2 mA) = ~6 mA maxim
 +  ​
 + ​**Total:​**  ​
 +I_total​≈15mA (MCU)+1mA (DAC)+2mA (LM358)+6mA (LED)**≈24mA**
 +
 +**Putere:**
 +P=V×I≈5V×24mA=**120mW**
 +
 +
 +===== Concluzii =====
 +
 +Acest proiect a fost o modalitate perfecta de a aprofunda cunostiintele atat de proiectarea microprocesoarelor,​ a laboratoarelor de la aceasta materie, cat si mai important, cunostiintele de electronica. Constructia partii de HARDWARE a fost o provocare. In final, sunt multumita de outcome. :-D
 ===== Jurnal ===== ===== Jurnal =====
  
Line 349: Line 414:
 18 Mai: Descriere detaliata pentru hardware si modificare liste de componente. ​ 18 Mai: Descriere detaliata pentru hardware si modificare liste de componente. ​
  
 +25 Mai: Decriere detaliata Software + estimarea puterii consumate si optimizarile facute
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +Datasheet LM358: [[https://​www.onsemi.com/​download/​data-sheet/​pdf/​lm358-d.pdf | LINK]] 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+ 
-</note>+Datasheet MCP4725: [[https://​ww1.microchip.com/​downloads/​en/​devicedoc/​22039d.pdf | LINK]] 
 + 
 +Datasheet ArduinoUno ATmega328p: [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf | LINK]]
  
 <​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>​
  
 +
 +{{:​pm:​prj2025:​fstancu:​pm_amp.zip| Arhiva aici}}
pm/prj2025/fstancu/cristina.drinciu.1748185546.txt.gz · Last modified: 2025/05/25 18:05 by cristina.drinciu
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