Tabla de contenido:

Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS): 3 pasos
Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS): 3 pasos

Video: Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS): 3 pasos

Video: Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS): 3 pasos
Video: Cómo controlar dos motores con L293D + 3 botones/cada motor con Arduino Uno (Parte 1) 2024, Noviembre
Anonim
Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS)
Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS)
Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS)
Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS)
Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS)
Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS)
Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS)
Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS)

¿Alguna vez tuviste una mala idea que SÓLO tenías que convertir en un mini proyecto? Bueno, estaba jugando con un boceto que había hecho para Arduino Due destinado a hacer música con un módulo AD9833 Direct Digital Synthesis (DDS) … y en algún momento pensé "oye, tal vez debería instalar un motor / controlador paso a paso para esta". Y esa idea es exactamente lo que provocó este pequeño proyecto basado en protoboard.

En este proyecto se incluirá un código para usar MIDI a través de USB para controlar un Arduino Due y enviar ondas cuadradas entre un módulo AD9833 y el controlador paso a paso. También habrá un diagrama e instrucciones básicas para conectar esto a un Arduino Due.

Suministros:

Qué necesitará para este proyecto:

Arduino Due

NOTA: El código está escrito para Due, pero también debería funcionar y / o adaptarse para Zero. Utiliza la biblioteca MIDIUSB de Arduino, que requiere un puerto USB nativo.

Placa de pruebas sin soldadura + puentes

Módulo de conexión AD9833

Controlador paso a paso A4988 (o similar)

Motor paso a paso NEMA 17 (o similar)

- Fuente de alimentación de 24 V (tenga en cuenta que elegí este valor de 24 voltios porque era mayor que el voltaje nominal del motor paso a paso. Su implementación puede ser diferente si usa un motor más grande)

Paso 1: Breadboarding

Breadboarding
Breadboarding

La idea básica detrás de esto es que el IC de síntesis digital directa generará una onda cuadrada para impulsar el pin de "paso" del controlador del motor paso a paso. Este controlador paso a paso moverá el motor a la frecuencia audible especificada. La dirección del motor es algo arbitraria siempre que se mueva a la frecuencia correcta.

El enfoque que prefiero adoptar con la placa de pruebas es ejecutar los pines de alimentación y las conexiones a tierra primero y luego comenzar a ejecutar todas las demás conexiones que no sean de alimentación.

Suelo:

- Conecte los pines AGND y DGND del módulo AD9833 al riel GND en la placa de pruebas.

- Conecte los dos pines GND del controlador paso a paso al riel GND

- Lleva esto a uno de los pines GND de Arduino Due

3.3V de potencia:

- Conecte el pin VDD del controlador paso a paso al riel V + de la placa de pruebas

- Conecte el pin VCC del módulo AD9833 al riel V + de la placa de pruebas

- Lleva esto al pin de 3.3V de Arduino Due

24 V de potencia:

- Conecte el pin VMOT a la fuente de alimentación de 24 V CC (según su elección de motor, es posible que desee ejecutar un riel de suministro más alto o más bajo)

Conexión de módulo a módulo:

- Conecte el pin OUT del módulo AD9833 al pin STEP del controlador del motor

Conexiones del controlador paso a paso:

- Conecte las conexiones del motor paso a paso a los pines 2B / 2A / 1A / 1B. La polaridad no es tan importante, siempre que las fases del controlador coincidan con las del motor paso a paso.

- Conecte los pines RESET y SLEEP juntos, y llévelos al Pin 8 de Arduino Due.

- Conecte el pin DIR al riel de 3.3V

Conexiones del módulo AD9833:

- Conecte SCLK al pin SCK de Arduino Due. Tenga en cuenta que este pin está en el conector ICSP macho de 6 pines cerca del microcontrolador, no en los conectores hembra externos normales.

- Conecte el pin SDATA al pin MOSI de Due. Tenga en cuenta que este pin está en el conector ICSP macho de 6 pines cerca del microcontrolador, no en los conectores hembra externos normales.

- Conecte el FSYNC al Pin 6 de Arduino Due (este es el pin de selección de chip para este proyecto)

Ahora que la placa está completamente ensamblada, ¡es hora de echar un vistazo al código!

Paso 2: Programación y configuración MIDI

Programación y configuración MIDI
Programación y configuración MIDI

El boceto.ino adjunto tomará entradas USB-MIDI a través del puerto USB nativo de Arduino Due y las usará para controlar el AD9833. Este chip tiene un DAC que se ejecuta a 25MHz con 28 bits de resolución de frecuencia (exageración total para lo que se necesita aquí), y gran parte del código aquí lo configura para ejecutar y generar una onda cuadrada.

Nota: hay dos puertos USB. Uno se utiliza para programar la placa y el otro se utilizará para comunicaciones MIDI a través de USB

Tenga en cuenta que este boceto no funcionará como está en el Arduino Uno; este proyecto es específico en su necesidad del USB nativo en el Arduino Due o dispositivos similares

Opciones de personalización:

- Hay 2 modos, que se pueden configurar mediante una definición de macro de preprocesador. Si "#define STOPNOTES" se deja intacto, el paso a paso se detendrá entre notas. Esto no siempre se desea (por ejemplo, tocar arpegios rápidos), así que para cambiar este comportamiento, simplemente elimine o comente esa declaración #define y el paso a paso se ejecutará continuamente una vez que se reproduzca.

- Utilizo un teclado MIDI barato de 2 octavas con este que tiene un botón de octava arriba / abajo, pero en caso de que no tenga esa opción, puede cambiar una octava de la traducción de frecuencia de abajo multiplicando o dividiendo por potencias de 2.

La traducción de MIDI a frecuencia se realiza con esta línea en la función playNote: int f_out = (int) (27.5 * pow (2, ((float) midiNote-33) / 12));

- Tiendo a usar mi PC para la interfaz a través de USB MIDI; puede hacerlo desde su software de estación de trabajo de audio digital (DAW) favorito. Si no tiene uno, es bastante fácil configurar este sistema usando LMMS, una plataforma gratuita de código abierto. Una vez que esté instalado y funcionando, simplemente configure el Arduino Due como el dispositivo de salida MIDI, y si está usando un teclado MIDI USB, configúrelo como una entrada.

Paso 3: prueba y experimentación

¡Es hora de jugar con tu motor paso a paso!

Como se dijo, toda la idea detrás de esto fue una especie de experimento improvisado, así que, por supuesto, ¡haz algunos experimentos por tu cuenta!

Recomendado: