Sommario:

Motore passo-passo controllato via MIDI con un chip di sintesi digitale diretta (DDS): 3 passaggi
Motore passo-passo controllato via MIDI con un chip di sintesi digitale diretta (DDS): 3 passaggi

Video: Motore passo-passo controllato via MIDI con un chip di sintesi digitale diretta (DDS): 3 passaggi

Video: Motore passo-passo controllato via MIDI con un chip di sintesi digitale diretta (DDS): 3 passaggi
Video: 【解說版】諜戰姐妹花率隊特工組,完成60個驚心動魄的任務!⚔️ 功夫 | 動作 | 抗日 2024, Dicembre
Anonim
Motore passo-passo controllato via MIDI con un chip DDS (Direct Digital Synthesis)
Motore passo-passo controllato via MIDI con un chip DDS (Direct Digital Synthesis)
Motore passo-passo controllato via MIDI con un chip DDS (Direct Digital Synthesis)
Motore passo-passo controllato via MIDI con un chip DDS (Direct Digital Synthesis)
Motore passo-passo controllato via MIDI con un chip DDS (Direct Digital Synthesis)
Motore passo-passo controllato via MIDI con un chip DDS (Direct Digital Synthesis)
Motore passo-passo controllato via MIDI con un chip DDS (Direct Digital Synthesis)
Motore passo-passo controllato via MIDI con un chip DDS (Direct Digital Synthesis)

Hai mai avuto una cattiva idea di dover SOLO trasformare in un mini progetto? Beh, stavo scherzando con uno schizzo che avevo fatto per Arduino Due finalizzato a fare musica con un modulo di sintesi digitale diretta (DDS) AD9833… e ad un certo punto ho pensato "ehi, forse dovrei montare un motore/driver questo". E quell'idea è esattamente ciò che ha scatenato questo piccolo progetto basato su breadboard.

In questo progetto sarà incluso un codice per l'utilizzo di MIDI-over-USB per controllare un Arduino Due e l'invio di onde quadre tra un modulo AD9833 e il driver stepper. Ci saranno anche uno schema e le istruzioni di base per collegarlo a un Arduino Due.

Forniture:

Cosa ti servirà per questo progetto:

Arduino Due

NOTA: Il codice è scritto per il Due, ma dovrebbe funzionare e/o essere adattato anche per lo Zero. Utilizza la libreria MIDIUSB di Arduino, che richiede una porta USB nativa.

Tagliere senza saldatura + ponticelli

Modulo Breakout AD9833

A4988 Stepper Driver (o simile)

Motore passo-passo NEMA 17 (o simile)

- Alimentazione 24V (nota, ho scelto questo valore di 24 Volt perché era maggiore della tensione nominale del motore passo-passo. La tua implementazione potrebbe essere diversa se usi un motore più grande)

Passaggio 1: breadboard

breadboard
breadboard

L'idea alla base di questo è che il circuito integrato per la sintesi digitale diretta genererà un'onda quadra per pilotare il pin "passo" del driver del motore passo-passo. Questo driver passo-passo sposterà quindi il motore alla frequenza udibile specificata. La direzione del motore è in qualche modo arbitraria purché passi alla frequenza corretta.

L'approccio che preferisco adottare con il breadboard è eseguire prima i pin di alimentazione e le masse e poi iniziare a eseguire tutte le altre connessioni non di alimentazione.

Terreno:

- Collegare i pin AGND e DGND del modulo AD9833 alla guida GND sulla breadboard.

- Collega i due pin GND sullo Stepper Driver alla guida GND

- Portalo su uno dei pin GND di Arduino Due

Potenza 3,3 V:

- Collega il Pin VDD dello Stepper Driver al V+ Rail della breadboard

- Collega il Pin VCC del Modulo AD9833 al V+ Rail della breadboard

- Portalo al pin 3.3V di Arduino Due

Alimentazione 24V:

- Collegare il pin VMOT all'alimentatore 24 V CC (a seconda della scelta del motore, potrebbe essere necessario eseguire una guida di alimentazione più alta o più bassa)

Connessione da modulo a modulo:

- Collegare il pin OUT del modulo AD9833 al pin STEP del driver del motore

Connessioni del driver passo-passo:

- Collegare le connessioni del motore passo-passo ai Pin 2B/2A/1A/1B. La polarità non è così importante, purché le fasi del driver corrispondano a quelle del motore passo-passo.

- Collega i Pin RESET e SLEEP insieme e portali al Due Pin 8 di Arduino.

- Collega il Pin DIR al Rail 3.3V

Connessioni del modulo AD9833:

- Collega SCLK al pin SCK di Arduino Due. Si noti che questo pin si trova sull'intestazione ICSP maschio a 6 pin vicino al microcontrollore, non sulle normali intestazioni femminili esterne.

- Collegare il pin SDATA al pin MOSI del Due. Si noti che questo pin si trova sull'intestazione ICSP maschio a 6 pin vicino al microcontrollore, non sulle normali intestazioni femminili esterne.

- Collega l'FSYNC all'Arduino Due Pin 6 (questo è il pin Chip Select per questo progetto)

Ora che la breadboard è completamente assemblata, è il momento di dare un'occhiata al codice!

Passaggio 2: programmazione e configurazione MIDI

Programmazione e configurazione MIDI
Programmazione e configurazione MIDI

Lo sketch.ino allegato prenderà gli ingressi USB-MIDI attraverso la porta USB nativa di Arduino Due e li utilizzerà per pilotare l'AD9833. Questo chip ha un DAC che funziona a 25 MHz con 28 bit di risoluzione in frequenza (overkill totale per ciò che è necessario qui) e gran parte del codice qui lo sta configurando per eseguire ed emettere un'onda quadra.

Nota: ci sono due porte USB. Uno viene utilizzato per la programmazione della scheda e l'altro verrà utilizzato per le comunicazioni MIDI-over-USB

Nota che questo schizzo non funzionerà così com'è su Arduino Uno: questo progetto è specifico per la sua necessità di USB nativo in Arduino Due o dispositivi simili

Opzioni di personalizzazione:

- Ci sono 2 modalità, che possono essere impostate da una definizione di macro del preprocessore. Se "#define STOPNOTES" viene lasciato intatto, lo stepper si fermerà tra le note. Ciò non è sempre desiderato (ad esempio, suonare arpeggi veloci), quindi per modificare questo comportamento, è sufficiente eliminare o commentare l'istruzione #define e lo stepper verrà eseguito continuamente una volta riprodotto.

- Uso una tastiera MIDI economica da 2 ottave con questa che ha un pulsante di ottava su/giù, ma nel caso in cui non disponi di questa opzione, puoi spostare di ottava la traduzione di frequenza inferiore moltiplicando o dividendo per potenze di 2.

La conversione da MIDI a frequenza viene eseguita con questa riga nella funzione playNote:int f_out = (int)(27.5*pow(2, ((float)midiNote-33)/12));

- Tendo a usare il mio PC per l'interfacciamento tramite USB MIDI - puoi farlo dal tuo software Digital Audio Workstation (DAW) preferito. Se non ne hai uno, è abbastanza facile configurare questo sistema utilizzando LMMS, una piattaforma open source gratuita. Una volta installato e funzionante, imposta semplicemente Arduino Due come dispositivo di output MIDI e, se stai utilizzando una tastiera MIDI USB, impostalo come input.

Passaggio 3: test e sperimentazione

È ora di suonare il tuo motore passo-passo!

Come affermato, l'intera idea alla base di questo era una specie di esperimento a braccio, quindi con tutti i mezzi, fai qualche esperimento tu stesso!

Consigliato: