Índice:

Motor de passo controlado por MIDI com chip de síntese digital direta (DDS): 3 etapas
Motor de passo controlado por MIDI com chip de síntese digital direta (DDS): 3 etapas

Vídeo: Motor de passo controlado por MIDI com chip de síntese digital direta (DDS): 3 etapas

Vídeo: Motor de passo controlado por MIDI com chip de síntese digital direta (DDS): 3 etapas
Vídeo: Marvel's Spider-Man Gameplay Walkthrough [Full Game Movie - All Cutscenes Longplay] No Commentary 2024, Julho
Anonim
Motor de passo controlado por MIDI com chip de síntese digital direta (DDS)
Motor de passo controlado por MIDI com chip de síntese digital direta (DDS)
Motor de passo controlado por MIDI com chip de síntese digital direta (DDS)
Motor de passo controlado por MIDI com chip de síntese digital direta (DDS)
Motor de passo controlado por MIDI com chip de síntese digital direta (DDS)
Motor de passo controlado por MIDI com chip de síntese digital direta (DDS)
Motor de passo controlado por MIDI com chip de síntese digital direta (DDS)
Motor de passo controlado por MIDI com chip de síntese digital direta (DDS)

Você já teve a má ideia de que você APENAS teve que se transformar em um miniprojeto? Bem, eu estava brincando com um esboço que fiz para o Arduino Due com o objetivo de fazer música com um módulo AD9833 Direct Digital Synthesis (DDS) … e em algum momento pensei "ei, talvez eu deva montar um motor / driver de passo para isto". E essa ideia é exatamente o que gerou este pequeno projeto baseado em breadboard.

Incluído neste projeto estará algum código para usar MIDI-over-USB para controlar um Arduino Due e enviar ondas quadradas entre um módulo AD9833 e o driver de passo. Haverá também um diagrama e instruções básicas para conectar isso a um Arduino Due.

Suprimentos:

O que você precisa para este projeto:

Arduino Due

NOTA: O código é escrito para o Devido, mas também deve funcionar e / ou ser adaptado para o Zero. Ele utiliza a biblioteca MIDIUSB do Arduino, que requer uma porta USB nativa.

Placa de ensaio sem solda + jumpers

Módulo Breakout AD9833

Driver A4988 Stepper (ou similar)

Motor de passo NEMA 17 (ou similar)

- Fonte de alimentação de 24 V (observe, eu escolhi este valor de 24 V porque era maior do que a tensão nominal do motor de passo. Sua implementação pode ser diferente se você usar um motor maior)

Etapa 1: breadboarding

Breadboarding
Breadboarding

A ideia básica por trás disso é que o CI de síntese digital direta irá gerar uma onda quadrada para acionar o pino de "passo" do driver do motor de passo. Este driver de passo então moverá o motor na frequência audível especificada. A direção do motor é um tanto arbitrária, desde que pise na frequência correta.

A abordagem que prefiro adotar com o breadboard é ligar os pinos de alimentação e aterramentos primeiro e, em seguida, começar a executar todas as outras conexões sem alimentação.

Chão:

- Conecte os pinos AGND e DGND do módulo AD9833 ao trilho GND na placa de ensaio.

- Conecte os dois pinos GND no driver de passo ao trilho GND

- Traga isso para um dos pinos GND do Arduino Due

3.3V de energia:

- Conecte o pino VDD do driver de passo ao trilho V + da placa de ensaio

- Conecte o pino VCC do módulo AD9833 ao trilho V + da placa de ensaio

- Traga isso para o pino de 3,3 V do Arduino Due

Alimentação 24 V:

- Conecte o pino VMOT à fonte de alimentação de 24 Vcc (dependendo da sua escolha de motor, você pode querer executar um trilho de alimentação superior ou inferior)

Conexão Módulo a Módulo:

- Conecte o pino OUT do módulo AD9833 ao pino STEP do driver do motor

Conexões do driver de passo:

- Conecte as conexões do motor de passo aos pinos 2B / 2A / 1A / 1B. A polaridade não é tão importante, desde que as fases do driver correspondam às do motor de passo.

- Conecte os pinos RESET e SLEEP juntos e leve-os ao Arduino Due Pin 8.

- Conecte o pino DIR ao trilho de 3,3 V

Conexões do Módulo AD9833:

- Conecte o SCLK ao pino SCK do Arduino Due. Observe que este pino está no conector ICSP macho de 6 pinos próximo ao microcontrolador, não nos conectores fêmea externos normais.

- Conecte o pino SDATA ao pino MOSI do Due. Observe que este pino está no conector ICSP macho de 6 pinos próximo ao microcontrolador, não nos conectores fêmea externos normais.

- Conecte o FSYNC ao Arduino Due Pin 6 (este é o pino Chip Select para este projeto)

Agora que a placa de ensaio está totalmente montada, é hora de dar uma olhada no código!

Etapa 2: Programação e configuração de MIDI

Programação e configuração de MIDI
Programação e configuração de MIDI

O esboço.ino anexado terá entradas USB-MIDI por meio da porta USB nativa do Arduino Due e as usará para conduzir o AD9833. Este chip tem um DAC que roda a 25 MHz com 28 bits de resolução de frequência (um exagero total para o que é necessário aqui), e muito do código aqui está configurando isso para rodar e produzir uma onda quadrada.

Nota: existem duas portas USB. Um é usado para programar a placa e o outro para comunicação MIDI sobre USB

Observe que este esboço não funcionará no estado em que se encontra no Arduino Uno - este projeto é específico em sua necessidade de USB nativo no Arduino Due ou dispositivos semelhantes

Opções de personalização:

- Existem 2 modos, que podem ser definidos por uma definição de macro do pré-processador. Se "#define STOPNOTES" for deixado intacto, o stepper irá parar entre as notas. Isso nem sempre é desejado (por exemplo, tocar arpejos rápidos), portanto, para alterar esse comportamento, simplesmente exclua ou comente a instrução #define e o stepper será executado continuamente depois de tocado.

- Eu uso um teclado MIDI barato de 2 oitavas com um botão de subida / descida de oitava, mas caso você não tenha essa opção, você pode alterar a oitava da tradução de frequência abaixo multiplicando ou dividindo por potências de 2.

A tradução de MIDI para frequência é feita com esta linha na função playNote: int f_out = (int) (27.5 * pow (2, ((float) midiNote-33) / 12));

- Eu costumo usar meu PC para interface via USB MIDI - você pode fazer isso a partir de seu software Digital Audio Workstation (DAW) favorito. Se você não tiver um, é muito fácil configurar este sistema usando LMMS - uma plataforma de código aberto gratuita. Depois de instalado e funcionando, basta definir o Arduino Due como o dispositivo de saída MIDI e, se estiver usando um teclado USB MIDI, defina-o como uma entrada.

Etapa 3: Teste e Experimentação

É hora de jogar seu motor de passo!

Como declarado, toda a ideia por trás disso foi uma espécie de experimento improvisado, então, por favor, faça alguns experimentos você mesmo!

Recomendado: