Taula de continguts:

Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS): 3 passos
Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS): 3 passos

Vídeo: Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS): 3 passos

Vídeo: Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS): 3 passos
Vídeo: Вещи, которые мистеру Уэлчу больше не разрешается делать в сборнике для чтения RPG № 1-2450 2024, Juliol
Anonim
Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS)
Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS)
Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS)
Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS)
Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS)
Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS)
Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS)
Motor pas a pas controlat per MIDI amb xip de síntesi digital directa (DDS)

Alguna vegada heu tingut una mala idea que NOMÉS heu de convertir-vos en un mini projecte? Bé, estava jugant amb un esbós que havia fet per a l'Arduino Due dirigit a fer música amb un mòdul de síntesi digital directa (DDS) AD9833 … i en algun moment vaig pensar "hey, potser hauria d'instal·lar un motor pas a pas / controlador per això ". I aquesta idea és exactament el que va provocar aquest petit projecte basat en la taula de treball.

Aquest projecte inclourà algun codi per utilitzar MIDI-over-USB per controlar un Arduino Due i enviar ones quadrades entre un mòdul AD9833 i el controlador pas a pas. També hi haurà un diagrama i instruccions bàsiques per connectar-lo a un Arduino Due.

Subministraments:

Què necessiteu per a aquest projecte:

Arduino Due

NOTA: El codi està escrit per a Due, però també hauria de funcionar i / o adaptar-se al zero. Utilitza la biblioteca MIDIUSB d’Arduino, que requereix un port USB natiu.

Taula de pa sense soldadura + Jumpers

Mòdul AD9833 Breakout

Controlador pas a pas A4988 (o similar)

Motor pas a pas NEMA 17 (o similar)

- Font d'alimentació de 24 V (nota, he escollit aquest valor de 24 volts perquè era superior al voltatge nominal del motor pas a pas. La vostra implementació pot ser diferent si utilitzeu un motor més gran)

Pas 1: Taulers de revisió

Tauler de pa
Tauler de pa

La idea bàsica darrere d’això és que el CI de síntesi digital directa generarà una ona quadrada per conduir el pin "pas" del controlador del motor pas a pas. Aquest controlador pas a pas mourà el motor a la freqüència sonora especificada. La direcció del motor és una mica arbitrària sempre que passi a la freqüència correcta.

L’enfocament que prefereixo adoptar amb el taulell de navegació consisteix en executar primer els pins i els terrenys d’alimentació i després començar a executar totes les altres connexions sense alimentació.

Terra:

- Connecteu els passadors AGND i DGND del mòdul AD9833 al carril GND de la placa.

- Connecteu els dos passadors GND del controlador pas a pas amb el carril GND

- Porteu-ho a un dels pins GND d'Arduino Due

Potència de 3,3 V:

- Connecteu el pin VDD del controlador Stepper al rail V + de la placa de control

- Connecteu el pin VCC del mòdul AD9833 al rail V + del tauler de control

- Porteu-ho al pin d'Arduino Due de 3,3 V

Potència de 24V:

- Connecteu el pin VMOT a la font d'alimentació de 24 V CC (segons el motor que trieu, és possible que vulgueu fer servir un rail d'alimentació superior o inferior)

Connexió de mòdul a mòdul:

- Connecteu el pin OUT del mòdul AD9833 al pin STEP del controlador del motor

Connexions del controlador pas a pas:

- Connecteu les connexions del motor pas a pas als pins 2B / 2A / 1A / 1B. La polaritat no és tan important, sempre que les fases del controlador coincideixin amb les del motor pas a pas.

- Connecteu els pins RESET i SLEEP i porteu-los a l'Arduino Due Pin 8.

- Connecteu el pin DIR al carril de 3,3V

Connexions del mòdul AD9833:

- Connecteu SCLK al pin SCK d'Arduino Due. Tingueu en compte que aquest pin es troba a la capçalera ICSP mascle de 6 pins a prop del microcontrolador, no a les capçaleres femenines externes normals.

- Connecteu el pin SDATA al pin MOSI de Due. Tingueu en compte que aquest pin es troba a la capçalera ICSP mascle de 6 pins a prop del microcontrolador, no a les capçaleres femenines externes normals.

- Connecteu el FSYNC a l'Arduino Due Pin 6 (aquest és el pin Chip Select per a aquest projecte)

Ara que la taula de treball està totalment muntada, és hora de fer una ullada al codi.

Pas 2: programació i configuració MIDI

Programació i configuració MIDI
Programació i configuració MIDI

L'esbós.ino adjunt prendrà entrades USB-MIDI a través del port USB natiu d'Arduino Due i les utilitzarà per conduir l'AD9833. Aquest xip té un DAC que funciona a 25 MHz amb 28 bits de resolució de freqüència (excés total del que es necessita aquí), i gran part del codi aquí està configurant-lo per executar i produir una ona quadrada.

Nota: hi ha dos ports USB. Un s’utilitza per programar la placa i l’altre s’utilitzarà per a comunicacions MIDI-over-USB

Tingueu en compte que aquest esbós no funcionarà tal com està a l'Arduino Uno: aquest projecte és específic en la seva necessitat del Native USB a l'Arduino Due o dispositius similars

Opcions de personalització:

- Hi ha 2 modes, que es poden configurar mitjançant una definició de macro del preprocessador. Si es deixa intacte "#define STOPNOTES", el pas a pas s'aturarà entre les notes. Això no sempre es desitja (per exemple, jugar a arpegis ràpids), així que, per canviar aquest comportament, simplement suprimiu o comenteu que la sentència #define i el pas a pas funcionaran contínuament un cop reproduïts.

- Utilitzo un teclat MIDI barat de 2 octaves amb aquest botó que té un botó d’octava amunt / avall, però en cas que no tingueu aquesta opció, podeu canviar d’octava la traducció de freqüència inferior multiplicant o dividint per potències de 2.

La traducció MIDI a freqüència es fa amb aquesta línia a la funció playNote: int f_out = (int) (27,5 * pow (2, ((float) midiNote-33) / 12));

- Tendeixo a utilitzar el meu PC per a la interfície mitjançant USB MIDI: podeu fer-ho des del vostre programari DAW (Digital Audio Workstation) preferit. Si no en teniu, és bastant fàcil configurar aquest sistema mitjançant LMMS, una plataforma gratuïta de codi obert. Un cop instal·lat i funcionant, simplement configureu Arduino Due com a dispositiu de sortida MIDI i, si esteu fent servir un teclat MIDI USB, configureu-lo com a entrada.

Pas 3: proves i proves

És hora de tocar el motor pas a pas!

Com es va dir, tota la idea darrere d’això era una mena d’experiment senzill, així que, per descomptat, feu algun experiment propi.

Recomanat: