Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sintonizador de guitarra automático basado en Arduino

Componentes y suministros

Arduino UNO
× 1

Aplicaciones y servicios en línea

Simulink

Acerca de este proyecto

Una de las cosas más importantes al tocar la guitarra es asegurarse de que el instrumento esté afinado. Incluso el mejor guitarrista no sonará bien con una guitarra desafinada. Afinar guitarras a mano con un afinador estándar siempre ha sido algo común, pero un afinador automático hace las cosas mucho más fáciles y divertidas. Este proyecto basado en Arduino afinará tu guitarra por ti.

Aquí hay un video que muestra el proyecto en acción:https://www.mathworks.com/videos/automatic-guitar-tuner-using-simulink-and-arduino-1501787185047.html

Descripción general

La figura anterior muestra una descripción general del afinador de guitarra automático.

  • El botón pulsador se utiliza para seleccionar la cuerda a afinar
  • Se utiliza una pantalla de seis LED para indicar qué cadena se ha seleccionado
  • La pinza conectada al motor se usa para girar la clavija de afinación hasta que la cuerda esté afinada.

Las entradas y salidas están controladas por los cuatro circuitos mencionados anteriormente:un circuito de entrada digital para el botón pulsador, un circuito de entrada de audio analógico para la guitarra, un circuito de salida digital para la pantalla LED y un circuito de accionamiento del motor para la clavija de afinación. pinza. Estos cuatro circuitos interactúan con un Arduino Due, que ejecuta un algoritmo que se desarrolló con Simulink.

Circuito de entrada de audio

La guitarra está conectada al afinador a través de un cable de guitarra estándar. El extremo de un cable de guitarra tiene dos conexiones, llamadas punta y funda. Un extremo del cable se conectará a un conector de entrada, que tiene cables para la punta y la manga. Soldé cables en estos cables para conectar la punta y la funda al circuito de entrada de audio.

Recomendaría usar un amplificador operacional TL972 para este circuito. Es un amplificador de riel a riel de muy bajo ruido que puede funcionar con voltajes de suministro muy bajos.

Pinza de clavija de afinación motorizada

No podría usar cualquier motor de CC para este proyecto. Necesitaba un motorreductor de baja velocidad y alto par. El motor que utilicé tiene una velocidad de 6 RPM y un par máximo de 613 oz-in. Tiene un rango de voltaje de 3 a 12 V, por lo que utilicé una batería de 9 V como fuente de alimentación.

En el eje del motor, armé un mecanismo de agarre simple usando un cubo de abrazadera, cuatro tornillos y un poco de cinta.

Software

Usé Simulink y su paquete de soporte para Arduino para desarrollar el algoritmo para el sintonizador. Simulink es un entorno de diagrama de bloques que se utiliza para desarrollar algoritmos y modelar sistemas dinámicos. El paquete de soporte me permite leer y escribir en pines en el Arduino usando bloques Simulink. Usando las capacidades de modo externo del software, puedo simular un algoritmo en el Arduino con generación automática de código y ajustar los parámetros mientras se ejecuta la simulación, sin tener que volver a compilar ningún código. Luego puedo implementar el algoritmo en el hardware para una ejecución independiente. El modelo que creé se muestra a continuación.

El modo externo permite el uso de bloques de osciloscopio para monitorear partes del algoritmo mientras se ejecuta en el hardware. Esto es especialmente útil para monitorear la entrada digital del botón y la entrada analógica de la guitarra. Desde el alcance del botón, podemos ver que la entrada cambia de 0 a 1 cuando se presiona el botón.

Quiero que este cambio de 0 a 1 active un cambio en la cadena seleccionada. Esto se conoce como un disparador ascendente. Creé un diagrama de flujo de estado llamado "Seleccionar cadena" que tiene seis estados, uno para cada cadena, y cambia de un estado al siguiente en función de esta entrada de activación ascendente. Aquí hay un vistazo más detallado al diagrama de Stateflow.

Al ingresar a cada estado, el pin LED de la cadena correspondiente se establece en alto. Al salir de cada estado, el pin se establece en bajo. Elegí la cuerda E baja, la más baja de las seis cuerdas, como predeterminada. Cuando enciendo el sintonizador por primera vez, se iniciará en este estado predeterminado.

Hay siete salidas en el diagrama de flujo de estado:una para el LED para cada una de las seis cadenas, y otra llamada “periodRange”, que discutiré más adelante. Las seis salidas LED van directamente a los bloques de salida digital Arduino para encender o apagar el LED correspondiente.

Ahora veamos la parte de procesamiento de audio del modelo. La señal de guitarra entra a través del bloque de entrada analógica. Configuré el tiempo de muestreo del bloque en 0,0002 segundos para una frecuencia de muestreo de 5 kHz. Cuando toqué la guitarra y abrí el bloque del osciloscopio de audio, pude ver una forma de onda como la que se muestra a continuación.

El bloque del osciloscopio me ayudó a sintonizar el potenciómetro en el circuito de audio para cambiar la ganancia de la entrada. La ganancia debe establecerse lo más alta posible sin que el pico de la forma de onda alcance el valor máximo de 1023. Esto permitirá la lectura más precisa de la señal.

Cuando no se toca la guitarra, la señal de entrada debe ser una línea plana entre 500 y 700. En mi caso, fue alrededor de 550. Es importante conocer este valor porque el afinador debe procesar el audio solo cuando hay una nota siendo jugado. Elegí un valor de 575, justo por encima de esta línea plana, como mi umbral. El audio se procesará solo cuando la señal esté por encima de este valor de umbral. Dado que Simulink me permite ajustar los parámetros mientras se ejecuta una simulación, pude establecer fácilmente mi valor de umbral.

Cuando se toca una sola nota en una guitarra, la forma de onda generada es periódica. El período de la forma de onda corresponde a un cierto tono musical. El algoritmo de afinación estima el tono de la cuerda determinando el período de la forma de onda. Escribí una función de MATLAB que realiza esta estimación de tono y la incluí en mi modelo de Simulink usando el bloque de funciones de MATLAB. Para determinar si la cuerda está afinada, la función MATLAB necesita una entrada que indique qué rango de períodos se considera afinado para cada cuerda. Esta es la salida "periodRange" del diagrama de flujo de estado. La función determina si el tono de la cuerda es demasiado alto, demasiado bajo o afinado en función del rango del período, y genera salidas para el motor en consecuencia.

Las salidas de la función MATLAB son los tres pines que controlan el motor. Estas salidas van directamente a los bloques de salida digital de Arduino.

Una vez que me aseguré de que todo estaba bien con mi algoritmo, pude implementarlo en el hardware para que pudiera ejecutarse de forma independiente, sin estar conectado a la PC e independiente de Simulink.

¡Ahora puedo afinar mi guitarra automáticamente!

Todos los archivos necesarios para este proyecto están disponibles aquí:

https://www.mathworks.com/matlabcentral/fileexchange/63697-automatic-guitar-tuner-using-simulink-and-arduino

Esquemas

El circuito del botón pulsador es un interruptor simple con una resistencia desplegable. El circuito de pantalla LED incluye 6 LED y una resistencia limitadora de corriente. Usé el pin de entrada analógica "A0" en el Arduino para leer la señal de audio proveniente de la guitarra. El Arduino Due lee voltajes entre 0 V y 3.3 V. Sin embargo, la señal proveniente de la guitarra es muy baja en amplitud y oscila alrededor de 0 V, lo que significa que contiene algunos voltajes negativos que el Arduino no puede leer. Para solucionar esto, el circuito de entrada necesita amplificar la señal y agregar una compensación de CC. El circuito también debe proporcionar un filtro de paso bajo para eliminar los componentes de alta frecuencia de la señal. Cualquier señal muestreada no debe contener frecuencias superiores a la mitad de la frecuencia de muestreo. Dado que el sintonizador muestrea el audio a una velocidad de 5 kHz, mi circuito elimina las frecuencias superiores a 2,5 kHz. Monté el circuito como se muestra a continuación. Controlé la pinza de clavija de sintonización motorizada usando tres pines de salida digital del Arduino conectado a un chip de puente H L293D . Este chip nos permite girar el motor en cualquier dirección o detener el motor en función de los estados de estos tres pines. Uno de los pines se llama el pin de habilitación, y el motor solo girará cuando el pin de habilitación se establezca en alto. Los otros dos pines determinan la dirección del motor. Conecté el circuito como se muestra a continuación.

Proceso de manufactura

  1. Guitarra eléctrica
  2. Spork
  3. Titanio
  4. Biocerámicas
  5. Castañuelas
  6. Pegamento
  7. Hilo
  8. Acetileno
  9. Amianto
  10. Dados
  11. Estaño