Taula de continguts:
- Pas 1: Llista d'equips (feu una foto del tauler i de Kevin's Comp)
- Pas 2: Visió general
- Pas 3: fitxer WAV
- Pas 4: Python: usos de Pylab i Scipy
- Pas 5: Python-Sampling i FFT (Mostra el codi i els seus resultats)
- Pas 6: Vivado (comparador)
- Pas 7: FOTOS DE BASYS 3 Tauler
- Pas 8: Vivado (descodificador de 7 segments amb multiplexació)
- Pas 9: Vivado (combinació de components)
Vídeo: Sintonitzador: 9 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:16
Aquest projecte va ser dissenyat per fabricar un afinador de guitarra mitjançant Vivado i una pantalla de 7 segments. Una vegada que el sintonitzador troba la freqüència del so introduït, el sintonitzador compararà aquest valor amb una llista de valors codificats per a freqüències exactes que es coneixen com a freqüència estàndard per al to correcte d'una nota. A continuació, el sintonitzador mostrarà la distància o la distància del so introduït de la nota desitjada. L’interessant és que una ona sonora és una combinació de múltiples formes d’ona sinusoïdals amb components reals i imaginaris. Tot i que això pot semblar difícil de treballar per a aquells que no estiguin familiaritzats, hi ha algunes maneres en què encara podem analitzar una ona amb valors reals i imaginaris.
Demostració:
Pas 1: Llista d'equips (feu una foto del tauler i de Kevin's Comp)
Primer necessitem una placa Basys 3 i un ordinador que admeti els següents programes: Garageband / Audacity o un altre DAW: per gravar a través d’un micròfon i exportar fitxers d’ona
Python: capaç d'utilitzar pylab i scipy per a mostreig i fft
Vivado: per connectar-se al tauler Basys 3 i veure visualment els resultats
Pas 2: Visió general
Un sintonitzador està format per pocs components importants: micròfon, sampler, FFT (Fast Fourier Transform), comparador, descodificador i pantalla. L’objectiu del micròfon és captar la forma d’ona d’entrada. El mostrejador rep el senyal de sortida del micròfon i utilitza el FFT per convertir el senyal en una sortida de magnitud en freqüències. A continuació, utilitzant la sortida del FFT i trobant la magnitud màxima i la freqüència associada dividida per 2, es pot trobar la freqüència associada amb el to de la forma d'ona. Aquest valor pot entrar al comparador. Després es compara amb una taula de cerca, que ja ha definit valors de freqüència per a to perfectes de totes les notes. Al comparador se li proporciona una entrada per a la nota desitjada, que pot fer coincidir la nota desitjada amb la freqüència correcta de la taula de cerca. A continuació, el comparador escollirà la nota amb la freqüència més propera a la freqüència màxima. El comparador compararà els dos valors i veurà com el valor de la freqüència és proper al desitjat i després posarà aquestes dades en un senyal. El comparador enviarà aquest senyal al descodificador, on el descodificador escollirà les entrades dels ànodes de la pantalla de 7 segments per mostrar la precisió de la nota.
Pas 3: fitxer WAV
En aquest pas, agafarem un fitxer wav d’un pitch i intentarem generar la freqüència d’aquest pitch.
Primer necessiteu un fitxer wav d’una nota. En aquest exemple utilitzarem un fitxer wav estèreo de 16 bits amb una freqüència de mostreig de 44,1 kHz. Això es pot crear en un DAW com Garageband o descarregar-lo. Per a aquest exemple, es pot descarregar una ona sinusoïdal A4 440Hz generada per nosaltres a Garageband aquí.
Pas 4: Python: usos de Pylab i Scipy
Hem utilitzat la biblioteca Python per fer la transformada de Fourier ràpida. El recurs en línia ens va permetre imitar i veure què és útil en pylab i scipy.
1. Si no heu instal·lat pylab o scipy, ho heu de fer. O bé, Pycharm té una funció molt bona, quan s’intenta importar pylab o scipy, hi ha un subratllat esquitxat que us indica que encara no heu instal·lat la biblioteca. A continuació, podeu instal·lar-les directament prement la bombeta vermella (apareixerà quan col·loqueu el cursor a prop del subratllat esquitxat).
2. Amb la funció scipy.io.wavfile.read, llegiu i traieu les dades del fitxer wav de mostra. Executeu les dades per pylab.fft, us mostrarà una llista de magnitud de la potència.
3. A continuació, busqueu el màxim de potència emesa a la llista. Cerqueu l’índex de llista on es produeix la potència màxima perquè la forma més ràpida de trobar quina freqüència s’associa amb aquesta potència. Finalment, torneu la freqüència màxima. Com que més endavant necessitem introduir un senyal de freqüència binària en codi VHDL, podem convertir la freqüència flotant en binària i retornar-la.
Pas 5: Python-Sampling i FFT (Mostra el codi i els seus resultats)
En aquest pas, els crèdits complets van a aquest enllaç següent per al mostreig i FFT.
samcarcagno.altervista.org/blog/basic-sound… El nostre codi:
Un cop instal·lats pylab i scipy, es poden importar i llegir fitxers wav.
des de la importació de pylab * des de la importació del fitxer wav scipy.io
sampFreq, snd = wavfile.read ('440_sine.wav')
A continuació, snd.shape representa els punts de mostra i el nombre de canals. En el nostre cas, els punts de mostra depenen de la longitud del fitxer d’ona i del nombre de canals 2, perquè és estèreo.
Aleshores snd = snd / (2. ** 15) …… xlabel ('Time (ms)')
organitza el senyal horari en una matriu.
A continuació, el FFT crea una matriu en freqüència i magnitud (Potència)
A continuació, a través d’un bucle de temps es troba la magnitud màxima i la freqüència associada a aquesta. Aquesta freqüència / 2 representa l’altura del fitxer d’ona.
A continuació, mitjançant el nostre propi codi, l’enter que representa la freqüència es va convertir en un número binari de 12 bits i es va crear un fitxer de text amb aquest número.
Pas 6: Vivado (comparador)
En aquesta part del procés, necessitem un comparador per comparar dues freqüències d’entrada.
1. S'ha creat un comparador per comparar si la freqüència d'entrada (receptor) és més alta, inferior o dins del marge de 2 Hz de la nota definida. (el sintonitzador de guitarra típic oscil·la entre e2 i g5, 82 Hz a 784 Hz).
2. En crear un marge de 2 Hz, hem utilitzat un RCA per afegir "000000000010" a la freqüència del receptor i comprovar on encara és massa baix per a l'entrada de l'usuari. Si és així, el senyal de bit únic és "alt" <= '0', "baix" <= '1'. A continuació, afegim "000000000010" a l'entrada de l'usuari per veure si l'entrada del receptor és fins i tot superior a aquesta. Si és així, "alt" <= '1', "baix" <= '0'. Cap dels dos casos retornaria "0".
3. Com que la següent part del mòdul necessita dades específiques de 4 bits per saber què és la nota del receptor, no només es retornen les 2 sortides comparatives (baixa i alta), hem de retornar el codi associat a nota, que s’associa amb la freqüència. Consulteu el quadre següent:
C | 0011
C # | 1011
D | 0100
D # | 1100
E | 0101
F | 0110
F # | 1110
G | 0111
G # | 1111
A | 0001
A # | 1001
B | 0010
Utilitzant diverses sentències if per classificar-les en notes i codificar-les en allò que es necessita per al descodificador de set segments.
Pas 7: FOTOS DE BASYS 3 Tauler
Pas 8: Vivado (descodificador de 7 segments amb multiplexació)
Tot necessita una pantalla. És un factor important que determina el valor d’un disseny. Per tant, hem de crear una pantalla amb un descodificador de set segments, que ens permeti demostrar la nostra capacitat per dissenyar un sintonitzador a la placa B. A més, ens ajudaria a provar i depurar.
Un descodificador de set segments conté entrades anomenades Note, low, high i CLK, mentre que publica SSEG, AN i Fiz_Hz. Hi ha una imatge del diagrama de blocs anterior per ajudar-nos a entendre el disseny.
El propòsit de tenir dues entrades altes i baixes és proporcionar al dissenyador del comparador la llibertat de manipular si la freqüència de so (ona) és superior o inferior a la freqüència d’entrada (Fix_Hz) que l’usuari vol comparar. A més, la sortida SSEG representa la visualització dels set segments i el punt següent, mentre que l'AN representa els ànodes per als quals es mostrarà el conjunt dels set segments.
En aquest descodificador de set segments, el rellotge (CLK) té un paper important en la visualització de dos valors diferents en dos o més ànodes diferents. Com que la Junta no ens permet mostrar dos valors diferents al mateix temps, hem d’utilitzar la multiplexació per mostrar un valor d’un en un, alhora que canviem a un altre valor prou ràpid com perquè els nostres ulls no puguin captar-lo. Aquí és on entra en joc l’entrada CLK.
Per obtenir més informació, consulteu el codi font.
Pas 9: Vivado (combinació de components)
Amb tots els mòduls (receptor de python, comparador, descodificador de set segments, etc.) completats, ens ajuntem amb un mòdul més gran. Igual que la imatge que es mostra a la secció "Vista general", connectem cada senyal en conseqüència. Com a referència, consulteu el nostre codi font "SW_Hz.vhd".
Gràcies. Espero que gaudeixis.
Recomanat:
Com fer un sintonitzador de guitarra Arduino: 4 passos
Com fer un sintonitzador de guitarra Arduino: aquestes són les instruccions per fabricar un sintonitzador de guitarra amb un Arduino i diversos components més. Amb coneixements bàsics d’electrònica i codificació, podreu fabricar aquest sintonitzador de guitarra. Primer, primer heu de saber quins són els materials. Ma
Sintonitzador de guitarra Arduino: 3 passos
Sintonitzador de guitarra Arduino: aquí teniu un afinador de guitarra que he fet amb un Arduino Uno i algunes coses que tenia al voltant. Funciona així: hi ha 5 botons cadascun que produiran una nota diferent a la sintonització de guitarra estàndard EADGBE. Com que només tenia 5 botons, vaig escriure codi així
Sintonitzador Ukelele mitjançant LabView i NI USB-6008: 5 passos
Sintonitzador Ukelele amb LabView i NI USB-6008: com a projecte d'aprenentatge basat en problemes per al meu LabVIEW & Curs d'instrumentació a Humber College (Electrònica d'Enginyeria Tecnològica), vaig crear un sintonitzador d'ukelele que prendria una entrada analògica (to de corda d'ukelele), trobaria la freqüència fonamental
Sintonitzador de TV piratejat per llegir fotos de la Terra de satèl·lits: 7 passos (amb imatges)
Sintonitzador de TV piratejat per llegir fotos de la Terra de satèl·lits: hi ha molts satèl·lits per sobre dels nostres caps. Sabíeu que utilitzant només el vostre ordinador, sintonitzador de TV i antena de bricolatge senzilla, podríeu rebre'n les transmissions? Per exemple, imatges de la terra en temps real. Us mostraré com. Necessitareu: - 2 w
Corregiu una cadena de sintonitzador de ràdio vintage: 11 passos (amb imatges)
Corregiu una cadena de sintonitzador de ràdio vintage: ja hi ha alguns tutorials molt agradables a les ràdios antigues, però tenia un problema específic: la ràdio engega la ràdio fa soroll i es fa més forta amb el comandament de volum, però girant el comandament de sintonització no es mou l'agulla ni es canvia