Tabla de contenido:

Sintonizador Ukelele usando LabView y NI USB-6008: 5 pasos
Sintonizador Ukelele usando LabView y NI USB-6008: 5 pasos

Video: Sintonizador Ukelele usando LabView y NI USB-6008: 5 pasos

Video: Sintonizador Ukelele usando LabView y NI USB-6008: 5 pasos
Video: Afinador de Guitarra (Auto Tuner) - Anteproyecto Ingeniería Mecatronica 2024, Noviembre
Anonim
Sintonizador Ukelele usando LabView y NI USB-6008
Sintonizador Ukelele usando LabView y NI USB-6008
Sintonizador Ukelele usando LabView y NI USB-6008
Sintonizador Ukelele usando LabView y NI USB-6008

Como un proyecto de aprendizaje basado en problemas para mi curso de LabVIEW e Instrumentación en Humber College (Tecnología de Ingeniería Electrónica), creé un afinador de ukelele que tomaría una entrada analógica (tono de cuerda de ukelele), encontraría la frecuencia fundamental, decidiría qué nota estaba probando afinar, y decirle al usuario si la cuerda necesita afinarse hacia arriba o hacia abajo. El dispositivo que usé para traducir la entrada analógica en entrada digital fue el DAQ (dispositivo de adquisición de datos) USB-6008 de National Instruments, y la interfaz de usuario se implementó con LabVIEW.

Paso 1: Afinación estándar de Ukelele

Afinación estándar de Ukelele
Afinación estándar de Ukelele
Afinación estándar de Ukelele
Afinación estándar de Ukelele

El primer paso fue averiguar las frecuencias fundamentales de las notas musicales y en qué rango se afinan normalmente las cuerdas del ukelele. Usé estos dos gráficos y decidí que haría mi rango de tono entre 262 Hz (C) y 494 Hz (B alto). Cualquier valor inferior a 252 Hz se consideraría demasiado bajo para que el programa pueda descifrar qué nota se intenta reproducir, y cualquier valor superior a 500 Hz se considerará demasiado alto. Sin embargo, el programa todavía le dice al usuario cuántos Hz están lejos de la nota descifrable más cercana, y si la cuerda debe afinarse hacia arriba (nota demasiado baja) o hacia abajo (nota demasiado alta) para alcanzar una nota disponible.

Además, creé rangos para cada nota, en lugar de solo una frecuencia, para que fuera más fácil para el programa encontrar qué nota se estaba reproduciendo. Por ejemplo, el programa le diría al usuario que se está reproduciendo una C si la nota tuviera una frecuencia fundamental entre 252 Hz (a la mitad de B) y 269Hz (a la mitad de C #), pero para decidir si es necesario afinarla. o hacia abajo, aún compararía la nota que se toca con la frecuencia fundamental de C, que es 262Hz.

Paso 2: Creación de un modelo teórico puramente digital

Creación de un modelo teórico puramente digital
Creación de un modelo teórico puramente digital
Creación de un modelo teórico puramente digital
Creación de un modelo teórico puramente digital

Antes de sumergirme en el lado analógico del proyecto, quería ver si podía crear un programa de LabVIEW que al menos hiciera el procesamiento principal de una muestra de sonido, como leer una muestra de audio.wav, encontrar la frecuencia fundamental y hacer las comparaciones requeridas con la tabla de frecuencias para encontrar si el sonido debe sintonizarse hacia arriba o hacia abajo.

Usé SoundFileSimpleRead. VI disponible en LabVIEW para leer un archivo.wav desde una ruta que designé, puse la señal en una matriz indexada y envié esa señal al HarmonicDistortionAnalyzer. VI para encontrar la frecuencia fundamental. También tomé la señal de SoundFileSimpleRead. VI y la conecté directamente a un indicador de gráfico de forma de onda para que el usuario pueda ver la forma de onda del archivo en el panel frontal.

Creé 2 estructuras de casos: una para analizar qué nota se estaba reproduciendo y la otra para determinar si era necesario subir o bajar la cuerda. Para el primer caso, creé rangos para cada nota, y si la señal de frecuencia fundamental del HarmonicDistortionAnalyzer. VI estaba en ese rango, le diría al usuario qué nota se estaba reproduciendo. Una vez que se determinó la nota, el valor de la nota tocada se resta de la frecuencia fundamental real de la nota, y luego el resultado se traslada al segundo caso que determina lo siguiente: si el resultado es superior a cero, entonces la cuerda debe afinarse; si el resultado es falso (no superior a cero), entonces el caso verifica si el valor es igual a cero, y si es verdadero, entonces el programa notificaría al usuario que la nota está afinada; si el valor no es igual a cero, significa que debe ser menor que cero y que la cuerda debe afinarse. Tomé el valor absoluto del resultado para mostrarle al usuario cuántos Hz están lejos de la nota verdadera.

Decidí que un indicador de medidor sería lo mejor para mostrar visualmente al usuario lo que se debe hacer para afinar la nota.

Paso 3: A continuación, el circuito analógico

A continuación, el circuito analógico
A continuación, el circuito analógico
A continuación, el circuito analógico
A continuación, el circuito analógico
A continuación, el circuito analógico
A continuación, el circuito analógico

El micrófono que utilicé para este proyecto es el micrófono electret de condensador CMA-6542PF. La hoja de datos de este micrófono se encuentra a continuación. A diferencia de la mayoría de los micrófonos de condensador de este tipo, no tuve que preocuparme por la polaridad. La hoja de datos muestra que el voltaje de operación para este micrófono es de 4.5 - 10V, pero se recomienda 4.5 V, y su consumo de corriente es de 0.5mA como máximo, por lo que es algo con lo que se debe tener cuidado al diseñar un circuito de preamplificador para él. La frecuencia de funcionamiento es de 20 Hz a 20 kHz, lo que es perfecto para audio.

Implementé un diseño de circuito de preamplificador simple en la placa de pruebas y ajusté el voltaje de entrada, asegurándome de que no hubiera más de 0.5 mA en el micrófono. El condensador se usa para filtrar el ruido de CC que podría estar acoplado con las señales eléctricas (salida), y el condensador tiene polaridad, así que asegúrese de conectar el extremo positivo al pin de salida del micrófono.

Una vez que se completó el circuito, conecté la salida del circuito al primer pin de entrada analógica (AI0, pin 2) del USB-6008, y conecté la tierra del tablero al pin de tierra analógica (GND, pin 1). Conecté el USB-6008 a la PC con un USB y llegó el momento de hacer ajustes al programa LabVIEW para recibir una señal analógica real.

Paso 4: lectura de señales analógicas con DAQ Assistant

Lectura de señales analógicas con DAQ Assistant
Lectura de señales analógicas con DAQ Assistant
Lectura de señales analógicas con DAQ Assistant
Lectura de señales analógicas con DAQ Assistant

En lugar de usar SoundFileSimpleRead. VI y HarmonicDistortionAnalyzer. VI, usé DAQ Assistant. VI y ToneMeasurements. VI para manejar la entrada analógica. La configuración del DAQ Assistant es bastante sencilla y el VI en sí lo guía a través de los pasos. El ToneMeasurements. VI tiene muchas salidas para elegir (amplitud, frecuencia, fase), así que usé la salida de frecuencia que da la frecuencia fundamental del tono de entrada (del DAQ Assistant. VI). La salida de ToneMeasurements. VI tuvo que convertirse y colocarse en una matriz antes de que pudiera usarse en las estructuras de casos, pero el resto de la programación / indicadores de LabVIEW permaneció igual.

Paso 5: Conclusión

Conclusión
Conclusión

El proyecto fue un éxito, pero definitivamente hubo muchos defectos. Cuando estaba operando el sintonizador en un aula ruidosa, era muy difícil para el programa determinar qué era ruido y cuál era el tono que se estaba reproduciendo. Esto probablemente se deba a que el circuito de preamplificador es muy básico y el micrófono es muy económico. Sin embargo, cuando estaba en silencio, el programa funcionaba con buena fiabilidad para determinar la nota que se intentaba tocar. Debido a limitaciones de tiempo, no hice ningún cambio adicional, pero si tuviera que repetir el proyecto compraría un micrófono mejor y pasaría más tiempo en el circuito del preamplificador.

Recomendado: