Innehållsförteckning:

Ukelele-tuner med LabView och NI USB-6008: 5 steg
Ukelele-tuner med LabView och NI USB-6008: 5 steg

Video: Ukelele-tuner med LabView och NI USB-6008: 5 steg

Video: Ukelele-tuner med LabView och NI USB-6008: 5 steg
Video: What Happens When I Tune A Guitarlele Like A Guitar 2024, Juli
Anonim
Ukelele-tuner med LabView och NI USB-6008
Ukelele-tuner med LabView och NI USB-6008
Ukelele-tuner med LabView och NI USB-6008
Ukelele-tuner med LabView och NI USB-6008

Som ett problembaserat inlärningsprojekt för min LabVIEW & Instrumentation-kurs på Humber College (Electronics Engineering Technology) skapade jag en ukulele-tuner som skulle ta en analog ingång (ukulele strängton), hitta grundfrekvensen, bestämma vilken ton som försökte att ställa in, och berätta för användaren om strängen behövde ställas in eller ned. Enheten jag använde för att översätta den analoga ingången till digital ingång var National Instruments USB-6008 DAQ (datainsamlingsenhet) och användargränssnittet implementerades med LabVIEW.

Steg 1: Standard Ukelele Tuning

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

Det första steget var att ta reda på de grundläggande frekvenserna för musiknoter, och vilket intervall ukulelesträngarna vanligtvis är inställda på. Jag använde dessa två sjökort och bestämde mig för att göra mitt tonintervall mellan 262 Hz (C) och 494 Hz (högt B). Allt mindre än 252 Hz skulle anses vara för lågt för att programmet ska kunna dechiffrera vilken ton som försökte spelas, och allt större än 500 Hz skulle anses vara för högt. Programmet berättar dock fortfarande för användaren hur många Hz de är borta från den närmaste avkodningsbara noten, och om strängen ska ställas in (ton för låg) eller ned (ton för hög) för att nå en tillgänglig ton.

Dessutom skapade jag intervall för varje ton, snarare än bara en enda frekvens, så att det skulle bli lättare för programmet att hitta vilken ton som spelades. Till exempel skulle programmet berätta för användaren att en C spelas om noten hade en grundfrekvens mellan 252 Hz (halvvägs till B) och 269Hz (halvvägs till C#), men för att avgöra om den behövde ställas in eller nedåt, skulle det fortfarande jämföra noten som spelas med grundfrekvensen för C som är 262Hz.

Steg 2: Skapa en rent digital teoretisk modell

Skapa en rent digital teoretisk modell
Skapa en rent digital teoretisk modell
Skapa en rent digital teoretisk modell
Skapa en rent digital teoretisk modell

Innan jag gick in på den analoga sidan av projektet ville jag se om jag kunde skapa ett LabVIEW -program som åtminstone skulle göra huvudbehandlingen av ett ljudprov, till exempel att läsa ett ljud.wav -sampel, hitta grundfrekvensen och göra nödvändiga jämförelser med frekvensdiagrammet för att ta reda på om ljudet ska stämmas upp eller ner.

Jag använde SoundFileSimpleRead. VI som finns i LabVIEW för att läsa en.wav -fil från en sökväg som jag angav, placera signalen i en indexerad array och mata den signalen till HarmonicDistortionAnalyzer. VI för att hitta grundfrekvensen. Jag tog också signalen från SoundFileSimpleRead. VI och kopplade den direkt till en vågformsindikator så att användaren kan se vågformen för filen på frontpanelen.

Jag skapade två fallstrukturer: en för att analysera vilken ton som spelades och den andra för att avgöra om strängen behövde vridas upp eller ner. För det första fallet skapade jag intervall för varje ton, och om grundfrekvenssignalen från HarmonicDistortionAnalyzer. VI var i det intervallet skulle det berätta för användaren vilken ton som spelades. När noten var bestämd, subtraherades det spelade notvärdet med notens faktiska grundfrekvens, och sedan flyttades resultatet till det andra fallet som bestämde följande: om resultatet är över noll måste strängen justeras ner; om resultatet är falskt (inte över noll), kontrollerar fallet om värdet är lika med noll, och om det är sant, meddelar programmet användaren att noten är i samklang; om värdet inte är lika med noll betyder det att det måste vara mindre än noll och att strängen måste justeras. Jag tog det absoluta värdet av resultatet för att visa användaren hur många Hz de är borta från den sanna noten.

Jag bestämde mig för att en mätarindikator skulle vara det bästa för att visuellt visa användaren vad som behöver göras för att göra noten i samklang.

Steg 3: Därefter den analoga kretsen

Därefter den analoga kretsen
Därefter den analoga kretsen
Därefter den analoga kretsen
Därefter den analoga kretsen
Därefter den analoga kretsen
Därefter den analoga kretsen

Mikrofonen jag använde för detta projekt är CMA-6542PF kondensatorelektretmikrofon. Databladet för denna mikrofon finns nedan. Till skillnad från de flesta kondensatormikrofoner av denna typ behövde jag inte oroa mig för polaritet. Databladet visar att arbetsspänningen för denna mikrofon är 4,5 - 10V, men 4,5 V rekommenderas, och dess strömförbrukning är max 0,5mA så det är något att vara försiktig med när man utformar en förförstärkarkrets för den. Driftsfrekvensen är 20Hz till 20kHz vilket är perfekt för ljud.

Jag implementerade en enkel förförstärkarkretsdesign på brödbrädan och justerade ingångsspänningen och såg till att det inte var mer än 0,5mA över mikrofonen. Kondensatorn används för att filtrera DC -bruset som kan kopplas ihop med de elektriska signalerna (utgång), och kondensatorn har polaritet, så var noga med att ansluta den positiva änden till mikrofonutgångsstiften.

Efter att kretsen var klar kopplade jag ut kretsens utgång till den första analoga ingångsstiftet (AI0, stift 2) på USB-6008 och kopplade marken på brödbrädan till den analoga jordstiftet (GND, stift 1). Jag kopplade USB-6008 till datorn med en USB och det var dags att göra justeringar i LabVIEW-programmet för att ta in en verklig analog signal.

Steg 4: Läsa analoga signaler med DAQ Assistant

Läser analoga signaler med DAQ Assistant
Läser analoga signaler med DAQ Assistant
Läser analoga signaler med DAQ Assistant
Läser analoga signaler med DAQ Assistant

Istället för att använda SoundFileSimpleRead. VI och HarmonicDistortionAnalyzer. VI använde jag DAQ Assistant. VI och ToneMeasurements. VI för att hantera den analoga ingången. DAQ Assistant-inställningen är ganska rak, och själva VI tar dig igenom stegen. ToneMeasurements. VI har många utgångar att välja mellan (amplitud, frekvens, fas), så jag använde frekvensutgången som ger ingångstonens grundfrekvens (från DAQ Assistant. VI). Utgången från ToneMeasurements. VI måste konverteras och sättas in i en array innan den kunde användas i fallstrukturerna, men resten av LabVIEW -programmeringen/indikatorerna förblev densamma.

Steg 5: Slutsats

Slutsats
Slutsats

Projektet var en framgång men det fanns definitivt många brister. När jag använde tunern i ett bullrigt klassrum var det väldigt svårt för programmet att avgöra vad som var brus och vilken ton som spelades. Detta beror troligen på att förförstärkarkretsen är väldigt grundläggande och att mikrofonen är väldigt billig. När det var tyst fungerade programmet dock med god tillförlitlighet för att bestämma noten som försökte spelas. På grund av tidsbrist gjorde jag inga ytterligare ändringar, men om jag skulle upprepa projektet skulle jag köpa en bättre mikrofon och spendera mer tid på förförstärkarkretsen.

Rekommenderad: