Tartalomjegyzék:
- 1. lépés: Felszerelési lista (készítsen egy képet a tábláról és Kevin Comp -ról)
- 2. lépés: Áttekintés
- 3. lépés: Wav fájl
- 4. lépés: Python- A Pylab és a Scipy használata
- 5. lépés: Python-Sampling és FFT (Kód és eredményeinek megjelenítése)
- 6. lépés: Vivado (összehasonlító)
- 7. lépés: BASYS KÉPEK 3 Tábla
- 8. lépés: Vivado (7 szegmenses dekódoló multiplexeléssel)
- 9. lépés: Vivado (összetevők kombinálása)
Videó: Tuner: 9 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
A projekt célja, hogy gitárhangolót készítsen Vivado és 7 szegmenses kijelző segítségével. Amint a tuner megtalálja a bevitt hang frekvenciáját, a tuner összehasonlítja ezt az értéket a kemény frekvenciájú értékek listájával a pontos frekvenciákhoz, amelyeket szabványos frekvenciának neveznek a hang megfelelő hangmagasságához. Ezután a tuner megjeleníti, hogy a bevitt hang milyen közel vagy távol van a kívánt hangtól. Érdekes, hogy a hanghullám több szinuszos hullámforma kombinációja valós és képzeletbeli komponensekkel. Bár ez ismeretlenek számára nehezen használható, néhány módszerrel mégis elemezhetjük a hullámot valós és képzelt értékekkel.
Demó:
1. lépés: Felszerelési lista (készítsen egy képet a tábláról és Kevin Comp -ról)
Először is szükségünk van egy Basys 3 kártyára és egy számítógépre, amely támogatja a következő programokat. Garageband/Audacity vagy más DAW - mikrofonon keresztül történő rögzítéshez és wav fájlok exportálásához
Python - képes a pylab és a scipy használatára mintavételre és fft -re
Vivado - csatlakozni a Basys 3 táblához, és vizuálisan látni az eredményeket
2. lépés: Áttekintés
A tuner néhány fontos összetevőből áll: mikrofonból, mintavevőből, FFT (Fast Fourier Transform), összehasonlítóból, dekódolóból és kijelzőből. A mikrofon célja a bemeneti hullámforma rögzítése. A mintavevő fogadja a mikrofon kimeneti jelét, és az FFT segítségével átalakítja a jelet nagyságrendű kimenetre a frekvenciákban. Ezután az FFT kimenetét felhasználva és a maximális nagyságot és a hozzá tartozó frekvenciát 2 -vel osztva megtalálható a hullámforma hangmagasságához tartozó frekvencia. Ez az érték akkor kerülhet az összehasonlítóba. Ezt követően összehasonlítjuk egy keresőtáblával, amely már beállította a frekvenciaértékeket az összes hang tökéletes hangmagasságához. Az összehasonlító egy bemenetet kap a kívánt hangjegyhez, amelyet ezután a keresési táblázatból a kívánt hangnak megfelelő frekvenciájához tud igazítani. Ezután az összehasonlító kiválasztja a maximális frekvenciához legközelebb eső hangot. Az összehasonlító összehasonlítja a két értéket, és látja, hogy a frekvencia értéke közel van a kívánt értékhez, majd ezeket az adatokat egy jelbe helyezi. A komparátor elküldi ezt a jelet a dekódolónak, ahol a dekóder kiválasztja a bemeneteket a 7 szegmenses kijelző anódjaihoz, hogy megmutassa a hang pontosságát.
3. lépés: Wav fájl
Ebben a lépésben egy hangmagot tartalmazó wav fájlt veszünk, és megpróbáljuk kiadni a hangmagasság frekvenciáját.
Először egy jegyzet wav fájljára van szüksége. Ebben a példában egy 16 bites sztereó wav fájlt fogunk használni, mintavételi gyakorisága 44,1 kHz. Ez létrehozható DAW -ban, például Garageband -ben, vagy letölthető. Ebben a példában letölthető innen a Garageband által generált A4 -es 440 Hz -es szinuszhullám.
4. lépés: Python- A Pylab és a Scipy használata
A Python könyvtárat használtuk a „Fast Fourier transzformáció” elvégzéséhez. Az online erőforrás lehetővé tette számunkra, hogy utánozzuk és megnézzük, mi hasznos a pylab és a scipy alkalmazásban.
1. Ha még nem telepítette a pylab vagy a scipy programot, akkor ezt meg kell tennie. Vagy a Pycharmnak van egy nagyon jó tulajdonsága, amikor a pylab vagy a scipy importálásával próbálkozik, akkor egy csípős aláhúzás jelzi, hogy még nem telepítette a könyvtárat. Ezután közvetlenül telepítheti őket, ha megnyomja a piros izzót (ez akkor jelenik meg, ha a kurzort az egyenes aláhúzás közelébe helyezi).
2. A scipy.io.wavfile.read funkció használatával olvassa el és húzza ki az adatokat a minta wav fájlból. Futtassa az adatokat a pylab.fft segítségével, és visszaadja a teljesítmény nagyságrendjét.
3. Ezután keresse meg a listából kibocsátott maximális teljesítményt. Keresse meg a listaindexet, ahol a maximális teljesítmény fordul elő, mert a leggyorsabb módja annak, hogy megtalálja az adott teljesítményhez tartozó frekvenciát. Végül adja vissza a maximális frekvenciát. Mivel később bináris frekvenciajelet kell bevinni a VHDL kódba, a floatban lévő frekvenciát binárisra konvertálhatjuk, és visszaadhatjuk.
5. lépés: Python-Sampling és FFT (Kód és eredményeinek megjelenítése)
Ebben a lépésben a teljes jóváírást az alábbi linkre kattintva tekintheti meg a mintavételhez és az FFT -hez.
samcarcagno.altervista.org/blog/basic-sound…Kódunk:
A pylab és a scipy telepítése után a wav fájlok importálhatók és olvashatók.
a pylab importból*a scipy.io import wavfile -ből
sampFreq, snd = wavfile.read ('440_sine.wav')
Ekkor az snd.shape képviseli a mintapontokat és a csatornák számát. Esetünkben a mintapontok attól függnek, hogy milyen hosszú a wavfile, és a csatornák száma 2, mert sztereó.
Ekkor snd = snd / (2. ** 15) …… xlabel ('Idő (ms)')
tömbbe rendezi az időjelet.
Ezután az FFT létrehoz egy tömböt frekvenciában és nagyságrendben (teljesítmény)
Ezután egy cikluson keresztül megtalálható a maximális nagyság és a hozzá tartozó frekvencia. Ez a frekvencia/2 a wavfile hangmagasságát jelenti.
Ezután saját kódunk segítségével a frekvenciát reprezentáló egész számot 12 bites bináris számmá alakítottuk át, és egy szöveges fájlt hoztunk létre, amelyben ez a szám szerepel.
6. lépés: Vivado (összehasonlító)
A folyamat ezen részében összehasonlítóra van szükségünk két bemeneti frekvencia összehasonlításához.
1. Létrehozott egy összehasonlítót annak összehasonlítására, hogy a bemeneti (vevő) frekvencia magasabb, alacsonyabb vagy a 2 Hz -es határtartományban meghatározott megjegyzés. (a tipikus gitárhangoló az e2 -től a g5 -ig terjed, 82 Hz és 784 Hz között).
2. A 2 Hz -es margó létrehozásakor egy RCA segítségével „000000000010” értéket adtunk a vevő frekvenciájához, és ellenőriztük, hol van még túl alacsony a felhasználói bevitelhez. Ebben az esetben az egybites jel „magas” <= ‘0’, “alacsony” <= ‘1’. Ezután hozzáadjuk a „000000000010” értéket a felhasználói bemenethez, hogy lássuk, hogy a vevő bemenete még ennél is magasabb -e. Ha ez a helyzet, akkor „magas” <= ‘1’, „alacsony” <=’0’. Egyik eset sem ad vissza 0 -t.
3. Mivel a modul következő részének speciális 4 bites adatokra van szüksége ahhoz, hogy megmondja, mi a vevőjegyzet, és nem csak a két összehasonlító kimenetet (alacsony és magas), hanem vissza kell adnunk a kódhoz társított megjegyzést, amely a frekvencia. Kérjük, nézze meg az alábbi táblázatot:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
A | 0001
A# | 1001
B | 0010
Több if utasítás használata jegyzetbe soroláshoz és a hét szegmenses dekódolóhoz szükséges kódolásához.
7. lépés: BASYS KÉPEK 3 Tábla
8. lépés: Vivado (7 szegmenses dekódoló multiplexeléssel)
Mindennek szüksége van egy kijelzőre. Ez egy fontos tényező, amely meghatározza a design értékét. Ezért létre kell hoznunk egy kijelzőt hét szegmensű dekóder használatával, amely lehetővé tenné számunkra, hogy bemutassuk azon képességünket, hogy tunert tervezzünk a B táblán. Ezenkívül segítene a tesztelésben és a hibakeresésben.
A hét szegmensből álló dekóder Note, low, high és CLK nevű bemeneteket tartalmaz, miközben SSEG, AN és Fiz_Hz kimenetet ad ki. A fenti tömbvázlat képe segít megérteni a tervezést.
A két különálló alacsony és magas bemenet célja, hogy az összehasonlító tervezőjének szabadon manipulálhassa, hogy a hang (hullám) frekvenciája magasabb vagy alacsonyabb -e, mint a felhasználó által összehasonlítani kívánt bemeneti frekvencia (Fix_Hz). Ezenkívül a kimeneti SSEG a hét szegmens kijelzőjét és a mellette lévő pontot jelöli, míg az AN azt az anódot jelöli, amelyhez a hét szegmens kijelzése világít.
Ebben a hét szegmenses dekódolóban az óra (CLK) fontos szerepet játszik két különböző érték két vagy több különböző anódon történő megjelenítésében. Mivel a tábla nem teszi lehetővé két különböző érték egyidejű megjelenítését, a multiplexelést kell használnunk egy -egy érték megjelenítéséhez, miközben olyan gyorsan kell átváltanunk egy másik értékre, hogy a szemünk nem tudja rögzíteni. Itt jön szóba a CLK bemenet.
További információt a forráskódban talál.
9. lépés: Vivado (összetevők kombinálása)
Minden modul (python vevő, összehasonlító, hét szegmenses dekóder stb.) Elkészülte után a nagyobb modul segítségével állítottuk össze. Akárcsak az "Áttekintés" szakasz alatt látható kép, mi is minden jelet ennek megfelelően csatlakoztatunk. Referenciaként ellenőrizze az "SW_Hz.vhd" forráskódunkat.
Köszönöm. Remélem élvezed.
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Ukelele Tuner a LabView és az NI USB-6008 használatával: 5 lépés
Ukelele Tuner a LabView és az NI USB-6008 használatával: Probléma-alapú tanulási projektként a LabVIEW & A Humber College (Electronics Engineering Technology) műszerezési tanfolyamán létrehoztam egy ukulele tunert, amely analóg bemenetet (ukulele string tone) vesz fel, megtalálja az alapvető frekvenciát
Hacker TV tuner a Földről származó fényképek olvasásához műholdakról: 7 lépés (képekkel)
Hacker TV tuner a Földről származó fényképek olvasásához a műholdakról: A fejünk felett sok műhold található. Tudta, hogy csak számítógépének, TV -tunerének és egyszerű DIY antennájának használatával fogadhatja az adásokat tőlük? Például valós idejű képek a Földről. Megmutatom, hogyan. Szükséged lesz:- 2 w
Javítsa ki a Vintage Radio Tuner karakterláncot: 11 lépés (képekkel)
Javítsa ki a Vintage Radio Tuner karakterláncot: Már vannak nagyon szép oktatóanyagok a vintage rádiókról, de volt egy konkrét problémám: ha a rádió bekapcsolja a rádiót, zajt hallat, és a hangerőszabályzóval hangosabb lesz, de a hangoló gomb elforgatása nem mozgatja a tűt vagy a csavart