Indholdsfortegnelse:

Ukelele-tuner ved hjælp af LabView og NI USB-6008: 5 trin
Ukelele-tuner ved hjælp af LabView og NI USB-6008: 5 trin

Video: Ukelele-tuner ved hjælp af LabView og NI USB-6008: 5 trin

Video: Ukelele-tuner ved hjælp af LabView og NI USB-6008: 5 trin
Video: Moon River - Andy Williams - How To Play On Ukulele (with Closed Captions and Subtitles) @TeacherBob 2024, Juli
Anonim
Ukelele-tuner ved hjælp af LabView og NI USB-6008
Ukelele-tuner ved hjælp af LabView og NI USB-6008
Ukelele-tuner ved hjælp af LabView og NI USB-6008
Ukelele-tuner ved hjælp af LabView og NI USB-6008

Som et problembaseret læringsprojekt for mit LabVIEW & Instrumentation-kursus på Humber College (Electronics Engineering Technology) skabte jeg en ukulele-tuner, der ville tage en analog indgang (ukulele-strengetone), finde den grundlæggende frekvens, bestemme hvilken note der prøvede for at blive indstillet, og fortæl brugeren, om strengen skulle justeres op eller ned. Enheden, jeg brugte til at oversætte det analoge input til digital input, var National Instruments USB-6008 DAQ (dataopsamlingsenhed), og brugergrænsefladen blev implementeret med LabVIEW.

Trin 1: Standard Ukelele Tuning

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

Det første trin var at finde ud af de grundlæggende frekvenser for musiknoter, og hvilket område ukulele -strengene typisk er indstillet til. Jeg brugte disse to diagrammer og besluttede, at jeg ville lave mit toneområde mellem 262 Hz (C) og 494 Hz (High B). Alt mindre end 252 Hz ville blive betragtet som for lavt til, at programmet kunne tyde, hvilken note der forsøgte at blive spillet, og alt større end 500 Hz ville blive betragtet som for højt. Programmet fortæller dog stadig brugeren, hvor mange Hz de er væk fra den nærmeste dekrypterbare note, og om strengen skal indstilles (note for lav) eller ned (note for høj) for at nå en tilgængelig note.

Derudover oprettede jeg intervaller for hver note, frem for kun en enkelt frekvens, så det ville være lettere for programmet at finde, hvilken note der blev spillet. For eksempel ville programmet fortælle brugeren, at der spilles et C, hvis noten havde en grundlæggende frekvens mellem 252 Hz (halvvejs til B) og 269 Hz (halvvejs til C#), men for at afgøre, om den skulle justeres eller ned, ville det stadig sammenligne den tone, der spilles, med grundfrekvensen for C, som er 262Hz.

Trin 2: Oprettelse af en rent digital teoretisk model

Oprettelse af en rent digital teoretisk model
Oprettelse af en rent digital teoretisk model
Oprettelse af en rent digital teoretisk model
Oprettelse af en rent digital teoretisk model

Inden jeg dykkede ind i den analoge side af projektet, ville jeg se, om jeg kunne oprette et LabVIEW -program, der i det mindste ville udføre hovedbehandlingen af en lydprøve, såsom at læse en lyd.wav -prøve, finde den grundlæggende frekvens og lave de nødvendige sammenligninger med frekvensdiagrammet for at finde ud af, om lyden skal stemmes op eller ned.

Jeg brugte SoundFileSimpleRead. VI til rådighed i LabVIEW til at læse en.wav -fil fra en sti, jeg angav, sætte signalet i et indekseret array og matede det signal ind i HarmonicDistortionAnalyzer. VI for at finde grundfrekvensen. Jeg tog også signalet fra SoundFileSimpleRead. VI og sluttede det direkte til en kurveformindikator, så brugeren kan se bølgeformen for filen på frontpanelet.

Jeg oprettede 2 sagsstrukturer: den ene for at analysere, hvilken note der blev spillet, og den anden for at afgøre, om strengen skulle skrues op eller ned. I det første tilfælde oprettede jeg intervaller for hver note, og hvis grundfrekvenssignalet fra HarmonicDistortionAnalyzer. VI var i dette område, ville det fortælle brugeren, hvilken note der blev spillet. Når noten var bestemt, blev den spillede toneværdi trukket fra notens faktiske grundfrekvens, og derefter blev resultatet flyttet ind i den anden sag, der bestemte følgende: Hvis resultatet er over nul, skal strengen nedstilles; hvis resultatet er falsk (ikke over nul), kontrollerer sagen, om værdien er lig med nul, og hvis det er sandt, vil programmet meddele brugeren, at noten er i harmoni; hvis værdien ikke er lig med nul, betyder det, at den skal være mindre end nul, og at strengen skal justeres. Jeg tog den absolutte værdi af resultatet for at vise brugeren, hvor mange Hz de er væk fra den sande note.

Jeg besluttede, at en målerindikator ville være den bedste til visuelt at vise brugeren, hvad der skal gøres for at få noten til at stemme.

Trin 3: Dernæst det analoge kredsløb

Dernæst det analoge kredsløb
Dernæst det analoge kredsløb
Dernæst det analoge kredsløb
Dernæst det analoge kredsløb
Dernæst det analoge kredsløb
Dernæst det analoge kredsløb

Mikrofonen, jeg brugte til dette projekt, er CMA-6542PF kondensatorelektretmikrofon. Databladet for denne mikrofon er nedenfor. I modsætning til de fleste kondensatormikrofoner af denne type behøvede jeg ikke bekymre mig om polaritet. Databladet viser, at driftsspændingen for denne mikrofon er 4,5 - 10V, men 4,5 V anbefales, og dets nuværende forbrug er max 0,5mA, så det er noget at være forsigtig med, når man designer et forforstærkerkredsløb til det. Driftsfrekvensen er 20Hz til 20kHz, hvilket er perfekt til lyd.

Jeg implementerede et enkelt forforstærkerkredsløbsdesign på brødbrættet og justerede indgangsspændingen og sørgede for, at der ikke var mere end 0,5mA på tværs af mikrofonen. Kondensatoren bruges til at filtrere DC -støj, der kan kobles sammen med de elektriske signaler (output), og kondensatoren har polaritet, så sørg for at tilslutte den positive ende til mikrofonudgangsstiften.

Efter at kredsløbet var færdigt, sluttede jeg kredsløbets udgang til den første analoge indgangsstift (AI0, pin 2) på USB-6008 og tilsluttede brødbrættets jord til den analoge jordstift (GND, pin 1). Jeg sluttede USB-6008 til pc'en med en USB, og det var på tide at foretage justeringer af LabVIEW-programmet for at modtage et egentligt analogt signal.

Trin 4: Læsning af analoge signaler med DAQ Assistant

Læsning af analoge signaler med DAQ Assistant
Læsning af analoge signaler med DAQ Assistant
Læsning af analoge signaler med DAQ Assistant
Læsning af analoge signaler med DAQ Assistant

I stedet for at bruge SoundFileSimpleRead. VI og HarmonicDistortionAnalyzer. VI brugte jeg DAQ Assistant. VI og ToneMeasurements. VI til at håndtere den analoge indgang. DAQ Assistant-opsætningen er ret ligetil, og selve VI tager dig gennem trinene. ToneMeasurements. VI har mange udgange at vælge imellem (amplitude, frekvens, fase), så jeg brugte frekvensoutput, der giver inputfonen grundfrekvens (fra DAQ Assistant. VI). Outputtet fra ToneMeasurements. VI skulle konverteres og sættes i en matrix, før det kunne bruges i sagsstrukturer, men resten af LabVIEW -programmeringen/indikatorerne forblev den samme.

Trin 5: Konklusion

Konklusion
Konklusion

Projektet var en succes, men der var bestemt mange fejl. Da jeg betjente tuneren i et støjende klasseværelse, var det meget svært for programmet at afgøre, hvad der var støj, og hvilken tone der blev spillet. Dette skyldes sandsynligvis, at forforstærkerkredsløbet er meget grundlæggende, og mikrofonen er meget billig. Når det var stille, fungerede programmet imidlertid med god pålidelighed for at bestemme den note, der forsøgte at blive spillet. På grund af tidsbegrænsninger foretog jeg ikke yderligere ændringer, men hvis jeg skulle gentage projektet, ville jeg købe en bedre mikrofon og bruge mere tid på forforstærkerkredsløbet.

Anbefalede: