Indholdsfortegnelse:

MIDI-styret trinmotor med en chip til direkte digital syntese (DDS): 3 trin
MIDI-styret trinmotor med en chip til direkte digital syntese (DDS): 3 trin

Video: MIDI-styret trinmotor med en chip til direkte digital syntese (DDS): 3 trin

Video: MIDI-styret trinmotor med en chip til direkte digital syntese (DDS): 3 trin
Video: Power On: The Story of Xbox | Chapter 5: The Red Ring of Death 2024, November
Anonim
MIDI-styret trinmotor med en chip til direkte digital syntese (DDS)
MIDI-styret trinmotor med en chip til direkte digital syntese (DDS)
MIDI-styret trinmotor med en chip til direkte digital syntese (DDS)
MIDI-styret trinmotor med en chip til direkte digital syntese (DDS)
MIDI-styret trinmotor med en chip til direkte digital syntese (DDS)
MIDI-styret trinmotor med en chip til direkte digital syntese (DDS)
MIDI-styret trinmotor med en chip til direkte digital syntese (DDS)
MIDI-styret trinmotor med en chip til direkte digital syntese (DDS)

Har du nogensinde haft en dårlig idé om, at du BARE skulle blive til et mini -projekt? Nå, jeg legede med en sketch jeg havde lavet til Arduino Due med det formål at lave musik med et AD9833 Direct Digital Synthesis (DDS) modul … og på et tidspunkt tænkte jeg "hey, måske skulle jeg rigge en stepper motor/driver til det her". Og den idé er præcis det, der udløste dette lille breadboard-baserede projekt.

Inkluderet i dette projekt vil være en kode til brug af MIDI-over-USB til at styre en Arduino Due og sende firkantede bølger mellem et AD9833-modul og stepper-driveren. Der vil også være et diagram og grundlæggende instruktioner til tilslutning af dette til en Arduino Due.

Tilbehør:

Hvad skal du bruge til dette projekt:

Arduino Due

BEMÆRK: Koden er skrevet til Due, men den skal også fungere og/eller tilpasses til nul. Det anvender Arduinos MIDIUSB -bibliotek, som kræver en indbygget USB -port.

Loddefri brødbræt + Jumpers

AD9833 Breakout -modul

A4988 Stepper Driver (eller lignende)

NEMA 17 Stepmotor (eller lignende)

- 24V strømforsyning (bemærk, jeg valgte denne værdi på 24 volt, fordi den var større end den nominelle trinmotorspænding. Din implementering kan være anderledes, hvis du bruger en større motor)

Trin 1: Breadboarding

Breadboarding
Breadboarding

Den grundlæggende idé bag dette er, at Direct Digital Synthesis IC vil generere en firkantbølge til at drive trinmotorens driver "trin" -stift. Denne stepper driver vil derefter flytte motoren med den angivne hørbare frekvens. Motorens retning er noget vilkårlig, så længe den træder med den korrekte frekvens.

Den fremgangsmåde, jeg foretrækker at følge med breadboarding, er at køre strømstifterne og grunde først og derefter begynde at køre alle de andre, ikke-strømforbindelser.

Jord:

- Tilslut AGND- og DGND -benene på AD9833 -modulet til GND -skinnen på brødbrættet.

- Tilslut de to GND Pins på Stepper Driver til GND Rail

- Bring dette over til en af Arduino Due's GND Pins

3.3V strøm:

- Tilslut VDD Pin på Stepper Driver til breadboardets V+ Rail

- Tilslut VCC -stiften på AD9833 -modulet til brødbrættets V+ skinne

- Bring dette over til Arduino Due's 3.3V Pin

24V effekt:

- Tilslut VMOT -stiften til 24V DC -strømforsyningen (afhængigt af dit motorvalg, vil du måske køre en højere eller lavere forsyningsskinne)

Modul-til-modul-forbindelse:

- Tilslut OUT -stiften fra AD9833 -modulet til STEP -stiften på motordriveren

Stepper Driver -forbindelser:

- Tilslut trinmotorforbindelserne til 2B/2A/1A/1B benene. Polaritet er ikke så vigtigt, så længe førerfaserne matcher trinmotorens.

- Tilslut RESET- og SLEEP -benene sammen, og bring dem over til Arduino Due Pin 8.

- Tilslut DIR -stiften til 3.3V -skinnen

AD9833 -modulforbindelser:

- Tilslut SCLK til Arduino Due's SCK -pin. Bemærk, at denne pin er på det 6-benede ICSP-header til mænd nær mikrokontrolleren, ikke på de normale eksterne kvindelige headers.

- Tilslut SDATA -stiften til Due's MOSI -pin. Bemærk, at denne pin er på det 6-benede ICSP-header til mænd nær mikrokontrolleren, ikke på de normale eksterne kvindelige headers.

- Tilslut FSYNC til Arduino Due Pin 6 (dette er Chip Select pin til dette projekt)

Nu hvor brødbrættet er færdigmonteret, er det tid til at tage et kig på koden!

Trin 2: Programmering og MIDI -opsætning

Programmering og MIDI -opsætning
Programmering og MIDI -opsætning

Den vedhæftede.ino-skitse tager USB-MIDI-indgange gennem Arduino Due's native USB-port og bruger dem til at drive AD9833. Denne chip har en DAC, der kører ved 25 MHz med 28 bit frekvensopløsning (total overkill for det, der er nødvendigt her), og meget af koden her konfigurerer det til at køre og udsende en firkantbølge.

Bemærk: Der er to USB -porte. Den ene bruges til programmering af tavlen, og den anden bruges til MIDI-over-USB komm

Bemærk, at denne skitse ikke fungerer som den er på Arduino Uno - dette projekt er specifikt i forhold til dets behov for Native USB i Arduino Due eller lignende enheder

Tilpasningsmuligheder:

- Der er 2 tilstande, der kan indstilles ved en makrodefinition på en forprocessor. Hvis "#define STOPNOTES" efterlades intakt, stopper stepper mellem noterne. Dette er ikke altid ønsket (f.eks. Afspilning af hurtige arpeggioer), så for at ændre denne adfærd skal du blot slette eller kommentere, at #define -sætning og stepper kører kontinuerligt, når de er spillet.

-Jeg bruger et billigt 2-oktavs MIDI-tastatur med dette, der har en oktav op/ned-knap, men hvis du ikke har den mulighed, kan du oktavskifte nedenstående frekvensoversættelse ved at multiplicere eller dividere med 2.

MIDI-til-frekvens-oversættelsen udføres med denne linje i playNote-funktionen: int f_out = (int) (27,5*pow (2, ((float) midiNote-33)/12));

- Jeg plejer at bruge min pc til grænseflade over USB MIDI - du kan gøre dette fra din foretrukne Digital Audio Workstation (DAW) software. Hvis du ikke har en, er det ret let at konfigurere dette system ved hjælp af LMMS - en gratis open source -platform. Når det er installeret og kører, skal du blot indstille Arduino Due som MIDI -outputenhed, og hvis du bruger et USB MIDI -tastatur, skal du indstille det som en input.

Trin 3: Test og eksperimenter

Tid til at spille din stepper motor!

Som nævnt var hele ideen bag dette et slags off-the-cuff-eksperiment, så prøv på alle måder selv!

Anbefalede: