Differences

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

Link to this comparison view

pm:prj2025:rnedelcu:dan_andrei.cretu03 [2025/04/29 09:41]
dan_andrei.cretu03 [Introducere]
pm:prj2025:rnedelcu:dan_andrei.cretu03 [2025/05/28 14:57] (current)
dan_andrei.cretu03 [Rezultate Obţinute]
Line 1: Line 1:
-Pedală de efect pentru chitară electrică +===== Pedală de efect pentru chitară electrică =====
-===== Introducere ​=====+
  
-<note tip> +<note tip>  
-Acest proiect constă în realizarea unei pedale de efect audio pentru chitară electrică, care aplică ​două efecte sonore:+Acest proiect constă în realizarea unei pedale de efect audio pentru chitară electrică, care aplică ​mai multe efecte sonore: 
 + 
 +Overdrive – pentru a satura semnalul și a obține un sunet distorsionat,​ specific rock-ului clasic.
  
-Overdrive ​– pentru a satura semnalul și a obține un sunet distorsionat,​ specific rock-ului clasic+Tremolo ​– pentru a modula volumul semnalului audio într-o manieră periodică.
  
-Tremolo ​– pentru a modula volumul semnalului audio într-o manieră periodică, controlabilă de utilizator+Reverb ​– simulează modul în care sunetul se reflectă și se estompează într-un spațiu închis.
  
-Efectele sunt controlate de un microcontroller STM32, folosind ​periferice ​precum ​ADC (pentru citirea potențiometrelor care controlează intensitatea fiecărui efect), PWM (pentru modularea semnalului audio în cazul tremolo-ului) și GPIO (pentru controlul ​on/off al efectelor prin butoane ​sau footswitch).+Efectele sunt controlate de un microcontroler Arduino UNO R3, folosind ​componente ​precum ​DAC (digital to analog converter), PWM (pentru modularea semnalului audio) și GPIO (pentru controlul ​selecției ​efectelor prin butoane).
  
 Scopul proiectului este de a crea o pedală de chitară digitală, compactă și personalizabilă,​ care poate fi utilizată în locul unor pedale comerciale, costisitoare sau rigide ca funcționalitate. Scopul proiectului este de a crea o pedală de chitară digitală, compactă și personalizabilă,​ care poate fi utilizată în locul unor pedale comerciale, costisitoare sau rigide ca funcționalitate.
Line 17: Line 18:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +<note tip> ​Proiectul meu presupune realizarea unei pedale de efect pentru chitară electrică care include efecte audio clasiceprecum overdrive ștremolo. Scopul pedalei este de a îmbunătățexperiențsonoră a chitaristului,​ aducând un sunet distorsionat (overdrive) și un efect de modulație al volumului (tremolo). Pedala va fi controlată printr-un microcontroler ​care va procesa semnalul audio. 
-O schemă bloc cu toate modulele proiectului vostruatât software cât şhardware însoţită ​de o descriere ​acestora precum şi a modului în care interacţionează.+Pedala va include următoarele module: 
 + 
 +Intrare și ieșire audio: Semnalul audio al chitarei va fi preluat și trimis prin intermediul jack-urilor audio standard. 
 + 
 +Microcontroler:​ Modulul principal de procesare a semnalului, care controlează efectele, prin algoritmi software. 
 + 
 +Selecție: Efectele pot fi selectate cu ajutorul unui buton. 
 + 
 +Interacțiunea dintre module: 
 +Semnalul audio intră în sistem prin jack-ul de intrare, este procesat de microcontroler,​ iar semnalul procesat iese prin jack-ul de ieșire. 
 + 
 +Utilizatorul poate ajusta efectele în timp real folosind butoane.
  
-Exemplu de schemă bloc: http://www.robs-projects.com/​mp3proj/​newplayer.html+Microcontrolerul controlează aplicațiile prin algoritmi.
 </​note>​ </​note>​
  
Line 28: Line 40:
 Listă de componente hardware Listă de componente hardware
  
-Microcontroller: ​STM32F103C8T6+Microcontroller: ​Arduino UNO R3
  
-Control ​analog2x Potențiometre liniare 10kΩ – pentru reglaj: gain (overdrive) și rate/Depth (tremolo)+Control: ​Buton simplu
  
-Intrare/​ieșire audio: +Intrare/​ieșire audio: 2x Jack mono 6.35mm (1/4”) cu pini PCB – pentru intrare/​ieșire chitară 
- ​- ​2x Jack mono 6.35mm (1/4”) cu pini PCB – pentru intrare/​ieșire chitară+  
 +Rezistențe si condensatoare pentru atenuare si filtrarea semnalului
  
- 2x Condensatori de cuplare audio (100nF – 1µF) – blocare componentă DC+Overdrive stage: DAC, unde ma intereseaza in mod special amplificatorul operational si diodele pentru amplificarea si clipping-ul semnalului
  
-Rezistențe 10kΩ – 100kΩ – pentru atenuare și biasare semnal audio+Fire
  
-Overdrive stage: +Rezistenta de 5k legata la masa creeaza un divizor de tensiune, stabilizand semnalul ce vine de la chitara.
- - 2x Diodă 1N4148 / LED-uri rosii (clipping simetric) – pentru distorsionare semnal+
  
- - Op-amp (ex: LM358, TL072, NE5532) – opțional, dacă vrei overdrive analog (în loc de simulare digitală)+Condensatorul ​de 0.47 µF de la intrare protejeaza restul componentelor de tensiuni nedorite si pastreaza numai variatiile audio utile. (cel putin in teorie)
  
-Tremolo stage: +Filtrul trece jos de la iesire elimina zgomotele nedorite.
-PWM pin de la microcontroller – pentru modulație volum+
  
- - 1x MOSFET N-channel (ex2N7000 sau IRF540N) – control volum semnal+{{:pm:​prj2025:​rnedelcu:​hardware_pedala.jpeg?​600|}} 
 +</​note>​
  
- - 1x Condensator electrolitic (10µF – 100µF) – smoothing PWM dacă ai nevoie+===== Software Design =====
  
-Alte periferice: 
- - LCD I2C 16x2 – afișaj pentru parametri efect 
  
- Encoder rotativ sau butoane – opționalpentru schimbare moduri/​parametri+<note tip> 
 +Software-ul este scris în limbajul Arduino și rulează pe un microcontroller Arduino UNO R3. Acesta procesează semnalul audio de la o chitară electrică în timp real și aplică unul dintre cele cinci efecte sonore: bypassoverdrive, tremolo și reverb.
  
- - Buzzer piezo – opțional, semnal de pornire/​operații+Structura principală a programului include:
  
-Alimentare:​ +Citirea semnalului audio analogic ​de la chitară (pin A0).
- - Sursă ​de alimentare 9V DC sau baterie+
  
- - Regulator de tensiune 3.3V/5V (AMS1117 sau LM7805) – în funcție de cerințele microcontrollerului+<code c++> 
 +lastButtonState = buttonState;​
  
-Conectică & prototipare:​ +  unsigned int raw = analogRead(ADC_PIN);​ 
- ​- ​Breadboard mare+  raw = (raw + 1) / 4 1;
  
- - Fire jumper+  unsigned int out = applyEffect(((float)raw) / SIGNAL_MAX) * SIGNAL_MAX;​ 
 +</​code>​
  
- - Pin headers+Prelucrarea semnalului prin funcții specifice fiecărui efect audio (distorsiune,​ tremolo, reverb etc.).
  
- - Fire audio ecranate (pentru conexiuni curate)+ * Tremolo
  
- - LED pentru stare sistem+<code c++>
  
- Rezistență 330Ω pentru LED+int index = 0; 
 +float applyTremolo(float x) { 
 +  // version 1 
 +  index++;
  
 +  float Fs = TIMER / 8.0f;
 +  float Fx = 5.0f;
 +  float alpha = 0.25f;
 +  float trem = (1.1f + alpha * sin(2.0f * M_PI * index * (Fx / Fs)));
  
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +  ​return trem x * 2.0f; 
-  * diagrame de semnal  +}
-  * rezultatele simulării +
-</​note>​+
  
-===== Software Design =====+</​code>​
  
  
-<note tip+ * Overdirve 
-Descrierea codului aplicaţiei ​(firmware): + 
-  * mediu de dezvoltare ​(if any) (e.gAVR Studio, CodeVisionAVR+<code c++
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib+float applyDistortion(float x{ 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi +  ​*= 1.75f; 
-  ​(etapa 3surse şi funcţii implementate+ 
 +  if (x > 1.0f) x = 1.0f; 
 +  ​if (x < 0.0fx = 0.0f; 
 + 
 +  float y; 
 +  if (x < 0.2f) 
 +    y = 0.0f; 
 +  else if (x > 0.7f) 
 +    y = 1.0f; 
 +  ​else 
 +    y = x x * (3 2 * x);  // Smooth curve in between 
 + 
 +  return y; 
 +
 +</​code>​ 
 + 
 + * Reverb 
 + 
 +<code c++> 
 +uint8_t reverbBuffer[REVERB_BUFFER_SIZE];​ 
 +int reverbIndex = 0; 
 +float applyReverb(float x
 +  // Read the delayed sample from buffer 
 +  int delayedIndex = (reverbIndex - REVERB_DELAY + REVERB_BUFFER_SIZE) % REVERB_BUFFER_SIZE;​ 
 +  float delayedSample = reverbBuffer[delayedIndex] / 255.0f; 
 + 
 +  // Mix current input with decayed delayed sample 
 +  ​float out = x + REVERB_DECAY ​delayedSample;​ 
 + 
 +  // Store current output in the buffer 
 +  reverbBuffer[reverbIndex] = (uint8_t)(adjustAmplitude(out) * 255); 
 +  reverbIndex = (reverbIndex + 1) % REVERB_BUFFER_SIZE;​ 
 + 
 +  return adjustAmplitude(out);​ 
 +
 +</​code>​ 
 + 
 +Scrierea semnalului procesat ​pe un DAC extern (PCF8591) pentru ieșirea audio analogică
 + 
 +Controlul efectului activ printr-un buton fizic conectat la pinul A1 – fiecare apăsare schimbă efectul curent. 
 + 
 +<code c++> 
 +   int buttonState = digitalRead(BUTTON);​ 
 +    
 +   if (lastButtonState == HIGH && buttonState == LOW) { 
 +     ​currentEffect = (currentEffect + 1) % MAX_EFFECT; ​ // Next effect 
 +     ​Serial.println(currentEffect)
 +     ​delay(200);​ // Debounce simplu 
 +   } 
 +    
 +   ​lastButtonState = buttonState;​ 
 +</​code>​ 
 + 
 +Algoritmi de procesare audio implementațîn funcții dedicate fiecărui efect, folosind formule matematice simple și buffer circular (pentru reverb). 
 + 
 +<code c++> 
 +#define ADC_PIN A0        // Analog input from guitar signal 
 +#define BUTTON A1 
 +#define SIGNAL_MAX 255 
 + 
 +#define TIMER 15625 
 + 
 +#define REVERB_BUFFER_SIZE 1000  // Adjust based on available RAM 
 +#define REVERB_DECAY 0.75f       // How much of the echo is preserved 
 +#define REVERB_DELAY 800         // How far back in time (in samples) the echo is 
 + 
 +#define MAX_EFFECT 5 
 +</​code>​ 
 + 
 +Acest software permite utilizatorului să comute dinamic între efecte și să obțină sunete expresive folosind doar hardware minim și procesare digitală în timp real. 
 </​note>​ </​note>​
  
Line 96: Line 183:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Dupa multe incercari, am reusit sa ajung la o versiune finala. 
 + 
 +Partea de hardware ramas mai simpla decat ce mi-as fi dorit, fara valori reglate prin potentiometru. 
 + 
 +Am experimentat cu mai multe efecte, cele mai reusite fiind cel de distors, tremolo si reverb. 
 + 
 +Nu am reusit sa filtrez suficient de bine semnalul astfel incat semnalul ajuns la amplificator sa fie curat. 
 + 
 + * ADC - analogRead() 
 + 
 + * I2C - comunicarea cu DAC-ul 
 + 
 + * GPIO - pinMode 
 + 
 + * timere pentru tremolo 
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Nu am. 
 +}===== Download =====
  
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +{{:pm:prj2025:rnedelcu:proiect_hau.zip|}}
- +
-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**.+
 </​note>​ </​note>​
  
pm/prj2025/rnedelcu/dan_andrei.cretu03.1745908870.txt.gz · Last modified: 2025/04/29 09:41 by dan_andrei.cretu03
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