Differences

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

Link to this comparison view

pm:prj2026:florin.stancu:cosmin.strugariu [2026/05/26 00:24]
cosmin.strugariu [Hardware Design]
pm:prj2026:florin.stancu:cosmin.strugariu [2026/05/26 01:23] (current)
cosmin.strugariu [Cod sursă și alte resurse ce trebuie să existe pe GitHub]
Line 42: Line 42:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip>Aici puneți tot ce ține de hardware design: +Listă de componente
-  * listă de componente+
  
 ^ Reference ^ Qty ^ Value ^ ^ Reference ^ Qty ^ Value ^
Line 74: Line 73:
 | U6 | 1 | Modul Amplificator Audio TPA3110D2 | | U6 | 1 | Modul Amplificator Audio TPA3110D2 |
  
-  * scheme electrice. Recomandăm să folosiți o aplicație dedicată pentru desenarea schemei electrice (KiCAD, Altium, Fusion360 etc.) sau, în cel mai rău caz, o diagramă desenată în Fritzing, Wokwi sau Tinkercad. 
 {{ :​pm:​prj2026:​florin.stancu:​poza1.png?​direct&​300 |}} {{ :​pm:​prj2026:​florin.stancu:​poza1.png?​direct&​300 |}}
 +{{ :​pm:​prj2026:​florin.stancu:​poza2.png?​direct&​300 |}}
  
-  * diagrame de semnal 
  
-  * rezultatele simulării din Wokwi sau Tinkercad ​(dacă este posibilă simularea)+Butoane -> (Semnal Analogic prin divizor rezistiv-ADC Microcontroller
-</note>+
  
-===== Software Design =====+Microcontroller -> (Semnal Digital PWM) -> VCF
  
-<note tip>Descrierea codului aplicației ​(firmware)+Microcontroller -> (Semnal Digital Gate) -> Generator Anvelopă
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, PlatformIO) +
-  * biblioteci și surse 3rd-party folosite (e.g. Procyon AVRlib) +
-  * algoritmi și structuri pe care plănuiți să le implementați +
-  * (etapa 3) surse și funcții implementate +
-</​note>​+
  
-===== Rezultate Obținute =====+Generator Anvelopă -> (Semnal Analogic de Control - CV) -> VCA
  
-<note tip>Care au fost rezultatele obținute în urma realizării proiectului vostru.</​note>+VCF -(Semnal Audio Analogic Netezit) -VCA
  
-===== Concluzii =====+VCA -> (Semnal Audio Final) -> TPA3110D2 (Amplificator) -> Difuzor
  
-===== Cod sursă și alte resurse ce trebuie să existe pe GitHub ===== 
  
-Codul sursă trebuie urcat într-un repo public, recomandăm GitHub. 
  
-<note important>​Structurați-vă pagina de GitHub a proiectului ​pe mai multe directoareDe exemplu, creațun director numit **src** în care țineți tot codul sursă. Alt director ​**hardware** în care să ținețschemele ​și diagramele ​și alt director numit **images** în care să puneți toate fotografiile cu proiectul vostru, ​pe care le link-ați în README.md+==== Software Design ==== 
 + 
 +Proiectul a fost dezvoltat folosind mediul **PlatformIO**. 
 + 
 +Arhitectura aplicației este de tip **Interrupt-Driven** (bazată pe întreruperi) și folosește **Mașini de Stări (State Machines)** pentru logica principalăSistemul este împărțit în următoarele module cheie: 
 + 
 +  * **Managementul Timpului:** **Timer0** este configurat să genereze o întrerupere la exact 1 milisecundă. Aici se incrementează ​un contor global (''​systicks''​),​ folosit ulterior pentru calculul BPM-ului din sequencer și pentru debouncing-ul clapelor. 
 +  ​* **Generarea Audio (Hardware PWM):** Sunetul este generat folosind **Timer1** setat în modul Fast PWM. Frecvența notelor este calculată dinamic pe baza butoanelor apăsate, ajustând regiștrii ''​ICR1''​ ș''​OCR1A''​ pentru a obține nota dorită direct pe pinul de output, fără intervenția procesorului. 
 +  ​* **Citirea Senzorilor (ADC non-blocant):​** Conversia analog-digitală pentru butoane și potențiometre se face prin întreruperi (''​ADC_vect''​). ADC-ul scanează ciclic canalele șsalvează valorile într-un buffer, lăsând bucla principală (''​main''​) liberă să proceseze doar logica. 
 +  * **Logica Sintetizatorului ​și Sequencer-ului:​** 
 +    * **Clapele:​** Fiecare "​canal"​ analogic trece prin stările ''​IDLE'',​ ''​SETTLING'' ​și ''​PLAYING''​ pentru a elimina zgomotul (noise floor) și a stabiliza nota. 
 +    ​* **Sequencer-ul:​** Implementează stările ''​FREE_PLAY'',​ ''​RECORDING''​ și ''​PLAYBACK''​. Permite înregistrarea unei secvențe de note într-un array șredarea acestora ​pe baza unui BPM ajustabil în timp real printr-un potențiometru. 
 + 
 +Codul sursă complet șdetaliile de implementare pot fi găsite pe repository-ul de GitHub asociat proiectului. 
 + 
 +===== Cod sursă ​ ===== 
 + 
 +https://​github.com/​strugariu/​proiect-pm/​tree/​main 
  
-Pagina de GitHub a proiectului vostru trebuie să conțină **toate** fișierele relevante pentru realizarea proiectului vostru. Dacă există resurse externe pe care le-ați folosit, vă rugăm să le link-ați în README.md</​note>​ 
  
-<note important>​Sunteți încurajați să filmați un demo cu proiectul vostru și să îl încărcați pe YouTube. Faceți embed la video în README.md și în pagina de wiki OCW a proiectului vostru.</​note>​ 
  
-===== Jurnal ===== 
  
-<note tip>​Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** și **Resurse Hardware**.</note>+[[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf]] 
 + 
 +[[https://​www.ti.com/​lit/​ds/​symlink/​lm358.pdf]] 
 + 
 +[[https://​www.ti.com/​lit/​ds/​symlink/​tl072.pdf]] 
 + 
 +[[https://​www.ti.com/​lit/​ds/​symlink/​ua78.pdf?​ts=1779730004215]] 
 + 
 +[[https://​analogoutputblog.wordpress.com/​2022/​05/​04/​how-to-vactrol/​]] 
 + 
 +[[https://​www.ti.com/​lit/​an/​sboa226/​sboa226.pdf?​ts=1779690038815]] 
 + 
 +[[https://​synthnerd.wordpress.com/​2016/​04/​06/​envelope-circuits-a-simple-ar-design-using-op-amps/]] 
 + 
 +Placa de PM
pm/prj2026/florin.stancu/cosmin.strugariu.1779744261.txt.gz · Last modified: 2026/05/26 00:24 by cosmin.strugariu
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