Autorul poate fi contactat la adresa:
Pe scurt:
Proiectul constă într-un procesor de efecte audio însoțit de o interfață grafică. O schemă bloc ar fi următoarea:
Un stream audio (preamplificat) este preluat printr-un cablu Jack 1/8” și adus în PA0 pentru a se face conversia Analog-Digital. Mai departe, sample-urile obținute sunt puse într-un buffer circular pentru a se putea realiza efectul de delay (sau ecou/întârziere). Sample-ul rezultant (originalul + delay) este reprodus folosind Fast PWM in conjuncție cu un filtru RC LowPass, fiind preluat mai departe de un cablu Jack Female 1/8”.
Modulul de Elemente de control constă într-un număr de 4 butoane folosite pentru a controla afișajul grafic LCD. Cele 4 butoane au următoarele funcționalități: - primul este folosit pentru a selecta categoria de efect (Delay, uDelay, Chorus); - al doilea este folosit pentru a selecta parametrul din cadrul categoriei/paginii curente; - următorii doi sunt folosiți pentru a incrementa/decrementa parametrul curent selectat.
Pe partea de design hardware, am folosit plăcuța de PM, un LCD de 20×2, un microfon cu ieșire Jack 1/8” precum și preamplificare și un circuit RC.
Toate componentele au fost achiziționate de la Conex Electronic și Syscom.
Circuitul RC l-am folosit pentru a tăia din frecvențele înalte generate prin Pulse Width Modulation și pentru a obține aproximări mai bune pentru unde sinusoidale.
Am folosit următoarele componente:
LCD BC2002A |
Cablu Jack-tata↔Jack-tata 1/8” (3.5mm) |
Rezistenta 1K |
Capacitate 1uF |
Capacitate 10nF |
4xPush-Buttons |
Bareta de pini circuit integrat |
Panglica de 10 fire (2m) |
Potentiometru 10K |
Pentru dezvoltarea software-ului am folosit WinAVR împreună cu Programmer's Notepad.
Codul l-am scris de la 0 dat fiind că am folosit 8 pini de date pentru comunicarea cu LCD-ul iar scheletul de laborator era conceput pentru o comunicare pe 4 biți.
Pentru partea de ADC am mai citit pe forumurile AVRfreaks. Pentru codul de FastPWM m-am uitat pe laboratorul 2.
Implementarea este una foarte simplistă, utilizând un număr redus de funcții.
Delay-urile elementare sunt implementate și funcționează (chiar dacă ADC-ul nu obține sample-uri suficient de lungi din input).
Sistemul de meniuri este implementat și funcțional, dar nu se poate testa decât din cod deoarece butoanele sunt nefuncționale.
Sistemul de editare al parametrilor este de asemenea implementat.
Proiectul este foarte extensibil. Se pot crea foarte ușor efecte noi pentru acesta. Există inclusiv posibilitatea extinderii la stereo prin folosirea a două canale ADC, două porturi cu Fast PWM și două filtre RC.
Probleme întâmpinate:
A fost un experiment interesant, din păcate nu atât de reușit pe cât am sperat. Rezultatul se datorează faptului că am plecat la drum cu dorința de a face cât mai multe (varietate de efecte, implementare stereo, meniuri via LCD, sampling în timp real șamd).
Puteți să downloadați arhiva cu codul C și Makefile.