Sadržaj:
- Korak 1: Popis opreme (slikajte ploču i Kevinov komp)
- Korak 2: Pregled
- Korak 3: Wav datoteka
- Korak 4: Python- upotreba Pylaba i Scipyja
- Korak 5: Uzorkovanje Python-a i FFT (prikaži kôd i njegove rezultate)
- Korak 6: Vivado (Usporednik)
- Korak 7: SLIKE OSNOVE 3 Ploča
- Korak 8: Vivado (7 -segmentni dekoder s multipleksiranjem)
- Korak 9: Vivado (kombiniranje komponenti)
Video: Tuner: 9 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Ovaj je projekt osmišljen za izradu gitarskog tunera koristeći Vivado i 7-segmentni zaslon. Kad tjuner pronađe frekvenciju unesenog zvuka, tjuner će tu vrijednost usporediti s popisom tvrdo kodiranih vrijednosti za točne frekvencije koje su poznate kao standardna frekvencija za ispravnu visinu note. Tada će tjuner prikazati koliko je vaš uneseni zvuk blizu ili daleko od vaše željene note. Zanimljivo je da je zvučni val kombinacija više sinusoidnih valnih oblika sa stvarnim i imaginarnim komponentama. Iako se nepoznatima ovo može činiti teškim za rad, postoji nekoliko načina na koje još uvijek možemo analizirati val sa stvarnim i zamišljenim vrijednostima.
Demo:
Korak 1: Popis opreme (slikajte ploču i Kevinov komp)
Prvo nam je potrebna ploča Basys 3 i računalo koje podržava sljedeće programe. Garageband/Audacity ili neki drugi DAW - za snimanje putem mikrofona i izvoz wav datoteka
Python - može koristiti pylab i scipy za uzorkovanje i fft
Vivado - za povezivanje s Basys 3 pločom i vizualno vidjeti rezultate
Korak 2: Pregled
Tuner se sastoji od nekoliko važnih komponenti: mikrofona, uzorkivača, FFT (brza Fourierova transformacija), komparatora, dekodera i zaslona. Svrha mikrofona je snimiti ulazni valni oblik. Sempler prima izlazni signal mikrofona i koristi FFT za pretvaranje signala u izlaz veličine u frekvencijama. Zatim se pomoću izlaza FFT -a i pronalaženjem maksimalne veličine i frekvencije povezane s njom podijeljeno s 2 može pronaći frekvencija povezana s visinom valnog oblika. Ta vrijednost tada može ući u usporedbu. Zatim se uspoređuje s tražilicom koja je već postavila vrijednosti frekvencije za savršene tonove svih nota. Usporeditelju se daje ulaz za željenu notu, koja tada može uskladiti željenu notu s ispravnom frekvencijom iz tražilice. Zatim će usporednik odabrati notu s frekvencijom najbližom maksimalnoj frekvenciji. Komparator će usporediti dvije vrijednosti i vidjeti blizu je vrijednost frekvencije do željene, a zatim će te podatke staviti u signal. Komparator će poslati taj signal dekoderu, gdje će dekoder odabrati ulaze za anode 7-segmentnog zaslona kako bi pokazao točnost bilješke.
Korak 3: Wav datoteka
U ovom koraku ćemo uzeti wav datoteku visine tona i pokušati prikazati frekvenciju te visine.
Prvo vam je potrebna wav datoteka bilješke. U ovom primjeru koristit ćemo 16 -bitnu stereo wav datoteku sa frekvencijom uzorkovanja od 44,1 kHz. To se može stvoriti u DAW -u kao što je Garageband ili preuzeti. Za ovaj primjer, sinusni val A4 440Hz koji smo generirali na Garagebandu možete preuzeti ovdje.
Korak 4: Python- upotreba Pylaba i Scipyja
Biblioteku Python koristili smo za „brzu Fourierovu transformaciju“. Mrežni izvori omogućili su nam da oponašamo i vidimo što je korisno u pylabu i scipyju.
1. Ako niste instalirali pylab ili scipy, morate to učiniti. Ili, Pycharm ima vrlo dobru značajku, kada pokušate uvesti pylab ili scipy, postoji mršavo podcrtavanje koje vam govori da još niste instalirali knjižnicu. Zatim ih možete instalirati izravno pritiskom na crvenu žarulju (pojavit će se kada postavite kursor blizu podvučenog podcrtavanja).
2. Pomoću funkcije scipy.io.wavfile.read pročitajte i izvucite podatke iz uzorka wav datoteke. Prođite kroz podatke pomoću pylab.fft, vratit će vam popis veličine za snagu.
3. Zatim pronađite maksimalnu snagu emitiranu s popisa. Potražite indeks popisa gdje se javlja najveća snaga jer je brži način da pronađete frekvenciju povezanu s tom snagom. Na kraju vratite maksimalnu frekvenciju. Budući da kasnije moramo unijeti binarni frekvencijski signal u VHDL kôd, možemo pretvoriti frekvenciju u float u binarnu i vratiti je.
Korak 5: Uzorkovanje Python-a i FFT (prikaži kôd i njegove rezultate)
U ovom koraku puni bodovi idu na donju poveznicu za uzorkovanje i FFT.
samcarcagno.altervista.org/blog/basic-sound…Naš kod:
Nakon što su instalirani pylab i scipy, wav datoteke se mogu uvesti i čitati.
iz pylab import*iz scipy.io import wavfile
sampFreq, snd = wavfile.read ('440_sine.wav')
Zatim snd.shape predstavlja uzorke i broj kanala. U našem slučaju, točke uzorka ovise o tome koliko je duga wavfile i # kanala je 2 jer je stereo.
Tada je snd = snd / (2. ** 15) …… xlabel ('Vrijeme (ms)')
organizira vremenski signal u niz.
Zatim FFT stvara niz u frekvenciji i veličini (Snaga)
Tada se kroz petlju while nalazi najveća veličina i s njom povezana frekvencija. Ta frekvencija/2 predstavlja visinu datoteke wav.
Zatim je pomoću vlastitog koda cijeli broj koji predstavlja frekvenciju pretvoren u 12 -bitni binarni broj i stvorena je tekstualna datoteka s tim brojem.
Korak 6: Vivado (Usporednik)
U ovom dijelu procesa potreban nam je usporednik za usporedbu dvije ulazne frekvencije.
1. Napravio usporednik za usporedbu je li ulazna (prijemna) frekvencija veća, niža ili unutar napona definiranog raspona marže od 2 Hz. (tipični gitarski štimer kreće se od e2 do g5, 82 Hz do 784 Hz).
2. Prilikom stvaranja marže od 2 Hz, koristili smo RCA za dodavanje “000000000010” frekvenciji prijemnika i provjerili gdje je još uvijek preniska za unos korisnika. U tom slučaju, jednobitni signal “visoko” <= ‘0’, ‘nisko’ <= ‘1’. Zatim korisničkom unosu dodajemo “000000000010” da vidimo je li ulaz prijemnika još veći od toga. U tom slučaju, "visoko" <= "1", "nisko" <= "0". Niti slučaj ne bi vratio "0".
3. Budući da je za sljedeći dio modula potrebni specifični 4-bitni podaci da bi se utvrdilo što je prijemna nota, a ne samo da se vraćaju 2 usporedna izlaza (niski i visoki), moramo vratiti kodni suradnik na notu, koji se povezuje s frekvencije. Molimo pogledajte donji grafikon:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
A | 0001
A# | 1001
B | 0010
Korištenje nekoliko if naredbi za njihovu kategorizaciju u bilješku i njihovo kodiranje u ono što je potrebno za dekoder sa sedam segmenata.
Korak 7: SLIKE OSNOVE 3 Ploča
Korak 8: Vivado (7 -segmentni dekoder s multipleksiranjem)
Za sve je potreban zaslon. Važan je faktor koji određuje vrijednost dizajna. Stoga moramo stvoriti zaslon pomoću dekodera sa sedam segmenata, što bi nam omogućilo da pokažemo svoju sposobnost dizajniranja tunera na B ploči. Također, pomoglo bi nam u testiranju i otklanjanju pogrešaka.
Dekoder sa sedam segmenata sadrži ulaze s imenom Note, low, high i CLK, dok izlazi SSEG, AN i Fiz_Hz. Gore je prikazana slika blok dijagrama koja nam pomaže razumjeti dizajn.
Svrha dva odvojena niskog i visokog ulaza je omogućiti dizajneru komparatora slobodu da manipulira je li frekvencija zvuka (vala) veća ili niža od ulazne frekvencije (Fix_Hz) koju korisnik želi usporediti. Osim toga, izlazni SSEG predstavlja prikaz sedam segmenata i sljedeću točku, dok AN predstavlja anode za koje se prikazuje skup od sedam segmenata koji će zasvijetliti.
U ovom dekoderu sa sedam segmenata, sat (CLK) igra važnu ulogu u prikazivanju dvije različite vrijednosti na dvije ili više različitih anoda. Kako nam ploča ne dopušta prikaz dvije različite vrijednosti istovremeno, moramo koristiti multipleksiranje za prikaz vrijednosti jednu po jednu, dok se prebacivanje u drugu vrijednost odvija dovoljno brzo da je naše oči ne mogu uhvatiti. Ovdje dolazi do izražaja CLK ulaz.
Više informacija potražite u izvornom kodu.
Korak 9: Vivado (kombiniranje komponenti)
Sa svim dovršenim modulima (python prijemnik, usporednik, sedmosegmentni dekoder itd.), Zatim smo sastavili koristeći veći modul. Baš kao što je prikazano na slici ispod odjeljka "Over view", povezujemo svaki signal u skladu s tim. Za referencu, provjerite naš izvorni kod "SW_Hz.vhd".
Hvala vam. Nadam se da uživaš.
Preporučeni:
Kako napraviti Arduino gitarski tuner: 4 koraka
Kako napraviti Arduino gitarski tuner: Ovo su upute za izradu gitarskog tunera od Arduina i nekoliko drugih komponenti. S osnovnim znanjem o elektronici i kodiranju moći ćete izraditi ovaj gitarski štimer. Najprije morate znati koji su materijali. Ma
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način stvaranja igre, osobito nečega poput zagonetke, vizualnog romana ili avanturističke igre
Broj koraka: 17 koraka
الكشف عن عن أنواع المحاليل: محمدآل سعودالكشف عن المحاليل رابط الفديو
Arduino gitarski tuner: 3 koraka
Arduino gitarski tuner: Ovdje je gitarski štimer koji sam napravio s Arduino Uno i neke stvari koje sam imao ležeći. Radi ovako: Postoji 5 gumba svaki koji će proizvesti drugačiju notu u standardnom gitarskom ugađanju EADGBE. Budući da sam imao samo 5 gumba, napisao sam kod pa
Ukelele tuner pomoću LabView i NI USB-6008: 5 koraka
Ukelele tuner koristeći LabView i NI USB-6008: kao projekt učenja na temelju problema za moj LabVIEW & Na tečaju instrumentacije na Humber Collegeu (Tehnologija elektroničkog inženjeringa) stvorio sam ukulele tuner koji će uzeti analogni ulaz (ton ukulele žice), pronaći osnovnu frekvenciju