Sintonizador de guitarra automático basado en Arduino
Componentes y suministros
![]() |
| × | 1 |
Aplicaciones y servicios en línea
|
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.


Proceso de manufactura