Obsah:
- Krok 1: Zoznam vybavenia (vyfoťte predstavenstvo a Kevinovu súťaž)
- Krok 2: Prehľad
- Krok 3: Súbor Wav
- Krok 4: Python- Použitie Pylabu a Scipy
- Krok 5: Vzorkovanie v Pythone a FFT (Zobraziť kód a jeho výsledky)
- Krok 6: Vivado (komparátor)
- Krok 7: OBRAZY ZÁKLADOV 3 doska
- Krok 8: Vivado (7 -segmentový dekodér s multiplexovaním)
- Krok 9: Vivado (kombinácia komponentov)
Video: Tuner: 9 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Tento projekt bol navrhnutý na výrobu gitarového tunera pomocou Vivado a 7-segmentového displeja. Akonáhle tuner nájde frekvenciu vstupného zvuku, tuner porovná túto hodnotu so zoznamom pevne zakódovaných hodnôt pre presné frekvencie, ktoré sú známe ako štandardná frekvencia pre správnu výšku tónu. Potom tuner zobrazí, ako blízko alebo ako ďaleko je váš zvuk od požadovanej noty. Je zaujímavé, že zvuková vlna je kombináciou viacerých sínusových priebehov so skutočnými a imaginárnymi zložkami. Aj keď sa to neznámym ľuďom môže zdať ťažké pracovať, existuje niekoľko spôsobov, ktorými môžeme vlnu analyzovať so skutočnými a imaginárnymi hodnotami.
Demo:
Krok 1: Zoznam vybavenia (vyfoťte predstavenstvo a Kevinovu súťaž)
Najprv potrebujeme dosku Basys 3 a počítač, ktorý podporuje nasledujúce programy. Garageband/Audacity alebo iný DAW - nahrávanie cez mikrofón a export súborov wav
Python - schopný používať pylab a scipy na vzorkovanie a fft
Vivado - pripojiť sa k doske Basys 3 a vizuálne vidieť výsledky
Krok 2: Prehľad
Tuner sa skladá z niekoľkých dôležitých komponentov: mikrofón, sampler, FFT (Fast Fourierova transformácia), komparátor, dekodér a displej. Účelom mikrofónu je zachytiť vstupný priebeh. Vzorkovač prijíma výstupný signál mikrofónu a pomocou FFT prevádza signál na výstup vo veľkostiach vo frekvenciách. Potom pomocou výstupu FFT a zistenia maximálnej veľkosti a frekvencie s ňou spojenej vydelenej 2 je možné nájsť frekvenciu spojenú s výškou priebehu vlny. Táto hodnota potom môže ísť do komparátora. Potom sa porovná s vyhľadávacou tabuľkou, ktorá už má nastavené frekvenčné hodnoty pre perfektné výšky všetkých tónov. Komparátor dostane vstup pre požadovanú notu, ktorú potom môže z vyhľadávacej tabuľky priradiť k požadovanej note k jej správnej frekvencii. Potom komparátor vyberie notu s najbližšou frekvenciou k maximálnej frekvencii. Komparátor porovná tieto dve hodnoty a zblízka uvidí, že hodnota frekvencie je na požadovanej úrovni, a potom tieto údaje vloží do signálu. Komparátor pošle tento signál do dekodéra, kde dekodér vyberie vstupy pre anódy 7-segmentového displeja, aby ukázal presnosť noty.
Krok 3: Súbor Wav
V tomto kroku vezmeme wav súbor výšky tónu a pokúsime sa vydať frekvenciu tohto tónu.
Najprv potrebujete súbor wav poznámky. V tomto prípade použijeme 16 -bitový stereofónny súbor wav so vzorkovacou frekvenciou 44,1 kHz. Môžete to vytvoriť v DAW, ako napríklad Garageband, alebo stiahnuť. V tomto prípade si môžete stiahnuť sínusovú vlnu A4 440 Hz, ktorú sme vytvorili na Garageband, tu.
Krok 4: Python- Použitie Pylabu a Scipy
Na vykonanie „rýchlej Fourierovej transformácie“sme použili knižnicu Python. Online zdroj nám umožnil napodobniť a zistiť, čo je užitočné v jazyku pylab a scipy.
1. Ak ste nenainštalovali pylab alebo scipy, musíte to urobiť. Alebo má Pycharm veľmi dobrú vlastnosť, keď sa pokúšate importovať pylab alebo scipy, je tu podčiarknuté podčiarknutie, ktoré vám hovorí, že ste ešte nenainštalovali knižnicu. Potom ich môžete nainštalovať priamo stlačením červenej žiarovky (zobrazí sa, keď umiestnite kurzor do blízkosti vlnitého podčiarknutia).
2. Pomocou funkcie scipy.io.wavfile.read načítajte a vytiahnite údaje zo vzorového súboru wav. Prejdite údajmi na stránke pylab.fft a vráti vám zoznam veľkostí výkonu.
3. Potom nájdite maximum energie vyžarovanej zo zoznamu. Vyhľadajte index zoznamu, kde sa vyskytuje maximálny výkon, pretože je to najrýchlejší spôsob, ako zistiť, aká frekvencia je spojená s týmto výkonom. Nakoniec vráťte maximálnu frekvenciu. Pretože neskôr potrebujeme zadať binárny frekvenčný signál do kódu VHDL, môžeme frekvenciu v floate previesť na binárnu a vrátiť ju.
Krok 5: Vzorkovanie v Pythone a FFT (Zobraziť kód a jeho výsledky)
V tomto kroku prejdite na nasledujúci odkaz na odber vzoriek a FFT.
samcarcagno.altervista.org/blog/basic-sound… Náš kód:
Po inštalácii pylab a scipy je možné importovať a čítať súbory wav.
z pylab import*zo scipy.io import wavfile
sampFreq, snd = wavfile.read ('440_sine.wav')
Potom snd.shape predstavuje vzorové body a počet kanálov. V našom prípade vzorkovacie body závisia od toho, ako dlho je súbor wav a počet kanálov 2, pretože je stereofónny.
Potom snd = snd / (2. ** 15) …… xlabel („čas (ms)“)
organizuje časový signál do poľa.
Potom FFT vytvorí pole vo frekvencii a veľkosti (výkon)
Potom sa pomocou slučky cyklu zistí maximálna veľkosť a frekvencia s ňou spojená. Táto frekvencia/2 predstavuje výšku vlnového súboru.
Potom pomocou nášho vlastného kódu bolo celé číslo predstavujúce frekvenciu prevedené na 12 -bitové binárne číslo a bol v ňom vytvorený textový súbor.
Krok 6: Vivado (komparátor)
V tejto časti procesu potrebujeme komparátor na porovnanie dvoch vstupných frekvencií.
1. Vytvoril komparátor na porovnanie, či je vstupná (prijímacia) frekvencia vyššia, nižšia alebo v medziach definovaných v rozpätí 2 Hz. (typický gitarový tuner sa pohybuje od e2 do g5, 82 Hz až 784 Hz).
2. Pri vytváraní rezervy 2 Hz sme použili RCA na pridanie „000000000010“k frekvencii prijímača a skontrolovali, kde je stále príliš nízka na vstup užívateľa. Ak je to tak, jednobitový signál „vysoký“<= „0“, „nízky“<= „1“. Potom do užívateľského vstupu pridáme „000000000010“, aby sme zistili, či je vstup prijímača ešte vyšší. V takom prípade „vysoká“<= „1“, „nízka“<= „0“. Ani jeden prípad nevráti „0“.
3. Pretože ďalšia časť modulu potrebuje konkrétne 4-bitové údaje na zistenie, čo je poznámka príjemcu, nielen vrátenie 2 porovnateľných výstupov (nízky a vysoký), musíme vrátiť kódový sprievodca do poznámky, ktorý je spojený s frekvencia. Pozrite sa na tabuľku nižšie:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
A | 0001
A# | 1001
B | 0010
Použitie niekoľkých príkazov if na ich kategorizáciu do poznámky a ich zakódovanie do toho, čo je potrebné pre sedemsegmentový dekodér.
Krok 7: OBRAZY ZÁKLADOV 3 doska
Krok 8: Vivado (7 -segmentový dekodér s multiplexovaním)
Všetko potrebuje displej. Je to dôležitý faktor, ktorý určuje hodnotu dizajnu. Preto musíme vytvoriť displej pomocou sedemsegmentového dekodéra, ktorý by nám umožnil predviesť našu schopnosť navrhnúť tuner na doske B. Pomohlo by nám to aj pri testovaní a ladení.
Sedemsegmentový dekodér obsahuje vstupy s názvom Note, Low, High a CLK pri výstupe SSEG, AN a Fiz_Hz. Vyššie je uvedený obrázok blokového diagramu, ktorý nám pomáha porozumieť návrhu.
Účelom dvoch oddelených nízkych a vysokých vstupov je poskytnúť návrhárovi komparátora voľnosť pri manipulácii s tým, či je zvuková (vlnová) frekvencia vyššia alebo nižšia ako vstupná frekvencia (Fix_Hz), ktorú chce používateľ porovnávať. Výstup SSEG navyše predstavuje zobrazenie siedmich segmentov a bodku vedľa, zatiaľ čo AN predstavuje anódy, pre ktoré sa rozsvieti sada siedmich segmentov displeja.
V tomto sedemsegmentovom dekodéri hrajú hodiny (CLK) dôležitú úlohu pri zobrazovaní dvoch rôznych hodnôt na dvoch alebo viacerých rôznych anódach. Pretože nám doska neumožňuje zobrazovať dve rôzne hodnoty súčasne, musíme použiť multiplexovanie na zobrazenie hodnoty po jednej, pričom prepíname na inú hodnotu dostatočne rýchlo, aby ju naše oči nedokázali zachytiť. Tu vstupuje do hry vstup CLK.
Viac informácií nájdete v zdrojovom kóde.
Krok 9: Vivado (kombinácia komponentov)
Po dokončení všetkých modulov (prijímač pythonu, komparátor, sedemsegmentový dekodér atď.) Sme ich potom spojili pomocou väčšieho modulu. Rovnako ako na obrázku v časti „Prehľad“, každý signál zodpovedajúcim spôsobom prepojíme. Pre informáciu si pozrite náš zdrojový kód "SW_Hz.vhd".
Ďakujem. Dúfam, že sa vám bude páčiť.
Odporúča:
Ako vyrobiť gitarový tuner Arduino: 4 kroky
Ako vyrobiť gitarový tuner Arduino: Toto sú pokyny na výrobu gitarového tunera z Arduina a niekoľkých ďalších komponentov. So základnými znalosťami elektroniky a kódovania budete schopní vyrobiť tento gitarový tuner. Najprv musíte vedieť, aké sú materiály. Ma
Počítadlo krokov - mikro: bit: 12 krokov (s obrázkami)
Počítadlo krokov - mikro: bit: Tento projekt bude počítadlom krokov. Na meranie našich krokov použijeme senzor akcelerometra, ktorý je vstavaný v Micro: Bit. Zakaždým, keď sa Micro: Bit zatrasie, pridáme k počtu 2 a zobrazíme ho na obrazovke
Akustická levitácia s Arduino Uno krok za krokom (8 krokov): 8 krokov
Akustická levitácia s Arduino Uno krok za krokom (8 krokov): Ultrazvukové meniče zvuku L298N Dc napájací adaptér ženského adaptéra s mužským DC kolíkom Arduino UNOBreadboard Ako to funguje: Najprv nahráte kód do Arduino Uno (je to mikrokontrolér vybavený digitálnym a analógové porty na prevod kódu (C ++)
Gitarový tuner Arduino: 3 kroky
Gitarový tuner Arduino: Tu je gitarový tuner, ktorý som vyrobil pomocou Arduino Uno a niektorých vecí, okolo ktorých som ležal. Funguje to takto: Každý má 5 tlačidiel, ktoré v štandardnom ladení gitary EADGBE vytvoria inú notu. Pretože som mal iba 5 tlačidiel, napísal som kód, takže
Ukelele tuner pomocou LabView a NI USB-6008: 5 krokov
Ukelele tuner pomocou LabView a NI USB-6008: Ako projekt učenia sa na základe problémov pre môj LabVIEW & Kurz prístrojovej techniky na Humber College (Electronics Engineering Technology), vytvoril som ukulele tuner, ktorý by využíval analógový vstup (tón strun ukulele), našiel základnú frekvenciu,