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:25]
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 76: Line 76:
 {{ :​pm:​prj2026:​florin.stancu:​poza2.png?​direct&​300 |}} {{ :​pm:​prj2026:​florin.stancu:​poza2.png?​direct&​300 |}}
  
-  * diagrame de semnal 
  
 +Butoane -> (Semnal Analogic prin divizor rezistiv) -> ADC Microcontroller
  
 +Microcontroller -> (Semnal Digital PWM) -> VCF
  
-===== Software Design =====+Microcontroller -> (Semnal Digital Gate) -> Generator Anvelopă
  
-<note tip>Descrierea codului aplicației ​(firmware):​ +Generator Anvelopă -> (Semnal Analogic ​de Control - CV) -> VCA
-  * 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 =====+VCF -> (Semnal Audio Analogic Netezit) -> VCA
  
-<note tip>Care au fost rezultatele obținute în urma realizării proiectului vostru.</​note>+VCA -(Semnal Audio Final) -TPA3110D2 (Amplificator) -> Difuzor
  
-===== Concluzii ===== 
  
-===== Cod sursă și alte resurse ce trebuie să existe pe GitHub ===== 
  
-Codul sursă trebuie urcat într-un ​repo publicrecomandăGitHub.+==== 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''​ și ''​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 și salvează valorile ​într-un ​bufferlă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 și redarea acestora pe baza unui BPM ajustabil în timp real printr-un potențiometru. 
 + 
 +Codul sursă complet și detaliile de implementare pot fi găsite pe repository-ul de GitHub ​asociat proiectului. 
 + 
 +===== Cod sursă ​ ===== 
 + 
 +https://​github.com/​strugariu/​proiect-pm/​tree/​main
  
-<note important>​Structurați-vă pagina de GitHub a proiectului pe mai multe directoare. De exemplu, creați un director numit **src** în care țineți tot codul sursă. Alt director **hardware** în care să țineți 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 
  
-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.1779744328.txt.gz · Last modified: 2026/05/26 00:25 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