This is an old revision of the document!


Electric guitar effect AMP - DRÎNCIU Cristina

Introducere

Proiectul constă într-un procesor de efecte audio digital pentru chitară electrică, realizat cu ajutorul unui Arduino UNO (ATmega328), care aplică efecte audio (ex: distorsiune, tremolo, delay) semnalului de la chitară.

Scopul proiectului este de a oferi o soluție accesibilă și personalizabilă pentru chitariști, care le permite să adauge diverse efecte audio chitarii lor folosind un procesor digital realizat cu Arduino. Proiectul își propune să înlocuiască echipamentele de efecte tradiționale costisitoare, oferind un control total asupra parametrilor fiecărui efect.

În plus, proiectul permite extinderea prin adăugarea de noi efecte sau îmbunătățiri, ceea ce îl face o platformă ideală pentru învățare și experimentare continuă.

Flow

Chitara se va conecta la procesorul de efecte printr-o mufa Jack 6.3 mm. Procesorul are 3 butoane si 3 LEDs care reprezinta cate un efect:

  • Rosu - Distortion
  • Verde - Tremollo
  • Albastru - Delay

Deoarece semnalul de la chitara este unul slab, acesta va trece printr-un amplificator LM358. Apoi va trece in convertorul ADC din Arduino, procesat, iar apoi trimis la convertorul DAC MCP4725, apoi se poate alege volumul care trece ca output prin a doua mufa jack 6.3 mm unde va fi conectata o boxa.

Schema bloc

Hardware Design

Componente principale:

  • Arduino UNO (cu ATmega328) – 1 buc
    • Utilizat pentru controlul efectelor și procesarea semnalului audio.
  • LM358 (Op-Amp dual, DIP8) – 1 buc
    • Înlocuiește TL072 pentru preamplificarea audio, funcționează la 5V.
  • MCP4725 (DAC 12-bit I2C) – 1 buc
    • Convertor digital-analog pentru ieșirea semnalului procesat.
  • Mufă jack mamă 6.3mm mono – 2 buc
    • Una pentru intrarea audio (chitară) și una pentru ieșirea audio către amplificator.
  • Potențiometru 10kΩ – 2 buc
    • Control volum audio (pentru semnal analogic).
    • Control gain ca feedback pentur intrarea negativa de la U1:A din LM358
  • Butoane colorate – 3 buc
    • (rosu, verde si albastru) pentru selectarea efectului
  • Rezistente si condensatoare

Functionalitate

1. Intrarea semnalului de chitară (jack intrare)

  • Semnalul audio de la chitară este un semnal analogic cu amplitudine mică, care trebuie amplificat și prelucrat.
  • Semnalul intră în filtrul de intrare format din C1 (0.47µF) și C2 (0.47µF) împreună cu rezistența R4 (6.8 kΩ).
  • Condensatoarelor C1 și C2 acționează ca filtre de blocare a componentelor continue (DC offset), lăsând să treacă doar semnalul AC (audio) si ajută la eliminarea zgomotelor de frecvență joasă (filtru high-pass pasiv).
  • Rezistenței R4 creează împreună cu condensatoarele un filtru RC ce determină frecvența de tăiere a filtrului high-pass si oferă o impedanță de intrare potrivită pentru semnal audio.

2. Etajul de amplificare cu LM358 (U1:A și U1:B)

LM358 este un amplificator operațional dual (două canale într-un singur cip). Primul canal este folosit pentru amplificarea semnalului de intrare.

U1:A - Amplificator cu feedback

  • Semnalul de intrare ajunge la intrarea non-inversoare (+) a amplificatorului U1:A.
  • Intrarea inversoare (-) este conectată printr-un divizor de tensiune format din rezistențele R5 (5 kΩ) și RV1 (10 kΩ potențiometru).
  • Acest divizor controlează feedback-ul și deci câștigul amplificatorului.
  • Ajustarea potențiometrului RV1 schimbă raportul feedback-ului, modificând astfel câștigul și implicit volumul/gradul de amplificare.
  • Iesirea acestuia intra in pinul A0 in Arduino

U1:B - Etaj suplimentar de amplificare

  • Asigură o impedanță de ieșire joasă pentru semnalul audio generat de DAC-ul MCP4725, astfel încât să nu se suprasolicite ieșirea DAC-ului și să ofere un semnal stabil și puternic către etapa următoare (ieșirea audio către amplificator extern sau difuzor).
  • Semnalul amplificat din U1:A ajunge la intrarea non-inversoare (+) a U1:B.
  • Feedback-ul la U1:B este format prin R8 (4.7 kΩ) și condensatorii C4 și C5 (0.47 µF) conectați pe intrarea inversoare (-).
  • Rezistența R8 împreună cu condensatorii C4 și C5 formează un filtru de frecvență care ajută la stabilizarea semnalului și reduce zgomotele.
  • Condensatorii ajută la blocarea componentelor DC și la filtrarea frecvențelor nedorite, contribuind la claritatea semnalului.
  • U1:B amplifică și livrează semnalul procesat către ieșire.

3. Potențiometru volum (RV2 - 10 kΩ)

  • Legat la ieșirea amplificatorului U1:B și la masa circuitului.
  • Permite reglarea nivelului de semnal trimis către DAC și apoi către amplificatorul final.
  • Ajustează amplitudinea semnalului ieșit, controlând volumul general al sunetului.

4. MCP4725 - DAC extern

  • Conversia semnalului digital prelucrat în analogic, pentru a fi transmis către amplificatorul de putere (extern).
  • Conectat prin interfața I2C (SDA, SCL) la microcontrollerul Arduino (pinii A4 - SDA si A5 - SCL)
  • Semnalul procesat de Arduino (cu efectele aplicate) este transmis la DAC pentru a genera semnal analogic la ieșire.

5. Butoanele și LED-urile

  • 3 butoane pentru selectarea efectelor (Distorsiune, Tremolo, Delay), conectati la pini digitali (D2, D3, D4)
  • Fiecare buton este legat la un pin digital cu pull-up intern activat (logic HIGH când nu este apăsat).
  • La apăsare, microcontroller-ul detectează apăsarea (pin LOW) și comută efectul.
  • LED-urile corespondente sunt conectate la pini digitali (D12, D11, D10) și indică starea efectului (pornit/oprit).

Interfete

  • ADC pe pinul A0 pentru semnal audio.
  • I2C pe pinii A4 (SDA) și A5 (SCL) pentru MCP4725.
  • GPIO digitali pentru butoane și LED-uri.

Poze

Link catre poze si video demonstrativ: aici

Software Design

Din simplul fapt ca acest proiect lucreaza si proceseaza semnal audio, inseamna ca partea de cod trebuie sa functioneze foarte repede si sa faca masuratori (esantioane) foarte rapid (sample rate). Deci sample rate mare → frecventa mare. Acest lucru nu se pot obtine cu biblioteci Arduino, deci singura solutie a fost de a lucra in PlatformIO in maniera de la laborator.

Notiuni folosite din laborator

1. GPIO

Am folosit pini digitali PD2, PD3, PD4 ca intrări cu pull-up pentru butoane și PB2, PB3, PB4 ca ieșiri pentru LED-uri.

2. ADC (Converto Analog-Digital)

Convertirea semnalului audio, adica analog, in digital pentru prelucrare si aplicarea efectelor selectate, apoi pasarea datelor la DAC. De asemnea, este configurat în Free-Running Mode pentru eșantionare continuă la ~10 kHz.

3. Timer(CTC)

Am folosit Timer0 CTC, folosit in tratarea intreruperilor pentru button debounce

4. I2C (TWI)

MCP4725 (DAC) functioneaza prin protocolul I2C, de asemenea este si rapid.

5. Intreruperi (ISR)

Toate interactiunile externe functioneaza cu intreruperi pentru optimizarea codului si a timpului de executie, pentru a nu afecta frecventa pentru sample rate. Am folosit intreruperi pentru:

  • ISR(ADC_vect) - finalizarea fiecarei conversii ADC in modul Free-Running
  • ISR(PCINT2_vect) - cand se declanseaza orice schimabre la nivel pe pinii PCINT18..20 (PD2, PD3, PD4), adică la apăsarea sau eliberarea butoanelor.
  • ISR(TIMER0_COMPA_vect) - se declanșează la fiecare 1 ms, conform configurației: prescaler 64, OCR0A = 249, pentru gestionarea contoarelor de debounce si toggle pentru LEDs

=== I2C (TWI) === Rol: Interfața I²C (TWI) generică, folosită pentru a comunica cu DAC-ul MCP4725 la ~400 kHz.

Ce face fiecare functie:

  1. twi_init()
  • TWSR = 0x00; → prescaler = 1
  • TWBR = 12; → bit-rate generator pentru SCL ≈ 400 kHz la 16 MHz
  • TWCR = (1«TWEN); → activează modul TWI (SDA/SCL)

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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ă ;-).

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.

Jurnal

7 Mai: Descriere poriect si adaugarea listei de piese

18 Mai: Descriere detaliata pentru hardware si modificare liste de componente.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2025/fstancu/cristina.drinciu.1748180139.txt.gz · Last modified: 2025/05/25 16:35 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