Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
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!