Satura rādītājs:
- 1. solis: aprīkojuma saraksts (uzņemiet tāfeles attēlu un Kevina Comp)
- 2. darbība. Pārskats
- 3. darbība: Wav fails
- 4. solis: Python- Pylab un Scipy lietojumi
- 5. darbība: Python paraugu ņemšana un FFT (rādīt kodu un tā rezultātus)
- 6. darbība: Vivado (salīdzinātājs)
- 7. solis: BASYS 3 attēli
- 8. darbība: Vivado (7 segmentu dekodētājs ar multipleksēšanu)
- 9. darbība: Vivado (komponentu apvienošana)
Video: Tuner: 9 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:58
Šis projekts tika izstrādāts, lai izveidotu ģitāras skaņotāju, izmantojot Vivado un 7 segmentu displeju. Kad skaņotājs atradīs ievadītās skaņas frekvenci, skaņotājs salīdzinās šo vērtību ar cieto kodu sarakstu ar precīzām frekvencēm, kas pazīstamas kā standarta frekvence pareizai notis. Pēc tam uztvērējs parādīs, cik tuvu vai tālu jūsu ievadītā skaņa ir no vēlamās piezīmes. Interesanti ir tas, ka skaņas vilnis ir vairāku sinusoidālu viļņu formu kombinācija ar reāliem un iedomātiem komponentiem. Lai gan nepazīstamiem cilvēkiem ar to var šķist grūti strādāt, ir daži veidi, kā mēs joprojām varam analizēt vilni ar reālām un iedomātām vērtībām.
Demo:
1. solis: aprīkojuma saraksts (uzņemiet tāfeles attēlu un Kevina Comp)
Vispirms mums ir nepieciešama Basys 3 plate un dators, kas atbalsta šādas programmas. Garageband/Audacity vai cits DAW - lai ierakstītu caur mikrofonu un eksportētu wavfiles
Python - var izmantot pylab un scipy paraugu ņemšanai un fft
Vivado - lai izveidotu savienojumu ar Basys 3 dēli un vizuāli redzētu rezultātus
2. darbība. Pārskats
Uztvērēju veido daži svarīgi komponenti: mikrofons, paraugu ņemšanas ierīce, FFT (ātrā Furjē transformācija), salīdzinātājs, dekodētājs un displejs. Mikrofona mērķis ir uztvert ievades viļņu formu. Paraugu ņemšanas ierīce uztver mikrofona izejas signālu un izmanto FFT, lai signālu pārvērstu par frekvences izvadi. Tad, izmantojot FFT izvadi un atrodot maksimālo lielumu un ar to saistīto frekvenci dalot ar 2, var atrast frekvenci, kas saistīta ar viļņu formas piķi. Pēc tam šī vērtība var nonākt salīdzinājumā. Pēc tam to salīdzina ar uzmeklēšanas tabulu, kurā jau ir noteiktas frekvenču vērtības visu notu perfektiem augstumiem. Salīdzinātājam tiek ievadīta vēlamās piezīmes ievade, kas pēc tam no uzmeklēšanas tabulas var saskaņot vēlamo piezīmi ar pareizo frekvenci. Tad salīdzinātājs izvēlēsies piezīmi ar maksimālajai frekvencei vistuvāko frekvenci. Salīdzinātājs salīdzinās abas vērtības un redzēs, vai frekvences vērtība ir tuvu vēlamajai, un pēc tam šos datus ievieto signālā. Salīdzinātājs nosūtīs šo signālu dekodētājam, kur dekodētājs izvēlēsies ieejas 7 segmentu displeja anodiem, lai parādītu piezīmes precizitāti.
3. darbība: Wav fails
Šajā solī mēs ņemsim piķa wav failu un mēģināsim izvadīt šī piķa frekvenci.
Vispirms jums ir nepieciešams piezīmes wav fails. Šajā piemērā mēs izmantosim 16 bitu stereo wav failu ar izlases frekvenci 44,1 kHz. To var izveidot DAW, piemēram, Garageband, vai lejupielādēt. Šajā piemērā šeit lejupielādējams A4 440 Hz sinusa vilnis, ko esam izveidojuši vietnē Garageband.
4. solis: Python- Pylab un Scipy lietojumi
Mēs izmantojām Python bibliotēku, lai veiktu “ātro Furjē pārveidošanu”. Tiešsaistes resurss ļāva mums atdarināt un redzēt, kas ir noderīgs pylab un scipy.
1. Ja neesat instalējis pylab vai scipy, jums tas jādara. Vai arī Pycharm ir ļoti laba iezīme: mēģinot importēt pylab vai scipy, tiek parādīts nelāgs pasvītrojums, kas norāda, ka bibliotēka vēl nav instalēta. Pēc tam tos var instalēt tieši, nospiežot sarkano spuldzi (tā parādīsies, novietojot kursoru netālu no pasvītrotā pasvītrojuma).
2. Izmantojot funkciju scipy.io.wavfile.read, izlasiet un izvelciet datus no parauga wav faila. Pārlūkojiet datus, izmantojot pylab.fft, tas atgriezīs jums jaudas lieluma sarakstu.
3. Pēc tam atrodiet sarakstā maksimāli izstaroto jaudu. Meklējiet saraksta indeksu, kurā notiek maksimālā jauda, jo ātrākais veids, kā noteikt frekvenci, kas saistīta ar šo jaudu. Visbeidzot atgrieziet maksimālo frekvenci. Tā kā vēlāk mums ir jāievada binārā frekvences signāls VHDL kodā, mēs varam pārvērst frekvenci pludiņā par bināru un atgriezt to.
5. darbība: Python paraugu ņemšana un FFT (rādīt kodu un tā rezultātus)
Šajā solī izlases iegūšanai un FFT ir pieejami visi tālāk norādītie saiti.
samcarcagno.altervista.org/blog/basic-sound…Mūsu kods:
Pēc Pylab un Scipy instalēšanas wav failus var importēt un lasīt.
no pylab importa*no scipy.io importa wavfile
sampFreq, snd = wavfile.read ('440_sine.wav')
Tad snd.shape attēlo izlases punktus un kanālu skaitu. Mūsu gadījumā izlases punkti ir atkarīgi no tā, cik ilgs ir wavfile, un kanālu # ir 2, jo tas ir stereo.
Tad snd = snd / (2. ** 15) …… xlabel ('Laiks (ms)')
sakārto laika signālu masīvā.
Tad FFT izveido masīvu frekvencē un lielumā (jauda)
Tad ar kādu laiku tiek atrasts maksimālais lielums un ar to saistītā frekvence. Šī frekvence/2 apzīmē wavfile piķi.
Tad, izmantojot mūsu pašu kodu, vesels skaitlis, kas attēlo frekvenci, tika pārvērsts 12 bitu binārajā skaitlī, un tika izveidots teksta fails ar šo numuru.
6. darbība: Vivado (salīdzinātājs)
Šajā procesa daļā mums ir nepieciešams salīdzinātājs, lai salīdzinātu divas ievades frekvences.
1. Izveidoja salīdzinātāju, lai salīdzinātu, vai ieejas (uztvērēja) frekvence ir augstāka, zemāka vai 2 Hz robežas definētajā piezīmē. (tipisks ģitāras uztvērējs svārstās no e2 līdz g5, 82 Hz līdz 784 Hz).
2. Veidojot 2 Hz rezervi, mēs izmantojām RCA, lai uztvērēja frekvencei pievienotu “000000000010” un pārbaudītu, kur tā joprojām ir pārāk zema lietotāja ievadīšanai. Ja tas tā ir, viena bita signāls “augsts” <= ‘0’, “zems” <= ‘1’. Pēc tam lietotāja ievadei pievienojam “000000000010”, lai redzētu, vai uztvērēja ievade ir vēl augstāka. Ja tas tā ir, “augsts” <= ‘1’, “zems” <= ‘0’. Abi gadījumi neatgriezīs “0”.
3. Tā kā nākamajai moduļa daļai ir nepieciešami īpaši 4 bitu dati, lai pateiktu, kāda ir uztvērēja piezīme, ne tikai atgriežot 2 salīdzinošos izvadus (zemo un augsto), mums ir jāatgriež piezīmes kods, kas saistīts ar frekvence. Lūdzu, skatiet tālāk redzamo diagrammu:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
A | 0001
A# | 1001
B | 0010
Izmantojot vairākus paziņojumus, lai tos klasificētu piezīmēs un iekodētu tajā, kas nepieciešams septiņu segmentu dekodētājam.
7. solis: BASYS 3 attēli
8. darbība: Vivado (7 segmentu dekodētājs ar multipleksēšanu)
Visam nepieciešams displejs. Tas ir svarīgs faktors, kas nosaka dizaina vērtību. Tāpēc mums ir jāizveido displejs, izmantojot septiņu segmentu dekodētāju, kas ļautu mums parādīt savu spēju veidot skaņotāju B panelī. Turklāt tas mums palīdzētu testēšanā un atkļūdošanā.
Septiņu segmentu dekodētājs satur ievadi ar nosaukumu Note, low, high un CLK, vienlaikus izvadot SSEG, AN un Fiz_Hz. Iepriekš ir blokshēmas attēls, lai palīdzētu mums izprast dizainu.
Divas atsevišķas zemas un augstas ieejas mērķis ir nodrošināt salīdzinātāja izstrādātājam iespēju manipulēt ar to, vai skaņas (viļņu) frekvence ir augstāka vai zemāka par ievades frekvenci (Fix_Hz), ko lietotājs vēlas salīdzināt. Turklāt izejas SSEG attēlo septiņu segmentu displeju un punktu blakus, bet AN - anodus, kuriem iedegas septiņu segmentu kopa.
Šajā septiņu segmentu dekodētājā pulkstenim (CLK) ir svarīga loma, parādot divas dažādas vērtības divos vai vairākos dažādos anodos. Tā kā padome neļauj mums vienlaikus parādīt divas dažādas vērtības, mums ir jāizmanto multipleksēšana, lai parādītu vērtību pa vienai, vienlaikus pārejot uz citu vērtību pietiekami ātri, lai mūsu acis to nevarētu uztvert. Šeit parādās CLK ievade.
Lai iegūtu vairāk informācijas, lūdzu, skatiet avota kodu.
9. darbība: Vivado (komponentu apvienošana)
Kad visi moduļi (python uztvērējs, salīdzinātājs, septiņu segmentu dekodētājs utt.) Ir pabeigti, mēs saliekam kopā, izmantojot lielāku moduli. Tāpat kā attēlā sadaļā "Pārskats", mēs attiecīgi savienojam katru signālu. Lai uzzinātu, lūdzu, pārbaudiet mūsu avota kodu "SW_Hz.vhd".
Paldies. Ceru, ka jums patiks.
Ieteicams:
Arduino brīdinājuma sistēma par automašīnas novietošanu atpakaļgaitā Soli pa solim: 4 soļi
Arduino brīdinājuma sistēma par automašīnas novietošanu atpakaļgaitā Soli pa solim: Šajā projektā es izveidošu vienkāršu Arduino automašīnas atpakaļgaitas stāvvietas sensora shēmu, izmantojot Arduino UNO un ultraskaņas sensoru HC-SR04. Šo uz Arduino bāzēto automašīnas reverso brīdinājuma sistēmu var izmantot autonomai navigācijai, robotu diapazonam un citiem diapazoniem
Soli pa solim datora veidošana: 9 soļi
Soli pa solim datora veidošana: Piegādes: Aparatūra: mātesplateCPU & CPU dzesētājs PSU (barošanas bloks) Krātuve (HDD/SSD) RAMGPU (nav nepieciešams) Korpuss Instrumenti: skrūvgriezis ESD rokassprādze/matermālā pasta ar aplikatoru
Trīs skaļruņu shēmas -- Soli pa solim apmācība: 3 soļi
Trīs skaļruņu shēmas || Soli pa solim apmācība: Skaļruņu ķēde pastiprina no vides saņemtos audio signālus uz MIC un nosūta to skaļrunim, no kura tiek radīts pastiprināts audio. Šeit es parādīšu trīs dažādus veidus, kā izveidot šo skaļruņu shēmu, izmantojot:
Akustiskā levitācija ar Arduino Uno soli pa solim (8 soļi): 8 soļi
Akustiskā levitācija ar Arduino Uno soli pa solim (8 soļi): ultraskaņas skaņas pārveidotāji L298N līdzstrāvas adaptera strāvas padeve ar vīriešu līdzstrāvas tapu Arduino UNOBreadboard un analogie porti koda konvertēšanai (C ++)
Ukelele Tuner, izmantojot LabView un NI USB-6008: 5 soļi
Ukelele Tuner, izmantojot LabView un NI USB-6008: Kā uz problēmu balstīts mācību projekts manam LabVIEW & Instrumentu kurss Humber koledžā (elektronikas inženierijas tehnoloģija), es izveidoju ukuleles uztvērēju, kas ņemtu analogo ieeju (ukuleles stīgu tonis), atrastu pamata frekvenci