Autorul poate fi contactat la adresa : luminita.voicu98@gmail.com
Am ales ca tema proiectului meu sa fie: Tuner pentru Chitara Acustica deoarece m-a atras ideea de a implementa ceva care sa aiba o legatura directa cu unul dintre hobby-urile mele.
Proiectul are ca scop implementarea unui tuner care sa preia sunetul generat de o coarda, sa identifice nota muzicala si sa afiseze pe un LCD daca coarda respectiva genereaza o frecventa corespunzatoare notei identificate.
In cazul in care frecventa este potrivita, se va aprinde un led verde.
Daca frecventa este decalata peste o valoare de prag, atunci se va aprinde un led rosu si pe ecranul LCD se va preciza daca frecventa generata este prea joasa sau prea inalta.
Piese necesare
Am lucrat pe Linux Mint si am folosit Vim ca editor de text.
Pentru a implementa afisarea pe LCD 2*16 am folosit ca model scheletul din laboratorul 2 de pm si am modificat fisierul header astfel incat pinii folositi sa se potriveasca cu pinii conectati la LCD.
Pentru initializarea ADC-ului am folosit prescaler de 32, o tensiune de referinta de 2.56V si pentru detectia frecventei, am setat bitii aliniati la stanga. Pentru detectia frecventei am apelat la un algoritm care retine intr-un buffer timpul intre doua treceri ascendente prin punctul de mijloc (2.5V). Deoarece trebuie luat in considerare si zgomotul pentru a se mentine acuratetea, algoritmul nu ia in considerare decat serii de astfel de perioade constante.
Am folosit un vector pentru cele 6 note posibile si un vector pentru frecventele de referinta din tuning-ul standard. Daca frecventa este corecta, atunci se afiseaza mesajul “OK”. Altfel, se afiseaza ”«” sau ”»” daca nota trebuie sa aiba o tonalitate mai scazuta, respectiv mai ridicata pentru a ajunge la frecventa corecta.
Pentru preluarea corzii care se doreste sa se verifice am folosit butonul BTN de pe placuta, care va cicla prin note in ordinea: E A D G B e. Apasarea butonului este implementata in rutina de tratare a intreruperii PCINT1, cu o tehnica de debouncing.
In ceea ce priveste partea de hardware, circuitul este perfect functional (a fost verificat cu un osciloscop). Din pacate, implementarea pe partea de software mi-a pus mai multe probleme decat ma asteptam. Algoritmul meu nu reuseste sa calculeze frecventa corecta a notei amplificate si ofera doar o apreciere aproximativa (si de multe ori nehotarata) a acesteia. Din lipsa de timp (deoarece am lucrat mult timp la algoritmul de detectie a frecventei si imi doream ca acesta sa functioneze) am tot amanat adaugarea pe placuta a ledurilor (verde si rosu) care sa semnaleze cand o coarda este acordata corect si cand nu.
Proiectul mi s-a parut foarte interesant si am lucrat cu placere la el, in special la partea de hardware, care a reprezentat ceva ce nu am mai realizat pana acum. Faptul ca tuner-ul nu este functional este dezamagitor pentru mine, insa in acelasi timp ma motiveaza sa continui sa il perfectionez in afara perioadei de lucru.
Laboratoarele de PM (in special 0, 2 si 6)
ro
lm358-mic-amp
arduino-guitar-tuner
Arduino-Guitar-Tuner