Sommario:
- Passaggio 1: breadboard
- Passaggio 2: programmazione e configurazione MIDI
- Passaggio 3: test e sperimentazione
Video: Motore passo-passo controllato via MIDI con un chip di sintesi digitale diretta (DDS): 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
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
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
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:
ESP32-CAM Costruisci la tua auto robot con streaming video in diretta: 4 passaggi
ESP32-CAM Costruire la propria auto robot con streaming video in diretta: l'idea è di rendere l'auto robot descritta qui il più economica possibile. Pertanto spero di raggiungere un ampio gruppo target con le mie istruzioni dettagliate e i componenti selezionati per un modello economico. Vorrei presentarvi la mia idea per una macchina robot
Motore controllato da transistor con telecomando; Panoramica del circuito: 9 passaggi
Motore controllato da transistor con telecomando; Panoramica del circuito: questo circuito è un motore controllato da transistor con un telecomando. Il telecomando accende l'alimentazione. Il transistor accenderà il motore. Il codice del programma aumenterà la velocità del motore e poi diminuire la velocità del motore fino a zero
Sintesi vocale retrò. Parte: 12 IoT, Domotica: 12 passaggi (con immagini)
Sintesi vocale retrò. Parte: 12 IoT, automazione domestica: questo articolo è il dodicesimo di una serie sugli Instructables sull'automazione domestica che documentano come creare e integrare un dispositivo di sintesi vocale retrò IoT in un sistema di automazione domestica esistente, incluse tutte le funzionalità software necessarie per abilitare t
Motore drone ESP32 LoRa controllato: 10 passaggi
ESP32 LoRa Controlled Drone Engine: oggi discutiamo di motori per droni, spesso chiamati motori "brushless". Sono ampiamente utilizzati nell'aeromodellismo, principalmente nei droni, grazie alla loro potenza e all'elevata rotazione. Impareremo a controllare un motore brushless tramite ESC ed ESP32, eseguendo
Sintesi del suono analogico sul tuo computer: 10 passaggi (con immagini)
Sintesi del suono analogico sul tuo computer: come il suono di quei vecchi sintetizzatori analogici? Vuoi giocare con uno a tuo piacimento, a casa tua, per tutto il tempo che vuoi, GRATUITAMENTE? Qui è dove i tuoi sogni Moog più sfrenati diventano realtà. Puoi diventare un artista di registrazioni elettroniche o semplicemente