Obsah:
- Krok 1: Seznam vybavení (vyfoťte desku a Kevinovu Comp)
- Krok 2: Přehled
- Krok 3: Soubor Wav
- Krok 4: Python- Použití Pylabu a Scipy
- Krok 5: Vzorkování Pythonu a FFT (Zobrazit kód a jeho výsledky)
- Krok 6: Vivado (komparátor)
- Krok 7: OBRÁZKY BASYS 3 Board
- Krok 8: Vivado (7segmentový dekodér s multiplexováním)
- Krok 9: Vivado (kombinace komponent)
Video: Tuner: 9 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
Tento projekt byl navržen tak, aby vytvořil kytarový tuner pomocí Vivado a 7segmentového displeje. Jakmile tuner najde frekvenci zadaného zvuku, tuner porovná tuto hodnotu se seznamem pevně zakódovaných hodnot pro přesné frekvence, které jsou známé jako standardní frekvence pro správnou výšku noty. Poté tuner zobrazí, jak blízko nebo daleko je váš zadaný zvuk od požadované noty. Zajímavé je, že zvuková vlna je kombinací více sinusových průběhů se skutečnými a imaginárními složkami. I když se to může zdát obtížné pracovat s neznámými, existuje několik způsobů, jak můžeme vlnu analyzovat se skutečnými a imaginárními hodnotami.
Demo:
Krok 1: Seznam vybavení (vyfoťte desku a Kevinovu Comp)
Nejprve potřebujeme desku Basys 3 a počítač, který podporuje následující programy. Garageband/Audacity nebo jiný DAW - nahrávat pomocí mikrofonu a exportovat soubory wav
Python - schopen používat pylab a scipy pro vzorkování a fft
Vivado - připojit se k desce Basys 3 a vizuálně vidět výsledky
Krok 2: Přehled
Tuner se skládá z několika důležitých komponent: mikrofon, sampler, FFT (Fast Fourierova transformace), komparátor, dekodér a displej. Účelem mikrofonu je zachytit vstupní průběh. Vzorkovač přijímá výstupní signál mikrofonu a pomocí FFT převádí signál na výstup velikosti ve frekvencích. Poté pomocí výstupu FFT a nalezení maximální velikosti a k ní přidružené frekvence děleno 2 lze nalézt frekvenci spojenou s výškou průběhu vlny. Tato hodnota pak může jít do komparátoru. Poté je porovnán s vyhledávací tabulkou, která již má nastavené frekvenční hodnoty pro perfektní výšky všech not. Komparátoru je zadán vstup pro požadovanou notu, kterou pak může z vyhledávací tabulky přiřadit požadované notě ke správné frekvenci. Poté komparátor vybere notu s nejbližší frekvencí k maximální frekvenci. Komparátor porovná obě hodnoty a uvidí, že hodnota frekvence je na požadované hodnotě, a poté vloží tato data do signálu. Komparátor odešle tento signál do dekodéru, kde dekodér zvolí vstupy pro anody 7segmentového displeje, aby ukázal přesnost noty.
Krok 3: Soubor Wav
V tomto kroku vezmeme soubor wav o výšce a pokusíme se vydat frekvenci této výšky.
Nejprve potřebujete wav soubor poznámky. V tomto příkladu použijeme 16bitový stereofonní soubor wav se vzorkovací frekvencí 44,1 kHz. To lze buď vytvořit v DAW, jako je Garageband, nebo stáhnout. V tomto případě si můžete stáhnout sinusovou vlnu A4 440 Hz, kterou jsme vytvořili na Garageband, zde.
Krok 4: Python- Použití Pylabu a Scipy
K provedení „rychlé Fourierovy transformace“jsme použili knihovnu Python. Online zdroj nám umožnil napodobit a zjistit, co je užitečné v pylabu a scipy.
1. Pokud jste nenainstalovali pylab nebo scipy, musíte to udělat. Nebo Pycharm má velmi dobrou funkci, když se pokusíte importovat pylab nebo scipy, je zde podtržené podtržení, které vám říká, že jste si knihovnu ještě nenainstalovali. Poté je můžete nainstalovat přímo stisknutím červené žárovky (objeví se, když umístíte kurzor poblíž vlnitého podtržení).
2. Pomocí funkce scipy.io.wavfile.read načtěte a vytáhněte data ze vzorového souboru wav. Projděte data pylab.fft, vrátí vám seznam velikosti síly.
3. Poté najděte maximum výkonu vyzařovaného ze seznamu. Vyhledejte index seznamu, kde dochází k maximálnímu výkonu, protože je to rychlejší způsob, jak zjistit, jaká frekvence je s tímto výkonem spojena. Nakonec vraťte maximální frekvenci. Protože později potřebujeme vložit binární frekvenční signál do kódu VHDL, můžeme frekvenci ve floatu převést na binární a vrátit ji.
Krok 5: Vzorkování Pythonu a FFT (Zobrazit kód a jeho výsledky)
V tomto kroku přejděte k odběru vzorků a FFT na tento odkaz níže.
samcarcagno.altervista.org/blog/basic-sound… Náš kód:
Po instalaci pylab a scipy je možné importovat a číst soubory wav.
z pylab import*ze scipy.io import wavfile
sampFreq, snd = wavfile.read ('440_sine.wav')
Pak snd.shape představuje ukázkové body a počet kanálů. V našem případě vzorkovací body závisí na tom, jak dlouhý je soubor wav a počet kanálů je 2, protože je stereo.
Potom snd = snd / (2. ** 15) …… xlabel ('Čas (ms)')
organizuje časový signál do pole.
Poté FFT vytvoří pole frekvence a velikosti (výkon)
Poté je pomocí smyčky while nalezena maximální velikost a frekvence s ní spojená. Tato frekvence/2 představuje výšku vlnového souboru.
Poté pomocí našeho vlastního kódu bylo celé číslo představující frekvenci převedeno na 12bitové binární číslo a byl v něm vytvořen textový soubor.
Krok 6: Vivado (komparátor)
V této části procesu potřebujeme komparátor pro porovnání dvou vstupních frekvencí.
1. Vytvořil komparátor pro porovnání, zda je vstupní (přijímací) frekvence vyšší, nižší nebo v rámci definovaného rozsahu rozpětí 2 Hz. (typický kytarový tuner se pohybuje od e2 do g5, 82 Hz až 784 Hz).
2. Při vytváření okraje 2 Hz jsme pomocí RCA přidali „000000000010“k frekvenci přijímače a zkontrolovali, kde je stále příliš nízká pro vstup uživatele. Pokud je tomu tak, jednobitový signál „vysoký“<= „0“, „nízký“<= „1“. Poté přidáme do uživatelského vstupu „000000000010“, abychom zjistili, zda je vstup přijímače ještě vyšší. V takovém případě „vysoká“<= „1“, „nízká“<= ‚0‘. Ani jeden případ nevrátí „0“.
3. Vzhledem k tomu, že další část modulu potřebuje konkrétní 4bitová data, aby bylo možné zjistit, co je poznámka příjemce, nejen že vrací 2 srovnávací výstupy (nízký a vysoký), musíme vrátit přidružený kód k poznámce, který je spojen s frekvence. Viz následující tabulka:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
A | 0001
A# | 1001
B | 0010
Pomocí několika příkazů if je kategorizujte do poznámky a zakódujte je do toho, co je potřeba pro sedmisegmentový dekodér.
Krok 7: OBRÁZKY BASYS 3 Board
Krok 8: Vivado (7segmentový dekodér s multiplexováním)
Všechno potřebuje displej. Je to důležitý faktor, který určuje hodnotu designu. Proto musíme vytvořit displej pomocí sedmisegmentového dekodéru, což by nám umožnilo prokázat naši schopnost navrhnout tuner na desce B. Také by nám to pomohlo při testování a ladění.
Sedmisegmentový dekodér obsahuje vstupy pojmenované Note, low, high a CLK při výstupu SSEG, AN a Fiz_Hz. Nahoře je obrázek blokového diagramu, který nám pomáhá porozumět návrhu.
Účelem dvou oddělených nízkých a vysokých vstupů je poskytnout konstruktérovi komparátoru volnost při manipulaci s tím, zda je zvuková (vlnová) frekvence vyšší nebo nižší než vstupní frekvence (Fix_Hz), kterou chce uživatel porovnávat. Kromě toho výstupní SSEG představuje zobrazení sedmi segmentů a tečku vedle, zatímco AN představuje anody, pro které se rozsvítí sada zobrazení sedmi segmentů.
V tomto sedmisegmentovém dekodéru hrají hodiny (CLK) důležitou roli při zobrazování dvou různých hodnot na dvou nebo více různých anodách. Protože nám deska neumožňuje zobrazit dvě různé hodnoty současně, musíme použít multiplexování k zobrazení hodnoty po jedné, přičemž přepneme na jinou hodnotu dostatečně rychle, aby ji naše oči nedokázaly zachytit. Zde vstupuje do hry vstup CLK.
Další informace naleznete ve zdrojovém kódu.
Krok 9: Vivado (kombinace komponent)
Po dokončení všech modulů (přijímač pythonu, komparátor, sedmisegmentový dekodér atd.) Jsme pak dali dohromady pomocí většího modulu. Stejně jako na obrázku v sekci "Pohled" zobrazujeme každý signál odpovídajícím způsobem. Pro informaci prosím zkontrolujte náš zdrojový kód "SW_Hz.vhd".
Děkuji. Doufám, že si to užiješ.
Doporučuje:
Jak vyrobit kytarový tuner Arduino: 4 kroky
Jak vyrobit kytarový tuner Arduino: Toto jsou pokyny k vytvoření kytarového tuneru z Arduina a několika dalších komponent. Se základními znalostmi elektroniky a kódování budete schopni vyrobit tento kytarový tuner. Nejprve musíte vědět, jaké jsou materiály
Počitadlo kroků - mikro: bit: 12 kroků (s obrázky)
Počitadlo kroků - Micro: Bit: Tento projekt bude počítadlem kroků. K měření našich kroků použijeme snímač akcelerometru, který je zabudovaný v Micro: Bit. Pokaždé, když se Micro: Bit zatřese, přidáme 2 k počtu a zobrazíme ho na obrazovce
Kytarový tuner Arduino: 3 kroky
Arduino Guitar Tuner: Zde je kytarový tuner, který jsem vyrobil pomocí Arduino Uno a některých věcí, kolem kterých jsem ležel. Funguje to takto: Ve standardním kytarovém ladění EADGBE je k dispozici 5 tlačítek, která vytvoří jinou notu. Protože jsem měl jen 5 tlačítek, napsal jsem kód, takže
Ukelele tuner pomocí LabView a NI USB-6008: 5 kroků
Tuner Ukelele pomocí LabView a NI USB-6008: Jako projekt pro učení se problémům pro můj LabVIEW & Kurz přístrojové techniky na Humber College (Electronics Engineering Technology), vytvořil jsem ukulele tuner, který by vzal analogový vstup (ukulele string tón), našel základní frekvenci
Hacking TV tuner ke čtení fotografií Země ze satelitů: 7 kroků (s obrázky)
Hacking TV Tuner ke čtení fotografií Země ze satelitů: Nad našimi hlavami je spousta satelitů. Věděli jste, že přenosy z nich můžete přijímat pouze pomocí počítače, TV tuneru a jednoduché antény pro kutily? Například obrázky Země v reálném čase. Ukážu vám jak. Budete potřebovat:- 2 w