Innholdsfortegnelse:

Ukelele-tuner ved hjelp av LabView og NI USB-6008: 5 trinn
Ukelele-tuner ved hjelp av LabView og NI USB-6008: 5 trinn

Video: Ukelele-tuner ved hjelp av LabView og NI USB-6008: 5 trinn

Video: Ukelele-tuner ved hjelp av LabView og NI USB-6008: 5 trinn
Video: Ukulele - Hvordan man stemmer den 2024, November
Anonim
Ukelele-tuner ved hjelp av LabView og NI USB-6008
Ukelele-tuner ved hjelp av LabView og NI USB-6008
Ukelele-tuner ved hjelp av LabView og NI USB-6008
Ukelele-tuner ved hjelp av LabView og NI USB-6008

Som et problembasert læringsprosjekt for mitt LabVIEW & Instrumentation-kurs ved Humber College (Electronics Engineering Technology), opprettet jeg en ukulele-tuner som ville ta en analog inngang (ukulele-strengetone), finne grunnfrekvensen, bestemme hvilken tone som prøvde for å bli innstilt, og fortell brukeren om strengen måtte stilles opp eller ned. Enheten jeg brukte til å oversette den analoge inngangen til digital inngang var National Instruments USB-6008 DAQ (datainnsamlingsenhet), og brukergrensesnittet ble implementert med LabVIEW.

Trinn 1: Standard Ukelele Tuning

Standard Ukelele Tuning
Standard Ukelele Tuning
Standard Ukelele Tuning
Standard Ukelele Tuning

Det første trinnet var å finne ut de grunnleggende frekvensene til musikknoter, og hvilket område ukulele -strengene vanligvis er innstilt på. Jeg brukte disse to diagrammene, og bestemte meg for at jeg ville gjøre mitt toneområde mellom 262 Hz (C) og 494 Hz (High B). Alt mindre enn 252 Hz vil bli ansett som for lavt til at programmet kan tyde hvilken tone som ble spilt, og alt større enn 500 Hz vil bli ansett som for høyt. Programmet forteller imidlertid fortsatt brukeren hvor mange Hz de er borte fra den nærmeste dekrypterbare noten, og om strengen bør stilles opp (note for lav) eller ned (note for høy) for å nå en tilgjengelig note.

I tillegg opprettet jeg områder for hver tone, i stedet for bare en enkelt frekvens, slik at det ville være lettere for programmet å finne hvilken tone som ble spilt. For eksempel vil programmet fortelle brukeren at en C spilles hvis noten hadde en grunnfrekvens mellom 252 Hz (halvveis til B) og 269Hz (halvveis til C#), men for å avgjøre om den måtte stilles opp eller ned, vil den fortsatt sammenligne noten som spilles med grunnfrekvensen til C som er 262Hz.

Trinn 2: Lage en rent digital teoretisk modell

Opprette en rent digital teoretisk modell
Opprette en rent digital teoretisk modell
Opprette en rent digital teoretisk modell
Opprette en rent digital teoretisk modell

Før jeg dykket ned i den analoge siden av prosjektet, ønsket jeg å se om jeg kunne lage et LabVIEW -program som i det minste ville gjøre hovedbehandlingen av et lydprøve, for eksempel å lese en lyd.wav -prøve, finne grunnfrekvensen og lage de nødvendige sammenligningene med frekvensdiagrammet for å finne ut om lyden skal stemmes opp eller ned.

Jeg brukte SoundFileSimpleRead. VI som var tilgjengelig i LabVIEW for å lese en.wav -fil fra en bane som jeg angav, sette signalet i en indeksert matrise og matet det signalet inn i HarmonicDistortionAnalyzer. VI for å finne grunnfrekvensen. Jeg tok også signalet fra SoundFileSimpleRead. VI og koblet det direkte til en kurveformindikator slik at brukeren kan se bølgeformen til filen på frontpanelet.

Jeg opprettet to saksstrukturer: en for å analysere hvilken tone som ble spilt, og den andre for å avgjøre om strengen måtte skrues opp eller ned. I det første tilfellet opprettet jeg områder for hver tone, og hvis det grunnleggende frekvenssignalet fra HarmonicDistortionAnalyzer. VI var i det området, ville det fortelle brukeren hvilken tone som ble spilt. Når noten var bestemt, ble den spilte notatverdien trukket fra notens faktiske grunnfrekvens, og deretter ble resultatet flyttet inn i det andre tilfellet som bestemte følgende: hvis resultatet er over null, må strengen stilles ned; hvis resultatet er usant (ikke over null), kontrollerer saken om verdien er lik null, og hvis det er sant, vil programmet varsle brukeren om at notatet er i harmoni; Hvis verdien ikke er lik null, betyr det at den må være mindre enn null, og at strengen må justeres. Jeg tok den absolutte verdien av resultatet for å vise brukeren hvor mange Hz de er borte fra den sanne noten.

Jeg bestemte meg for at en målerindikator ville være den beste for å visuelt vise brukeren hva som må gjøres for å gjøre notatet i harmoni.

Trinn 3: Deretter den analoge kretsen

Deretter den analoge kretsen
Deretter den analoge kretsen
Deretter den analoge kretsen
Deretter den analoge kretsen
Deretter den analoge kretsen
Deretter den analoge kretsen

Mikrofonen jeg brukte til dette prosjektet er CMA-6542PF kondensator elektretmikrofon. Dataarket for denne mikrofonen er nedenfor. I motsetning til de fleste kondensatormikrofoner av denne typen, trengte jeg ikke å bekymre meg for polaritet. Databladet viser at driftsspenningen for denne mikrofonen er 4,5 - 10V, men 4,5 V anbefales, og strømforbruket er maks 0,5mA, så det er noe å være forsiktig med når du designer en forforsterkerkrets for den. Driftsfrekvensen er 20Hz til 20kHz som er perfekt for lyd.

Jeg implementerte en enkel forforsterkerkretsdesign på brødbrettet og justerte inngangsspenningen, og passet på at det ikke var mer enn 0,5mA over mikrofonen. Kondensatoren brukes til å filtrere likestrømmen som kan kobles sammen med de elektriske signalene (utgang), og kondensatoren har polaritet, så sørg for å koble den positive enden til mikrofonutgangsstiften.

Etter at kretsen var fullført, koblet jeg utgangen til kretsen til den første analoge inngangspinnen (AI0, pin 2) på USB-6008, og koblet bakken på brødbrettet til den analoge jordpinnen (GND, pin 1). Jeg koblet USB-6008 til PCen med en USB, og det var på tide å gjøre justeringer i LabVIEW-programmet for å ta inn et faktisk analogt signal.

Trinn 4: Lese analoge signaler med DAQ Assistant

Lese analoge signaler med DAQ Assistant
Lese analoge signaler med DAQ Assistant
Lese analoge signaler med DAQ Assistant
Lese analoge signaler med DAQ Assistant

I stedet for å bruke SoundFileSimpleRead. VI og HarmonicDistortionAnalyzer. VI, brukte jeg DAQ Assistant. VI og ToneMeasurements. VI for å håndtere den analoge inngangen. DAQ Assistant-oppsettet er ganske rett frem, og selve VI tar deg gjennom trinnene. ToneMeasurements. VI har mange utganger å velge mellom (amplitude, frekvens, fase), så jeg brukte frekvensutgangen som gir grunnfrekvensen til inngangstonen (fra DAQ Assistant. VI). Utgangen fra ToneMeasurements. VI måtte konverteres og settes til en matrise før den kunne brukes i saksstrukturene, men resten av LabVIEW -programmeringen/indikatorene forble den samme.

Trinn 5: Konklusjon

Konklusjon
Konklusjon

Prosjektet var en suksess, men det var definitivt mange feil. Da jeg betjente tuneren i et støyende klasserom, var det veldig vanskelig for programmet å finne ut hva som var støy og hvilken tone som ble spilt. Dette skyldes sannsynligvis at forforsterkerkretsen er veldig grunnleggende, og mikrofonen er veldig billig. Når det var stille, jobbet programmet imidlertid med god pålitelighet for å bestemme noten som prøvde å bli spilt. På grunn av tidsbegrensninger gjorde jeg ingen ytterligere endringer, men hvis jeg skulle gjenta prosjektet, ville jeg kjøpe en bedre mikrofon og bruke mer tid på forforsterkerkretsen.

Anbefalt: