Sommario:
- Passaggio 1: accordatura standard dell'ukulele
- Passaggio 2: creazione di un modello teorico puramente digitale
- Passaggio 3: Successivamente, il circuito analogico
- Passaggio 4: lettura dei segnali analogici con DAQ Assistant
- Passaggio 5: conclusione
Video: Ukelele Tuner utilizzando LabView e NI USB-6008: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Come progetto di apprendimento basato sui problemi per il mio corso LabVIEW & Instrumentation presso l'Humber College (Electronics Engineering Technology), ho creato un accordatore per ukulele che avrebbe preso un ingresso analogico (tono della corda dell'ukulele), trovare la frequenza fondamentale, decidere quale nota stava provando da accordare, e dire all'utente se la corda ha bisogno di essere accordata in su o in giù. Il dispositivo che ho usato per tradurre l'input analogico in input digitale era il National Instruments USB-6008 DAQ (dispositivo di acquisizione dati) e l'interfaccia utente è stata implementata con LabVIEW.
Passaggio 1: accordatura standard dell'ukulele
Il primo passo è stato scoprire le frequenze fondamentali delle note musicali e su quale gamma sono generalmente sintonizzate le corde dell'ukulele. Ho usato questi due grafici e ho deciso che avrei fatto in modo che la mia gamma di toni fosse compresa tra 262 Hz (Do) e 494 Hz (Si alto). Qualsiasi cosa inferiore a 252 Hz sarebbe considerata troppo bassa per consentire al programma di decifrare quale nota stava cercando di essere riprodotta, e qualsiasi cosa maggiore di 500 Hz sarebbe considerata troppo alta. Il programma, comunque, dice comunque all'utente di quanti Hz mancano alla nota decifrabile più vicina, e se la corda deve essere accordata in alto (nota troppo bassa) o in basso (nota troppo alta) per raggiungere una nota disponibile.
Inoltre, ho creato intervalli per ogni nota, anziché solo una singola frequenza, in modo che fosse più facile per il programma trovare quale nota veniva suonata. Ad esempio, il programma dirà all'utente che si sta suonando un Do se la nota ha una frequenza fondamentale compresa tra 252 Hz (metà del SI) e 269 Hz (metà del Do#), ma per decidere se è necessario accordare o giù, confronterebbe comunque la nota suonata con la frequenza fondamentale di C che è 262Hz.
Passaggio 2: creazione di un modello teorico puramente digitale
Prima di immergermi nel lato analogico del progetto, volevo vedere se potevo creare un programma LabVIEW che facesse almeno l'elaborazione principale di un campione sonoro, come leggere un campione audio.wav, trovare la frequenza fondamentale e creare i confronti richiesti alla tabella delle frequenze per trovare se il suono deve essere sintonizzato verso l'alto o verso il basso.
Ho usato SoundFileSimpleRead. VI disponibile in LabVIEW per leggere un file.wav da un percorso che avevo designato, inserire il segnale in un array indicizzato e inserire quel segnale in HarmonicDistortionAnalyzer. VI per trovare la frequenza fondamentale. Ho anche preso il segnale da SoundFileSimpleRead. VI e l'ho collegato direttamente a un indicatore del grafico della forma d'onda in modo che l'utente possa vedere la forma d'onda del file sul pannello frontale.
Ho creato 2 strutture di case: una per analizzare quale nota veniva suonata e l'altra per determinare se la corda doveva essere alzata o abbassata. Per il primo caso, ho creato intervalli per ogni nota e se il segnale di frequenza fondamentale dall'HaronicDistortionAnalyzer. VI era in quell'intervallo, avrebbe detto all'utente quale nota veniva suonata. Una volta determinata la nota, il valore della nota suonata è stato sottratto dalla frequenza fondamentale effettiva della nota, quindi il risultato è stato spostato nel secondo caso che ha determinato quanto segue: se il risultato è superiore a zero, la corda deve essere accordata; se il risultato è falso (non superiore a zero), allora il caso verifica se il valore è uguale a zero, e se vero, allora il programma avviserà l'utente che la nota è intonata; se il valore non è uguale a zero, significa che deve essere minore di zero e che la stringa deve essere ritoccata. Ho preso il valore assoluto del risultato per mostrare all'utente quanti Hz sono lontani dalla nota vera.
Ho deciso che un indicatore di misura sarebbe stato il migliore per mostrare visivamente all'utente cosa deve essere fatto per intonare la nota.
Passaggio 3: Successivamente, il circuito analogico
Il microfono che ho usato per questo progetto è il microfono a condensatore electret CMA-6542PF. La scheda tecnica di questo microfono è sotto. A differenza della maggior parte dei microfoni a condensatore di questo tipo, non ho dovuto preoccuparmi della polarità. La scheda tecnica mostra che la tensione operativa per questo microfono è 4,5 - 10 V, ma si consigliano 4,5 V e il suo consumo di corrente è 0,5 mA max, quindi è qualcosa a cui prestare attenzione quando si progetta un circuito di preamplificazione per esso. La frequenza operativa va da 20Hz a 20kHz, perfetta per l'audio.
Ho implementato un semplice progetto di circuito di preamplificazione su breadboard e ho regolato la tensione di ingresso, assicurandomi che non ci fossero più di 0,5 mA attraverso il microfono. Il condensatore viene utilizzato per filtrare il rumore CC che potrebbe essere accoppiato insieme ai segnali elettrici (uscita) e il condensatore ha polarità, quindi assicurati di collegare l'estremità positiva al pin di uscita del microfono.
Dopo che il circuito è stato completato, ho collegato l'uscita del circuito al primo pin di ingresso analogico (AI0, pin 2) dell'USB-6008 e ho collegato la massa della breadboard al pin di terra analogico (GND, pin 1). Ho collegato l'USB-6008 al PC con una porta USB ed è arrivato il momento di apportare modifiche al programma LabVIEW per ricevere un segnale analogico effettivo.
Passaggio 4: lettura dei segnali analogici con DAQ Assistant
Invece di utilizzare SoundFileSimpleRead. VI e HarmonicDistortionAnalyzer. VI, ho utilizzato DAQ Assistant. VI e ToneMeasurements. VI per gestire l'ingresso analogico. La configurazione di DAQ Assistant è abbastanza semplice e il VI stesso ti guida attraverso i passaggi. Il ToneMeasurements. VI ha molte uscite tra cui scegliere (ampiezza, frequenza, fase), quindi ho usato l'uscita di frequenza che fornisce la frequenza fondamentale del tono di ingresso (dal DAQ Assistant. VI). L'output di ToneMeasurements. VI doveva essere convertito e inserito in un array prima di poter essere utilizzato nelle strutture del case, ma il resto della programmazione/indicatori di LabVIEW è rimasto lo stesso.
Passaggio 5: conclusione
Il progetto è stato un successo ma c'erano sicuramente molti difetti. Quando stavo azionando l'accordatore in un'aula rumorosa, era molto difficile per il programma determinare quale fosse il rumore e quale fosse il tono riprodotto. Ciò è probabilmente dovuto al fatto che il circuito del preamplificatore è molto semplice e il microfono è molto economico. Quando era silenzioso, tuttavia, il programma funzionava con una buona affidabilità per determinare la nota che stava cercando di essere suonata. Per motivi di tempo non ho apportato ulteriori modifiche, ma se dovessi ripetere il progetto acquisterei un microfono migliore e passerei più tempo sul circuito di preamplificazione.
Consigliato:
Come creare un'unità flash USB utilizzando una gomma - Custodia per unità USB fai da te: 4 passaggi
Come creare un'unità flash USB utilizzando una gomma | Custodia per unità USB fai-da-te: questo blog tratta di "Come realizzare un'unità flash USB utilizzando una gomma | Custodia per unità USB fai da te" Spero ti piaccia
Monitoraggio dell'accelerazione utilizzando Raspberry Pi e AIS328DQTR utilizzando Python: 6 passaggi
Monitoraggio dell'accelerazione utilizzando Raspberry Pi e AIS328DQTR Utilizzando Python: l'accelerazione è finita, penso che secondo alcune leggi della fisica.- Terry Riley Un ghepardo utilizza un'accelerazione straordinaria e rapidi cambiamenti di velocità durante la caccia. La creatura più veloce a terra di tanto in tanto utilizza il suo ritmo più alto per catturare la preda. Il
Neopixel Ws2812 Arcobaleno LED Glow con M5stick-C - Esecuzione di Rainbow su Neopixel Ws2812 utilizzando M5stack M5stick C Utilizzando Arduino IDE: 5 passaggi
Neopixel Ws2812 Arcobaleno LED Glow con M5stick-C | Esecuzione di Rainbow su Neopixel Ws2812 Utilizzo di M5stack M5stick C Utilizzo di Arduino IDE: Ciao ragazzi in questo tutorial impareremo come utilizzare i LED neopixel ws2812 o la striscia led o la matrice led o l'anello led con la scheda di sviluppo m5stack m5stick-C con Arduino IDE e faremo un motivo arcobaleno con esso
Robot Ukelele: 15 passaggi
Ukelele Robot: El proyecto consiste en un sistema para tocar melodías en un Ukelele introduciendo ya sea acorde por acorde o la instrucción de tocar alguna de las melodías disponibles (en este caso la melodía se compone por los acordes C, G, Am, y F secuenciados)
La porta USB NODEMcu non funziona? Carica il codice utilizzando il modulo da USB a TTL (FTDI) in soli 2 passaggi: 3 passaggi
La porta USB NODEMcu non funziona? Carica il codice utilizzando il modulo da USB a TTL (FTDI) in soli 2 passaggi: stanco di connetterti a molti fili dal modulo USB a TTL al NODEMcu, segui queste istruzioni per caricare il codice in soli 2 passaggi. Se la porta USB del NODEMcu non funziona, quindi niente panico. È solo il chip del driver USB o il connettore USB