Innholdsfortegnelse:

MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke: 3 trinn
MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke: 3 trinn

Video: MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke: 3 trinn

Video: MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke: 3 trinn
Video: MIDI Thru на макетной плате, MIDI в CV, аналоговый модульный синтезатор, Graphite 49 MIDI Controller 2024, Desember
Anonim
MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke
MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke
MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke
MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke
MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke
MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke
MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke
MIDI-kontrollert trinnmotor med direkte digital syntese (DDS) brikke

Har du noen gang hatt en dårlig idé om at du BARE måtte bli til et miniprosjekt? Vel, jeg lekte med en skisse jeg hadde laget for Arduino Due med sikte på å lage musikk med en AD9833 Direct Digital Synthesis (DDS) -modul … og på et tidspunkt tenkte jeg "hei, kanskje jeg burde rigge en steppermotor/driver til dette". Og den ideen er nettopp det som utløste dette lille brødbrettbaserte prosjektet.

Inkludert i dette prosjektet vil være noen kode for bruk av MIDI-over-USB for å kontrollere en Arduino Due og sende firkantbølger mellom en AD9833-modul og trinndriveren. Det vil også være et diagram og grunnleggende instruksjoner for å koble dette til en Arduino Due.

Rekvisita:

Dette trenger du for dette prosjektet:

Arduino Due

MERK: Koden er skrevet for forfall, men den bør også fungere og/eller tilpasses for null. Den bruker Arduinos MIDIUSB -bibliotek, som krever en innebygd USB -port.

Loddefritt brødbrett + hoppere

AD9833 Breakout -modul

A4988 Stepper Driver (eller lignende)

NEMA 17 trinnmotor (eller lignende)

- 24V strømforsyning (merk at jeg valgte denne verdien på 24 volt fordi den var større enn den nominelle trinnmotorspenningen. Implementeringen din kan være annerledes hvis du bruker en større motor)

Trinn 1: Breadboarding

Breadboarding
Breadboarding

Den grunnleggende ideen bak dette er at Direct Digital Synthesis IC vil generere en firkantbølge for å drive trinnmotordriverens "trinn" -nål. Denne stepperdriveren vil deretter bevege motoren med den angitte hørbare frekvensen. Retningen til motoren er noe vilkårlig så lenge den går med riktig frekvens.

Tilnærmingen jeg foretrekker å ta med breadboarding er å kjøre strømnålene og bakken først og deretter begynne å kjøre alle de andre, ikke-strømtilkoblingene.

Bakke:

- Koble AGND- og DGND -pinnene på AD9833 -modulen til GND -skinnen på brødbrettet.

- Koble de to GND -pinnene på stepperdriveren til GND -skinnen

- Ta med dette til en av Arduino Due's GND Pins

3.3V Strøm:

- Koble VDD -pinnen til trinndriveren til brødbrettets V+ skinne

- Koble VCC -pinnen til AD9833 -modulen til brødbrettets V+ skinne

- Ta dette med til Arduino Due's 3.3V Pin

24V strøm:

- Koble VMOT -pinnen til 24V DC strømforsyning (avhengig av motorvalg, kan det være lurt å kjøre en høyere eller lavere forsyningsskinne)

Modul-til-modul-tilkobling:

- Koble OUT -pinnen fra AD9833 -modulen til STEP -pinnen på motordriveren

Stepper Driver -tilkoblinger:

- Koble trinnmotorforbindelsene til 2B/2A/1A/1B -pinnene. Polaritet er ikke så viktig, så lenge driverfasene stemmer overens med trinnene i trinnmotoren.

- Koble RESET- og SLEEP -pinnene sammen, og ta dem med til Arduino Due Pin 8.

- Koble DIR -pinnen til 3.3V -skinnen

AD9833 modultilkoblinger:

- Koble SCLK til Arduino Due's SCK -pinne. Vær oppmerksom på at denne pinnen er på den 6-pinners ICSP-hodet i nærheten av mikrokontrolleren, ikke på de vanlige eksterne kvinnelige hodene.

- Koble SDATA -pinnen til Due's MOSI -pinne. Vær oppmerksom på at denne pinnen er på den 6-pinners ICSP-hodet i nærheten av mikrokontrolleren, ikke på de vanlige eksterne kvinnelige hodene.

- Koble FSYNC til Arduino Due Pin 6 (dette er Chip Select pin for dette prosjektet)

Nå som brødbrettet er ferdig montert, er det på tide å ta en titt på koden!

Trinn 2: Programmering og MIDI -oppsett

Programmering og MIDI -oppsett
Programmering og MIDI -oppsett

Den vedlagte.ino-skissen vil ta USB-MIDI-innganger gjennom Arduino Due's native USB-port, og vil bruke dem til å kjøre AD9833. Denne brikken har en DAC som kjører på 25 MHz med 28 bits med frekvensoppløsning (total overkill for det som trengs her), og mye av koden her konfigurerer den til å kjøre og sende ut en firkantbølge.

Merk: det er to USB -porter. Den ene brukes til programmering av brettet, og den andre skal brukes til MIDI-over-USB-kommando

Vær oppmerksom på at denne skissen ikke fungerer som den er på Arduino Uno - dette prosjektet er spesifikt i behovet av Native USB i Arduino Due eller lignende enheter

Tilpasningsalternativer:

- Det er 2 moduser, som kan angis med en forhåndsbehandlingsmakrodefinisjon. Hvis "#define STOPNOTES" er intakt, stopper trinnet mellom notene. Dette er ikke alltid ønsket (for eksempel å spille raske arpeggioer), så for å endre denne oppførselen, bare slett eller kommenter at #define -setningen og stepperen vil kjøre kontinuerlig når den er spilt.

-Jeg bruker et billig 2-oktav MIDI-tastatur med dette som har en oktav opp/ned-knapp, men hvis du ikke har det alternativet, kan du oktavskifte frekvensoversettelsen nedenfor ved å multiplisere eller dividere med 2.

MIDI-til-frekvens-oversettelsen utføres med denne linjen i playNote-funksjonen: int f_out = (int) (27,5*pow (2, ((float) midiNote-33)/12));

- Jeg pleier å bruke min PC for grensesnitt over USB MIDI - du kan gjøre dette fra din favoritt Digital Audio Workstation (DAW) programvare. Hvis du ikke har en, er det ganske enkelt å sette opp dette systemet ved hjelp av LMMS - en gratis, åpen kildekode -plattform. Når den er installert og kjører, setter du bare Arduino Due som MIDI -utgangsenhet, og hvis du bruker et USB MIDI -tastatur, angir du det som en inngang.

Trinn 3: Testing og eksperimentering

På tide å spille steppermotoren din!

Som sagt, hele ideen bak dette var et slags off-the-cuff-eksperiment, så gjør for all del noen eksperimenter!

Anbefalt: