Tabla de contenido:
Video: Motor paso a paso controlado por MIDI con un chip de síntesis digital directa (DDS): 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
¿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
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
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:
Elevación del motor paso a paso controlado por infrarrojos: 15 pasos
Elevador de motor paso a paso controlado por infrarrojos: necesitaba automatizar el levantamiento de una imagen grande que oculta un televisor montado sobre una chimenea. La imagen está montada en un marco de acero deslizante personalizado que utiliza cuerdas, poleas y contrapesos para que se pueda levantar con la mano. Esto suena bien en teoría, pero inc
Motor paso a paso controlado por motor paso a paso sin microcontrolador: 6 pasos
¡Motor paso a paso controlado por motor paso a paso sin microcontrolador !: En este Instructable rápido, haremos un controlador de motor paso a paso simple usando un motor paso a paso. Este proyecto no requiere circuitos complejos ni un microcontrolador. Así que sin más preámbulos, ¡comencemos
Motor paso a paso controlado por motor paso a paso sin microcontrolador (V2): 9 pasos (con imágenes)
Motor paso a paso controlado por motor paso a paso sin microcontrolador (V2): En uno de mis Instructables anteriores, le mostré cómo controlar un motor paso a paso usando un motor paso a paso sin un microcontrolador. Fue un proyecto rápido y divertido, pero vino con dos problemas que se resolverán en este Instructable. Entonces, ingenio
Modelo de locomotora controlada por motor paso a paso - Motor paso a paso como codificador rotatorio: 11 pasos (con imágenes)
Locomotora modelo controlada por motor paso a paso | Motor paso a paso como codificador rotatorio: en uno de los Instructables anteriores, aprendimos cómo usar un motor paso a paso como codificador rotatorio. En este proyecto, ahora usaremos ese motor paso a paso convertido en codificador rotatorio para controlar un modelo de locomotora usando un microcontrolador Arduino. Entonces, sin fu
Motor paso a paso controlado por motor - Motor paso a paso como codificador rotatorio: 11 pasos (con imágenes)
Motor paso a paso controlado por motor paso a paso | Motor paso a paso como codificador rotatorio: ¿Tiene un par de motores paso a paso por ahí y quiere hacer algo? En este Instructable, usemos un motor paso a paso como codificador rotatorio para controlar la posición de otro motor paso a paso usando un microcontrolador Arduino. Así que sin más preámbulos, vamos a