Table of Contents

Guitar Tuner

Introducere

Proiectul constă într-un tuner pentru chitara electrică care detectează frecvența sunetelor produse de fiecare coardă a chitării și afișează pe un ecran LCD poziția acesteia față de valoarea dorită prin intermediul unui grafic intuitiv. Tuner-ul are două moduri de acordare: Standard Tuning și Drop D Tuning.

Descriere generală

Schema bloc:

Inputul de la chitara electrică trece printr-un modul de amplificare și unul de DC offset care modifică semnalul astfel încât să poată fi citit de pinul analog A0 al Arduino. Se compară frecvența corzii chitării cu frecvența de referință corespunzătoare acesteia și se afișează rezultatul pe un ecran LCD printr-un grafic ce indică dacă trebuie tensionată sau detensionată coarda.

Pe lângă modul de acordare standard, se poate opta și pentru acordarea Drop D, folosită în mai multe melodii, în care cea mai joasă coardă (E) este adusă cu un ton mai jos. Schimbul între modurile de acordare se realizează prin apăsarea unui buton.

Hardware Design

Modulele de Amplificator și de DC Offset au rolul de a aduce semnalul primit de la chitară între 0 și 5V și a-l centra în 2.5V pentru a putea fi citit de pinul A0 al plăcuței Arduino.

Listă de piese:

Software Design

Am folosit mediul de dezvoltare Arduino IDE. Pentru afișarea pe ecranul LCD, am folosit biblioteca <LiquidCrystal.h>.

Pentru a calcula frecvența corzilor chitării, am folosit o întrerupere ADC: de fiecare dată când portul A0 al plăcuței Arduino primește o nouă valoare analog, se produce o întrerupere după algoritmul descris aici: https://www.instructables.com/Arduino-Frequency-Detection/.

Astfel, în rutina de întrerupere ADC, am ales o tensiune în limitele semnalului meu (2.5 V). Am contorizat evenimentele de prag în care unda a traversat acest nivel cu o pantă ascendentă. Dacă acest lucru s-a întâmplat de mai multe ori într-un ciclu, am ales ca evenimentul de prag cu cea mai mare pantă să fie începutul ciclului. Am folosit o variabilă numită „time” (incrementată la o rată de 38,5 kHz) pentru a măsura timpul dintre evenimentele de prag și am stocat valorile acesteia într-un array numit timer[]. De asemenea, am înregistrat panta la fiecare dintre evenimentele de prag într-un array numit slope[]. Apoi am comparat elementele timer[] și slope[] pentru a afla unde a fost o potrivire. Odată ce a fost găsită o potrivire, am adunat elementele timer[] pentru a determina durata ciclului și am stocat această valoare într-o variabilă globală numită „period”. În funcția principală loop() folosesc valoarea perioadei pentru a calcula frecvența.

Frecvența obținută este comparată apoi cu valorile de referință ale corzilor (în funcție de modul de acordare) pentru a determina ce coardă a fost atinsă și care este diferența de frecvență.

Printr-o altă întrerupere declanșată de apăsarea unui buton, stabilesc modul de acordare: Standard sau Drop D. Valorile frecvențelor pentru Standard Tuning sunt:

Coardă Frecvență (Hz)
E 82.4
A 110
D 146.8
G 196
B 246.9
e 329.6

Diferența în Drop D Tuning constă în valoarea frecvenței corzii E, aceasta fiind de 73.4 Hz.

Pe ecranul LCD, se va afișa litera ce reprezintă coarda acordată (E, A, D, G, B sau e), litera ce reprezintă modul de acordare (S sau D) și un grafic ce va indica diferența față de frecvența de referință.

Rezultate Obţinute

Tuner-ul are o acuratețe foarte ridicată, însă din cauza zgomotului și a metodei alese pentru a-l evita (atingerea unei amplitudini minime pentru ca semnalul să fie procesat), corzile mai subțiri trebuie lovite mai tare pentru a fi interceptate.

Concluzii

Am învățat foarte multe lucrând la acest proiect. Nu mă așteptam ca detectarea frecvenței de intrare să fie o provocare așa de mare, dar acum simt că stăpânesc teoria din spate. Am plecat cu o altă idee inițial, aceea de a acorda chitara automat prin intermediul unui stepper sau servo motor care să acționeze cheițele. Din păcate, nu am anticipat la timp nevoia unor piese pentru motor, așa că am reconfigurat proiectul și am ales să adaug un ecran LCD pentru afișare și un al doilea mod de acordare. În final, sunt mulțumită de rezultat și de timpul petrecut lucrând la proiect. Mi-aș dori să îl îmbunătățesc, să lipesc toate componentele care sunt momentan pe breadboard și poate să îl folosesc de acum când îmi acordez chitara.

Download

guitar_tuner.zip

Bibliografie/Resurse

Export to PDF