Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul constă în realizarea unui tuner automat pentru chitară. Sunetul va fi captat de la chitară cu ajutorul microfonului, apoi prelucrat, ca ulterior în funcţie de frecvenţa semnalului să detectez coarda ciupită (EADGBE) şi să afişez pe ecranul unui LCD dacă coarda trebuie strânsă sau slăbită. Acest fapt va fi urmat de o reglare automată a corzilor cu un motoraş ce va fi fixat pe cheia coardei alese, apoi va fi rotit în direcţia corespunzătoare.
Practic, ce voi realiza, va avea aceeaşi funcţionalitate ca un tuner standard, doar că de data aceasta acordarea se va face automat.
De ce am ales acest proiect?
Am ales această idee pentru că este ceva util şi îmi este interesant cum se prelucrează semnalul reprodus de un instrument muzical şi cum este pus în funcţiune un motoraş în dependenţă de anumiţi parametri.
Frecvenţe note:
Nota | Coarda | Frecventa (Hz) |
E | 6 | 82.41 |
A | 5 | 110.00 |
D | 4 | 146.83 |
G | 3 | 196.00 |
B | 2 | 246.94 |
E | 1 | 329.63 |
Datorita faptului ca am decis sa fac tunerul pentru chitara electroacustica, nu am avut nevoie de microfon, aceasta avandu-l incorporat.
Pentru rotirea motorului cu reductor, am pe H-Bridge 2 tranzistoare PNP (A si C) si 2 NPN (B si D). Iesirile acestora le-am conectat pe 4 pini pentru a controla motorul.
Pentru directia motorului:
Directia motorului poate fi controlata si de inversarea directa a cablului.
Cand vrea sa se acordeze chitara, trebuie aleasa coarda respectiva (EADGBE). Dupa ce este selectata, semnalul este citit prin pinul PB7 care este setat ca pin de input in microcontroller. Pe pinul respectiv am activat o intrerupere pentru a determina numarul sinusoidelor primite in intervalul de timp setat cu un timer. Timp de o secunda, se va numara numarul undelor, de la LOW la HIGH. Rezultatul se imparte la timpul petrecut in asteptare (cel contorizat de timer), si se obtine frecventa sunetului primit. Frecventa semnalului calculata este comparata cu frecventa corzii respective (tabelul de mai sus) si pe LCD este afisata diferenta in %, daca coarda trebuie stransa sau slabita, si in functie de asta se roteste motorul in directia respectiva, cat e nevoie.
Pentru dezvoltare cod, am pornit de la laboratorul 1.
In final, am obtinut un acordor in regula, dar nu cu o precizie foarte mare. Ceea ce nu mi-a iesit cam cum m-as fi asteptat, a fost partea cu motorul. Am cheitele de la corzi destul de stranse la chitara si motorasul nu face fata rotirilor la un moment dat, dar asta nu este o problema, motorul poate fi inlocuit cu altul de dimensiune considerabil mai mare si mai puternic.
Mai jos am atasat arhiva cu implementarea codului, ce contine:
Laboratoare: