Sisukord:
- Samm 1: Varustuse loend (tehke tahvli ja Kevini võistluspildi pilt)
- 2. samm: ülevaade
- Samm: Wav -fail
- 4. samm: Python- Pylabi ja Scipy kasutamine
- Samm: Pythoni proovide võtmine ja FFT (koodi ja selle tulemuste kuvamine)
- 6. samm: Vivado (võrdleja)
- Samm 7: BASYS PILTID 3 Tahvel
- 8. samm: Vivado (7 segmendi dekodeerija koos multipleksimisega)
- 9. samm: Vivado (komponentide kombineerimine)
Video: Tuuner: 9 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
See projekt oli mõeldud kitarrituuneri valmistamiseks, kasutades Vivadot ja 7-segmendilist ekraani. Kui tuuner on sisestatud heli sageduse leidnud, võrdleb tuuner seda väärtust täpsete sageduste kõvakodeeritud väärtuste loendiga, mida nimetatakse noodi õige helikõrguse standardsageduseks. Seejärel kuvab tuuner, kui lähedal või kaugel on teie sisestatud heli soovitud noodist. Huvitav on see, et helilaine on mitme sinusoidaalse lainekuju kombinatsioon reaalsete ja kujuteldavate komponentidega. Ehkki tundmatute inimestega töötamine võib tunduda keeruline, on siiski mitmeid viise, kuidas saame ikkagi analüüsida lainet, millel on reaalsed ja kujuteldavad väärtused.
Demo:
Samm 1: Varustuse loend (tehke tahvli ja Kevini võistluspildi pilt)
Kõigepealt vajame Basys 3 plaati ja arvutit, mis toetab järgmisi programme. Garageband/Audacity või mõni muu DAW - mikrofoni kaudu salvestamiseks ja wavfailide eksportimiseks
Python - suudab proovide võtmiseks ja fft jaoks kasutada pylab ja scipy
Vivado - ühendada tahvel Basys 3 ja näha tulemusi visuaalselt
2. samm: ülevaade
Tuuner koosneb vähestest olulistest komponentidest: mikrofon, proovivõttur, FFT (Fast Fourier Transform), võrdlusmasin, dekooder ja ekraan. Mikrofoni eesmärk on jäädvustada sisendlainekuju. Proovivõtja võtab vastu mikrofoni väljundsignaali ja kasutab FFT -d, et teisendada signaal sagedusväljundiks. Seejärel, kasutades FFT väljundit ja leides maksimaalse suuruse ja sellega seotud sageduse jagatuna 2 -ga, saab leida lainekuju heliga seotud sageduse. See väärtus võib seejärel minna võrdlusalusesse. Seejärel võrreldakse seda tabeliga, mis on juba määranud sagedusväärtused kõigi nootide täiuslikeks helikõrgusteks. Võrdlejale antakse soovitud noodi sisend, mis seejärel võib sobitada soovitud noodi otsingutabelist õige sagedusega. Seejärel valib võrdleja maksimaalsele sagedusele lähima noodiga noodi. Võrdleja võrdleb neid kahte väärtust ja näeb sageduse väärtuse sulgemist soovitud väärtusele ning seejärel paneb need andmed signaaliks. Võrdleja saadab selle signaali dekoodrile, kus dekooder valib 7-segmendilise ekraani anoodide sisendid, et näidata noodi täpsust.
Samm: Wav -fail
Selles etapis võtame helikõrguse wav -faili ja proovime väljastada selle helikõrguse sageduse.
Kõigepealt vajate märkme wav -faili. Selles näites kasutame 16 -bitist stereo -wav -faili, mille diskreetimissagedus on 44,1 kHz. Selle saab luua DAW -s, näiteks Garagebandis, või alla laadida. Selle näite jaoks saab siit alla laadida meie Garagebandis loodud A4 440Hz siinuslaine.
4. samm: Python- Pylabi ja Scipy kasutamine
Kasutasime Pythoni raamatukogu “Fast Fourier” teisendamiseks. Veebiressurss võimaldas meil jäljendada ja näha, mis on kasulik pylabis ja scipy's.
1. Kui te pole pylabi või scipy'i installinud, peate seda tegema. Või on Pycharmil väga hea omadus: kui proovisite importida pilabit või scipyt, siis on kriipiv allajoon, mis ütleb teile, et te pole raamatukogu veel installinud. Seejärel saate need otse punasele lambipirnile vajutades installida (see ilmub siis, kui asetate kursori sirgjoonelise alajoone lähedale).
2. Kasutades funktsiooni scipy.io.wavfile.read, lugege ja tõmmake andmed proovi wav -failist välja. Käivitage andmed pylab.fft kaudu, see tagastab teile võimsuse suuruse loendi.
3. Seejärel leidke loendist väljastatava võimsuse maksimum. Otsige nimekirjaindeksit, kus tekib maksimaalne võimsus, sest kiirem viis selle võimsusega seotud sageduse leidmiseks. Lõpuks tagastage maksimaalne sagedus. Kuna hiljem peame sisestama binaarsagedussignaali VHDL -koodi, saame ujuki sageduse teisendada binaarseks ja tagastada.
Samm: Pythoni proovide võtmine ja FFT (koodi ja selle tulemuste kuvamine)
Selles etapis lähevad täielikud krediidid proovide võtmise ja FFT jaoks allolevale lingile.
samcarcagno.altervista.org/blog/basic-sound… Meie kood:
Pärast Pylabi ja Scipy installimist saab wav -faile importida ja lugeda.
alates pylab import*scipy.io import wavfile
sampFreq, snd = wavfile.read ('440_sine.wav')
Seejärel tähistab snd.shape näidispunkte ja kanalite arvu. Meie puhul sõltuvad proovipunktid sellest, kui pikk on wavfile ja kanalite arv on 2, kuna see on stereo.
Siis snd = snd / (2. ** 15) …… xlabel ('Aeg (ms)')
korraldab ajasignaali massiiviks.
Seejärel loob FFT sageduse ja suuruse (võimsus) massiivi
Seejärel leitakse mõne aja jooksul maksimaalne suurus ja sellega seotud sagedus. See sagedus/2 tähistab lainefaili sammu.
Seejärel konverteeriti meie enda koodi abil sagedust esindav täisarv 12 -bitiseks kahendnumbriks ja loodi tekstifail koos selle numbriga.
6. samm: Vivado (võrdleja)
Protsessi selles osas vajame kahe sisendsageduse võrdlemiseks võrdlust.
1. Lõi võrdluse, et võrrelda, kas sisendi (vastuvõtja) sagedus on kõrgem, madalam või 2 Hz variandivahemikus määratletud. (tüüpiline kitarrituuner on vahemikus e2 kuni g5, 82 Hz kuni 784 Hz).
2. 2 Hz veerise loomisel kasutasime RCA -d, et lisada vastuvõtja sagedusele “000000000010” ja kontrollida, kus see on kasutaja sisendi jaoks endiselt liiga madal. Kui see nii on, siis ühe bitiga signaal “kõrge” <= ‘0’, “madal” <= ‘1’. Seejärel lisame kasutaja sisendisse “000000000010”, et näha, kas vastuvõtja sisend on sellest veelgi kõrgem. Kui see on nii, siis “kõrge” <= ‘1’, “madal” <= ‘0’. Mõlemad juhtumid ei annaks 0.
3. Kuna mooduli järgmine osa vajab konkreetseid 4-bitiseid andmeid, et öelda, mis on vastuvõtja märkus, mitte ainult kahe võrdleva väljundi (madal ja kõrge) tagastamist, peame tagastama märkusele seostatud koodi, mis seostub sagedus. Palun vaadake allolevat diagrammi:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
A | 0001
A# | 1001
B | 0010
Kasutades mitut lauset, et liigitada need märkmeteks ja kodeerida need seitsme segmendi dekoodri jaoks vajalikuks.
Samm 7: BASYS PILTID 3 Tahvel
8. samm: Vivado (7 segmendi dekodeerija koos multipleksimisega)
Kõik vajab väljapanekut. See on oluline tegur, mis määrab disaini väärtuse. Seetõttu peame looma seitsme segmendiga dekoodri abil ekraani, mis võimaldaks meil näidata oma võimet kujundada tuunerit B-plaadil. Samuti aitaks see meid testimisel ja silumisel.
Seitsme segmendi dekooder sisaldab sisendeid nimega Note, low, high ja CLK, väljastades samal ajal SSEG, AN ja Fiz_Hz. Ülaltoodud plokkskeemi pilt aitab meil kujundusest aru saada.
Kahe madala ja kõrge sisendi eraldamise eesmärk on anda võrdleva disainerile vabadus manipuleerida, kas heli (laine) sagedus on kõrgem või madalam kui sisendsagedus (Fix_Hz), mida kasutaja soovib võrrelda. Lisaks tähistab väljund SSEG seitsme segmendi kuvarit ja täppi järgmisena, samas kui AN tähistab anoode, mille seitsme segmendi komplekt süttib.
Selles seitsme segmendi dekoodris mängib kell (CLK) olulist rolli kahe erineva väärtuse kuvamisel kahel või enamal erineval anoodil. Kuna juhatus ei luba meil korraga kahte erinevat väärtust kuvada, peame väärtuse ükshaaval kuvamiseks kasutama multipleksimist, lülitades samal ajal teise väärtuse sisse piisavalt kiiresti, et meie silmad ei saaks seda jäädvustada. Siin tuleb mängu CLK sisend.
Lisateavet leiate lähtekoodist.
9. samm: Vivado (komponentide kombineerimine)
Kui kõik moodulid (pythoni vastuvõtja, võrdlusseade, seitsme segmendi dekooder jne) on valmis, paneme suurema mooduli abil kokku. Nagu näidatud jaotises "Ülevaade", ühendame iga signaali vastavalt. Viiteks vaadake meie lähtekoodi "SW_Hz.vhd".
Aitäh. Loodan, et naudite.
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Arduino kitarri tuuner: 3 sammu
Arduino kitarrituuner: Siin on kitarrihäälestaja, mille tegin Arduino Unoga ja mõned asjad, mis mul ümber olid. See toimib järgmiselt: igaüks sisaldab 5 nuppu, mis esitavad kitarri häälestamisel EADGBE erineva noodi. Kuna mul oli ainult 5 nuppu, kirjutasin koodi nii, et
Ukelele tuuner LabView ja NI USB-6008 abil: 5 sammu
Ukelele tuuner LabView ja NI USB-6008 abil: probleemipõhise õppe projektina minu LabVIEW & Instrumentatsioonikursusel Humber College'is (elektroonikatehnoloogia) lõin ukulele -tuuneri, mis võtaks analoogsisendi (ukulele stringtoon), leiaks põhisageduse