Anatolie PALADI (72706) - Automatic Guitar Tuner

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

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.

Descriere generală

Frecvenţe note:

NotaCoardaFrecventa (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

Tuner standard pentru chitarăCe îmi propun eu să fac?

Schema generală

Hardware Design

Lista componente

  • LCD Hitachi 44780
  • 2 rezistenţe de 10K
  • 1 rezistenţă de 100K
  • 2 tranzistoare PNP
  • 2 tranzistoare NPN
  • 4 rezistente 1K
  • 2 condensatoare 0.1uF
  • Microfon (opţional, deoarece chitara electroacustică îl are încorporat)
  • Micro Motor GA12-N20 cu Reductor 1:298
  • Roata dintata pentru ax motor - 3mm
  • Fire Mamă-Mamă 10 cm
  • Cablu audio Jack-to-Jack 3.5mm cu adaptor

Schema electrică

Software Design

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:

  • Clockwise ( 0 → A, 1 → B)
  • Counterclockwise ( 0 → C, 1 → D)

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.

Rezultate Obţinute

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.

Download

Mai jos am atasat arhiva cu implementarea codului, ce contine:

  • lcd.h
  • lcd.c
  • main.c
  • Makefile

(apaladi_guitar_tuner.zip)

Jurnal

  • 02.05.2017 - Am facut schema bloc si am determinat componentele necesare
  • 09.05.2017 - Am cumparat si am terminat de lipit toate componentele pe placuta.
  • 16.05.2017 - Schema electrica
  • 21.05.2017 - 25.05.2017 - Partea software

Bibliografie/Resurse

pm/prj2017/adraghici/automatic-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