Índice:
Vídeo: Motor de passo controlado por MIDI com chip de síntese digital direta (DDS): 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:34
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
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
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:
Elevador de motor de passo controlado por IR: 15 etapas
Elevador com motor de passo controlado por infravermelho: eu precisava automatizar o levantamento de uma imagem grande que esconde uma TV montada sobre uma lareira. A imagem é montada em uma estrutura de aço deslizante personalizada que usa cordas, polias e contrapesos para que possa ser levantada com a mão. Isso parece bom em teoria, mas inc
Motor de passo controlado por motor de passo sem microcontrolador !: 6 etapas
Motor de passo controlado por motor de passo sem microcontrolador !: Neste instrutivo rápido, faremos um controlador de motor de passo simples usando um motor de passo. Este projeto não requer circuitos complexos ou um microcontrolador. Então, sem mais delongas, vamos começar
Motor de passo controlado por motor de passo sem microcontrolador (V2): 9 etapas (com imagens)
Motor de passo controlado por motor de passo sem microcontrolador (V2): Em um dos meus Instructables anteriores, mostrei como controlar um motor de passo usando um motor de passo sem um microcontrolador. Foi um projeto rápido e divertido, mas veio com dois problemas que serão resolvidos neste Instructable. Então, sagacidade
Locomotiva modelo com motor de passo controlado - Motor de passo como codificador giratório: 11 etapas (com imagens)
Locomotiva modelo com motor de passo controlado | Motor de passo como codificador giratório: Em um dos instrutíveis anteriores, aprendemos como usar um motor de passo como codificador giratório. Neste projeto, agora usaremos aquele motor de passo girado em codificador rotativo para controlar um modelo de locomotiva usando um microcontrolador Arduino. Então, sem fu
Motor de passo controlado por motor de passo - Motor de passo como codificador giratório: 11 etapas (com imagens)
Motor de passo controlado por motor de passo | Motor de passo como codificador rotativo: Você tem alguns motores de passo por aí e quer fazer alguma coisa? Neste Instructable, vamos usar um motor de passo como um codificador rotativo para controlar a posição de outro motor de passo usando um microcontrolador Arduino. Então, sem mais delongas, vamos