Andra-Sabina GEORGESCU - Digital Guitar Tuner

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul consta intr-un tuner pentru chitara(si nu numai), conceput pentru cei ce doresc sa-si acordeze instrumentul cu mai putin efort, sau pentru cei care nu sunt foarte priceputi in a-si acorda chitara “dupa ureche”. Astfel, utilizatorul nu trebuie decat sa porneasca tunerul, sa selecteze coarda pe care doreste s-o acordeze, sa o loveasca si apoi sa urmareasca ledurile, care ii spun daca trebuie sa urce/coboare sunetul, sau daca acesta este “in tune”.

Descriere generală

Proiectul consta in urmatoarea schema bloc(hardware):

  1. Microfonul electrolitic - preia semnalul audio si-l trimite mai departe pentru a fi amplificat
  2. Circuitul de preamplificare - primeste semnalul de la microfon si-l amplifica suficient pentru a fi vizibil microcontroller-ului
  3. Microcontroller-ul - primeste semnalul amplificat si, folosind ADCul integrat, converteste semnalul analog, intr-unul digital
  4. Modulul de selectie a coardei - prin apasarea de mai multe ori a unui buton, se selecteaza coarda dorita, fiecare fiind reprezentata vizual printr-un LED
  5. Modulul de decizie - format din 3 LEDuri : 2 rosii pentru a semnaliza coborarea/urcarea frecventei si unul verde pentru a semnaliza un sunet de frecventa exacta

In ceea ce priveste modulele software, avem urmatoarele:

  1. Modulul de selectie a coardei - si, implicit, a frecventei de baza pentru comparatie. Acest modul realizeaza si aprinderea LEDurilor reprezentand coardele
  2. Modulul de conversie analog-digitala - prin care semnalul de la circuitul de preamplificare este convertit intr-un semnal “de inteles” pentru microcontroller
  3. Modulul de determinare a frecventei - pe baza semnalului digital
  4. Modulul de afisare a acuratetei - frecventa determinata este comparata cu frecventa de baza si se aprinde LEDul in cauza

Hardware Design

Lista de piese necesare:

  • Microfon electrolitic
  • Tranzistor 2N3904
  • 2 condensatoare 0.1uF
  • 2 rezistori 10K
  • 1 rezistor 100K
  • 9 rezistori 100 ohmi
  • 6 leduri galbene
  • 2 leduri rosii
  • 1 led verde
  • 1 buton

Schema circuitului de preamplificare:

Iesirea(output to next stage) acestui circuit este legata la pinul PA0 al microcontrollerului pentru a putea converti semnalul.

Am folosit urmatoarea legare a componentelor la pinii microcontroller-ului:

  • Circuitul de preamplificare - PA0
  • Butonul - PB0
  • 6 leduri galbene, in serie cu 6 rezistente 100 ohmi - PB1-PB6
  • 2 leduri rosii, in serie cu 2 rezistente 100 ohmi - PA1,PA3
  • 1 led verde, in serie cu o rezistenta 100 ohmi - PA2

Software Design

Pentru partea de implementare software am folosit programul din laborator, Programmer's Notedapad, pentru incarcarea fisierelor .hex pe placuta am folosit programul pus la dispozitie la laborator, iar in ceea ce priveste biblioteca, am folosit AVR libc, tot din laborator.

Pentru inceput, am definit valorile frecventelor naturale ale sunetelor, constante:

#define MI_JOS 164.81

#define LA 220.00

#define RE 293.66

#define SOL 391.99

#define SI 493.88

#define MI_SUS 659.26

De asemenea, trebuie calculata frecventa microcontroller-ului, ca raportul dintre frecventa CPUului si cea a prescalerului:

#define FREQ (16000000 / 64)

Apoi, relativ la frecventa microcontroller-ului, se calculeaza frecventele de comparatie pentru fiecare coarda in parte, dupa formula: FREQ / NOTA.

Pentru modulul de selectie a coardei, avem o bucla while(1), in care se citeste valoarea pinului la care este conectat butonul(PB0). Pentru inceput, avem o variabila care are valoarea 0(nu este selectata nicio coarda). In momentul apasarii butonului(deci a schimbarii starii pinului PB0), aceasta variabila este incrementata, reprezentand numarul coardei. In momentul in care aceasta variabila atinge valoarea 7(nu exista a 7-a coarda), revine inapoi la 0(nu se citeste semnalul microfonului). Concomitent cu incrementarea acestei variabile, se aprinde si LEDul corespunzator coardei(sau nu se aprinde nimic pentru valoare 0) si se stinge LEDul aprins precedent.

Pentru modului de conversie analog digitala, trebuie setata o rutina de tratare a intreruperilor pentru pinul la care este legat circuitul de preamplificare. In aceasta rutina are loc conversia propriu-zisa, determinarea frecventei si, apoi, comparatia.

Rezultatul comparatiei este trimis catre modulul de afisare a acuratetei care aprinde LEDul corespunzator.

Rezultate Obţinute

Din pacate, nu am reusit sa duc proiectul la bun sfarsit. Imi doresc insa ca pe viitor sa-l termin, intrucat detin o chitara, iar costul unui astfel de echipament este destul de ridicat.

Concluzii

In locul construirii circuitului de preamplificare, se gasesc microfoane gata integrate intr-un astfel de circuit, ceea ce usureaza un pic munca. De asemenea, in locul afisarii rezultatelor prin LEDuri, se poate folosi un afisor LED. Pentru o experienta mai placuta de utilizare, in locul selectiei coardelor prin butoane, se poate folosi autodeterminarea range-ului de frecvente in care se incadreaza sunetul.

Dupa cum se poate observa, acesta este un proiect foarte versatil, si chiar usor as putea spune, putand fi implementat in functe de dorintele fiecaruia, nesolicitand un efort finaciar mare.

Bibliografie/Resurse

Schema circuitului de preamplificare : http://www.reconnsworld.com/audio_simplepreamp.html

pm/prj2013/rdobre/digital-guitar-tuner.txt · Last modified: 2021/04/14 17:07 (external edit)
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