Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:vstoica:electric-guitar-tuner [2023/05/17 10:27]
ion.calugaritoiu
pm:prj2023:vstoica:electric-guitar-tuner [2023/05/28 18:34] (current)
ion.calugaritoiu [Rezultate Obţinute]
Line 6: Line 6:
  
 ===== Descriere Generala ===== ===== Descriere Generala =====
-Aparatul va avea o mufa jack de 1/4 inch ca input de la instrument si va folosi ​5 LED-uri ​pentru a indica daca coarda lovita trebuie stransa sau slabita. Frecventa semnalului de intrare va fi amplificata folosind un amplificator operational si prelucrata folosind un microcontroller Arduino Uno Rev3, rolul sau fiind si acela de a detecta care coarda a fost actionata. Frecventa citita va fi afisata pe un LCD I2C. Proiectul necesita 2 baterii de 9V pentru ​alimentare ​si dispune de un intrerupator ON/OFF.+Aparatul va avea o mufa jack de 1/4 inch ca input de la instrument si va folosi ​un ecran LCD pentru a indica daca coarda lovita trebuie stransa sau slabita. Frecventa semnalului de intrare va fi amplificata folosind un amplificator operational si prelucrata folosind un microcontroller Arduino Uno Rev3, rolul sau fiind si acela de a detecta care coarda a fost actionata. Proiectul necesita 2 baterii de 9V pentru ​alimentarea Op-Amp-ului ​si dispune de un intrerupator ON/OFF.
  
 Corzile au urmatoarele frecvente atunci cand sunt acordate corect in acordajul E standard: Corzile au urmatoarele frecvente atunci cand sunt acordate corect in acordajul E standard:
Line 18: Line 18:
 Aparatul va detecta frecventa de input si o va compara cu aceste valori de referinta. Aparatul va detecta frecventa de input si o va compara cu aceste valori de referinta.
  
-==== Schema Bloc ==== +==== Schema Bloc: ==== 
-{{:​pm:​prj2023:​vstoica:​arduino_guitar_tuner.png?600|}}+{{:​pm:​prj2023:​vstoica:​guitar_block.png?​600|}} 
 + 
 +=== Mod de functionare:​ === 
 + 
 +  - Se porneste aparatul folosind switch-urile on-off; 
 +  - Se conecteaza cu chitara folosind un cablu cu mufa jack de 1/4 inch; 
 +  - Se ciupeste o coarda si se urmareste afisajul LCD; se afiseaza fie: 
 +      * "[nume coarda] is b": coarda trebuie stransa, (b = bemol);  
 +      * "[nume coarda] is #": coarda trebuie slabita; 
 +      * "[nume coarda] is in tune": coarda este acordata corect: 
 + 
 +===== Hardware Design ===== 
 +==== Schema electrica ​==== 
 +{{:​pm:​prj2023:​vstoica:​guitar_schema.png?600|}}
  
 ==== Lista Componente ==== ==== Lista Componente ====
   * Arduino Uno Rev3   * Arduino Uno Rev3
-  * (x1) TL082 Op Amp +  *  TL082 Op Amp 
-  * (x6) Yellow LED +  *  9V Battery 
-  * (x6) Red LED +  *  2.1mm DC barrel jack 
-  * (x1) Green LED +  *  toggle switch 
-  * (x13) 150 Ohm Resistor +  *  1/4" Audio Jack 
-  * (x2) 9V Battery +  *  100kOhm Resistor 
-  * (x2) 9V Battery Connector +  *  ​10kOhm ​Resistor 
-  * (x1) (x1) 2.1mm DC barrel jack +  *  10uF Capacitor 
-  * (x1) (x1) toggle switch +  *  100nF Capacitor 
-  * (x1) 1/4" Audio Jack +  *  16x2 I2C LCD 
-  * (x3) 100kOhm Resistor + 
-  * (x1) 22kOhm ​Resistor +==== Explicatii ==== 
-  * (x1) 10uF Capacitor + 
-  * (x1) 100nF Capacitor +1. Amplificatorul este prima etapă a circuitului,​ care mărește amplitudinea semnalului de la aproximativ +/-200mV la +/​-2.5V ​(ideal), pentru a putea fi detectata de catre microcontroller. 
-  * (x1toggle switch + 
-  * (x116x2 I2C LCD+  * Pentru a regla gain-ul amplificatorului am folosit o rezistenta de 10kOhm, aceasta avand rolul de a limita cat de mult va fi amplificat semnalul. Planuiesc sa inlocuiesc rezistorul cu un potentiometru,​ astfel avand un gain reglabil. 
 + 
 +  * Rezistenta de 100kOhm este o rezistenta de feedback, fiind montata intre output-ul amplificatorului si intrarea sa neinversoare. 
 + 
 +2. A doua etapa a circuitului consta in partea de DC offset; acest offset de +2.5V face ca semnalul audio să oscileze în jurul valorii de 2.5V, astfel încât să rămână în intervalul acceptabil pentru intrările analogice ale lui Arduino Uno (0-5V). Offset-ul este obtinut din doua componente:​ 
 + 
 +  * un divizor de tensiune: este realizat din două rezistențe de 100k conectate în serie de la alimentarea de 5V a Arduino la masă. Deoarece rezistențele au aceeași rezistență,​ tensiunea la joncțiunea dintre ele este egală cu 2.5V.  
 + 
 +  * un condensator:​ jonctiunea de 2.5V este legată la ieșirea amplificatorului printr-un condensator de 10uF. Pe măsură ce tensiunea de pe partea de amplificator a condensatorului crește și scade, aceasta face ca sarcina să se acumuleze momentan și să descarce pe partea atașată la divizor. Acest lucru face ca tensiunea să oscileze în sus și în jos, centrată în jurul valorii de 2.5V. 
 + 
 +3. A treia etapa consta in conectarea microcontroller-ului cu display-ul LCD I2C. Dupa ce frecventa este prelucrata in partea de software, output-ul este transmis display folosind protocolul I2C - pinii analogici A4 si A5 de pe arduino sunt conectati la pinii SDA si SCL de pe convertorul I2C lipit pe LCD.
  
 ===== Software Design ===== ===== Software Design =====
Line 44: Line 67:
 https://​www.instructables.com/​Arduino-Frequency-Detection/​ https://​www.instructables.com/​Arduino-Frequency-Detection/​
  
 +Implementarea se bazeaza pe cea amintita anterior, fiind adaptata la cerintele pe care trebuie sa le indeplineasca acordorul: detectia corzii lovite, afisarea si compararea frecventei corzii pe LCD.
  
-===== Rezultate Obţinute =====+Pentru a citi si prelucra semnalul de pe pin-ul analogic A0, a fost nevoie sa gasesc o metoda pentru a mari sampling rate-ul microcontroller-ului. Daca as fi folosit functia de analogRead, sample rate ul ar fi fost limitat la 8000Hz, fiind insuficient pentru aplicatii audio high definition.
  
-<note tip> +Metoda prezentata in link-ul de mai sus este foarte eficienta, marind sampling rate-ul la 38.5kHz (foarte aproape de standardul minim de 40Khz).
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+  * Practic, în funcția setup() am configurat Arduino-ul pentru a masura continuu pinul A0 și să uite de celelalte intrări analogice. Variabila numită "​ADCH"​ este cea care actualizata cu noile valori de la A0.
  
-===== Download =====+  * Am setat contorul ADC la 500kHz deoarece ADC-ul are nevoie de 13 cicluri de ceas pentru a citi o nouă valoare analogică. ​ 500/​13 ​=~ 38,5kHz.
  
-<note warning>​ +  * A trebuit să reduc puțin rezoluția măsurătorilor analogice pentru a mari sampling-rate-ul. analogRead() returneaza valori intre 0 și 1023acum aceste valori vor fi întotdeauna între 0 ș255.
-O arhivă (sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectului:​ sursescheme, etc. Un fişier README, un ChangeLog, un script de compilare şcopiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă pe wiki folosind facilitatea ​**Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** ​(dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +  ​Folosesc si o rutina de intrerupere pentru a updata variabila in care memorez input-ul ("​newData"​);​ Rutina ​este apelata doar cand o valoare noua este citita.
-</​note>​+
  
-===== Jurnal ===== 
  
-<note tip> +Codul se gaseste in arhiva din sectiunea de descarcari. 
-Puteți avea și secțiune ​de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului+===== Rezultate Obţinute ===== 
-</note>+ 
 +Prototipul functioneaza conform asteptarilor,​ avand precizie ​de acordaj foarte buna - comparata cu un acordor profesionist. Cu toate acestea, exista cateva puncte slabe ale aparatului, fiind susceptibil la zgomot si interferente din mediul extern, distorsionand semnalul ​de la chitara. Acest factor este prezent si la acordoarele din comert si nu este o problema majora pentru functionarea aparatului - este destul ca fiecare coarda sa fie reverificata dupa acordaj, astfel asigurandu-se ca zgomotul nu a influentat negativ precizia reglajelor
 + 
 +{{:​pm:​prj2023:​vstoica:​unu.jpeg?​600|}} 
 +{{:​pm:​prj2023:​vstoica:​doi.jpeg?​600|}} 
 +{{:​pm:​prj2023:​vstoica:​trei.jpeg?​600|}} 
 +{{:​pm:​prj2023:​vstoica:​123.jpeg?​600|}} 
 +{{:​pm:​prj2023:​vstoica:​1234.jpeg?​600|}} 
 +{{:​pm:​prj2023:​vstoica:​12345.jpeg?​600|}} 
 +===== Concluzii ===== 
 + 
 +In concluzie, realizarea unui acordor de chitare electrice folosind Arduino UNO este relativ facila, dificultatea principala constand in partea de frequency detection - software. 
 + 
 +===== Download ===== 
 +Arhiva care contine codul Arduino si schemele bloc/electrice. 
 +{{:​pm:​prj2023:​vstoica:​arduino_guitar_tuner.zip|}}
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +Exemplu cod citire frecventa Arduino Uno Rev3: 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+https://www.instructables.com/​Arduino-Frequency-Detection/​ 
-</note>+ 
 +Datasheet Op-Amp TL082 
 +https://​pdf1.alldatasheet.com/​datasheet-pdf/​view/​355643/​TI/​TL082.html
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2023/vstoica/electric-guitar-tuner.1684308441.txt.gz · Last modified: 2023/05/17 10:27 by ion.calugaritoiu
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