Mihai-Valentin DUMITRU - Automatic Guitar Tuner
Autorul poate fi contactat la adresa: Login pentru adresa
Introducere
Proiectul constă într-un acordor de chitară automat, capabil să regleze cheile.
Acesta are o modalitate de selecție a notei dorite, printr-o placă de control; potrivit sunetului primit de la un microfon, un DC stepper este controlat astfel încât să rotească corespunzător cheia asociată corzii curente.
Acest proiect este util deoarece acordarea unei chitare este un proces muncitoresc și stresant.
Descriere generală
Microcontroller-ul ATMega324 - controlează întregul proces. Preia date de la microfon, le compară cu coarda selectată și învârte motorul.
Butoane - folosite de utilizator pentru a seta coarda care se dorește acordată.
Microfon - preia sunetul de la chitară.
Motor - are la capăt un clip pentru a se potrivi pe cheiile corzilor. Prin rotire strânge sau eliberează o coardă.
Hardware Design
Listă de piese
placa de bază
plăcuță auxiliară cu:
28BYJ-48 Stepper Motor + ULN2003 Driver (optimusdigital.ro - 0104110000008091)
cablu USB pentru alimentare separată stepper
Modul Amplificator Microfon cu AGC MAX9814 (optimusdigital.ro - 0104110000012920)
Modul Convertor USB la Serial PL2303 - folosit pentru debugging (optimusdigital.ro - 0104110000003201)
19 jumpere mamă-mamă
Schema
Software Design
Mediu de dezvoltare:
Biblioteci și surse 3rd-party:
Algoritmi:
la fiecare întrerupere de timer, tunerul determină diferența dintre frecvența reală și frecvența dorită.
semnul diferenței determină sensul de rotire (considerând că rotirea în sens trigonometric tensionează coarda).
tunerul are o valoare default de rotire (unghi) și memorează diferența anterioară.
dacă, după o rotire, semnul diferenței curente diferă de cel al diferenței anterioare, înseamnă că s-a trecut de poziția dorită; tunerul își înjumătățește unghiul de rotire și schimbă sensul.
când unghiul ajunge sub o anumită valoare de toleranță, procesul se oprește și LEDul PD7 este aprins.
Rezultate Obţinute
Microfonul nu detectează decât sunetele foarte puternice (pus lângă difuzor).
Pentru că nu am avut timp, algoritm de determinare a frecvenței este prost și nu funcționează corect.
Presupunând că ar putea face rost de frecvența, restul logicii programului funcționează .
Concluzii
Chiar dacă e un eșec, mi-a plăcut să lucrez la proiect.
Evident, trebuia să mă apuc din vreme ca să am timp să termin.
Sfaturi pentru ceilalți:
Nu vă pierdeți timpul încercând să faceți voi componente când nu e necesar. Un asistent mi-a zis “Ăsta e proiect de PM, nu de EEA.”
Nu întârziați cu comanda pentru piesa la nivel de serie. Eu a trebuit să merg singur pe Maica Domnului și am găsit un microcontroller cu 15 lei mai scump.
Înainte să vă duceți pe Maica Domnului, considerați alternative (e.g. optimusdigital care e lângă facultate).
Download
Arhiva conține:
README: conține informații despre proiect
src/: folder care conține toate sursele folosite. În ele se pot găsi informații suplimentare.
Makefile: regula default creează folderul “out/” cu fișierele necesare (.hex, .elf).
Textul fișierelor din arhivă este în engleză.
Jurnal
[22.04]: Am cercetat subiectul și am creat pagina de wiki.
[20.05]: Am terminat plăcuța de control (partea fizică)
[24.05]: Am implementat interfața software a plăcuței de control.
[26.05]: Am implementat interfața software pentru DC stepper și am realizat testele necesare.
[27.05]: Am achiziționat un microfon (ce aveam eu era nefuncțional) și am implementat sistemul de detectare a frecvenței. Am făcut ultimele teste ale proiectului.
[27.05]: Am completat pagina de wiki cu tot ce uitasem să adaug (lista de componente, schema electrică).
Bibliografie/Resurse