Innehållsförteckning:

MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS): 3 steg
MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS): 3 steg

Video: MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS): 3 steg

Video: MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS): 3 steg
Video: Полив газона | полив сада - заключение и оценка 2024, November
Anonim
MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS)
MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS)
MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS)
MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS)
MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS)
MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS)
MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS)
MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS)

Har du någonsin en dålig idé om att du BARA måste förvandlas till ett miniprojekt? Tja, jag lekte med en skiss jag hade gjort för Arduino Due för att göra musik med en AD9833 Direct Digital Synthesis (DDS) -modul … och någon gång tänkte jag "hej, kanske jag borde rigga en stegmotor/förare till detta". Och den idén är precis det som utlöste detta lilla brödbräda-baserade projekt.

Inkluderat i detta projekt kommer att finnas en kod för att använda MIDI-over-USB för att styra en Arduino Due och skicka kvadratiska vågor mellan en AD9833-modul och stegdrivrutinen. Det kommer också att finnas ett diagram och grundläggande instruktioner för att ansluta detta till en Arduino Due.

Tillbehör:

Vad du behöver för detta projekt:

Arduino Due

OBS: Koden är skriven för Due, men den bör också fungera och/eller anpassas för nollan. Den använder Arduinos MIDIUSB -bibliotek, som kräver en inbyggd USB -port.

Lödlös brödbräda + hoppare

AD9833 Breakout -modul

A4988 Stepper Driver (eller liknande)

NEMA 17 Stepmotor (eller liknande)

- 24V nätaggregat (notera, jag valde detta värde på 24 volt eftersom det var större än den nominella stegmotorspänningen. Din implementering kan vara annorlunda om du använder en större motor)

Steg 1: Breadboarding

Breadboarding
Breadboarding

Grundtanken bakom detta är att Direct Digital Synthesis IC kommer att generera en fyrkantig våg för att driva stegmotorns drivrutins "steg" -stift. Denna stegmotor kommer sedan att flytta motorn med den angivna hörbara frekvensen. Motorns riktning är något godtycklig så länge den går med rätt frekvens.

Det tillvägagångssätt jag föredrar att ta med breadboarding är att köra strömstiften och marken först och sedan börja köra alla andra, icke-strömanslutningar.

Jord:

- Anslut AGND- och DGND -stiften på AD9833 -modulen till GND -skenan på brödbrädet.

- Anslut de två GND -stiften på stegdrivrutinen till GND -skenan

- Ta med detta till en av Arduino Due's GND -stift

3.3V effekt:

- Anslut stegdrivarens VDD -stift till brädbrädans V+ -skena

- Anslut VCC -stiftet på AD9833 -modulen till panelen V+ -skena

- Ta med det här till Arduino Due 3.3V Pin

24V effekt:

- Anslut VMOT -stiftet till 24V DC -nätaggregatet (beroende på ditt motorval kanske du vill köra en högre eller lägre matningsskena)

Modul-till-modul-anslutning:

- Anslut OUT -stiftet från AD9833 -modulen till STEP -stiftet på motordrivrutinen

Stepper Driver -anslutningar:

- Anslut stegmotoranslutningarna till 2B/2A/1A/1B -stiften. Polaritet är inte så viktigt, så länge förarens faser matchar stegmotorns.

- Anslut RESET- och SLEEP -stiften tillsammans och för dem över till Arduino Due Pin 8.

- Anslut DIR -stiftet till 3.3V -skenan

AD9833 modulanslutningar:

- Anslut SCLK till Arduino Due's SCK -stift. Observera att denna stift finns på det 6-poliga ICSP-huvudet för män nära mikrokontrollen, inte på de normala externa kvinnliga rubrikerna.

- Anslut SDATA -stiftet till Due's MOSI -stift. Observera att denna stift finns på det 6-poliga manliga ICSP-huvudet nära mikrokontrollen, inte på de normala externa kvinnliga rubrikerna.

- Anslut FSYNC till Arduino Due Pin 6 (detta är Chip Select pin för detta projekt)

Nu när brödbrädan är helt monterad är det dags att ta en titt på koden!

Steg 2: Programmering och MIDI -inställning

Programmering och MIDI -inställning
Programmering och MIDI -inställning

Den bifogade.ino-skissen tar USB-MIDI-ingångar via Arduino Due's Native USB-port och använder dem för att driva AD9833. Detta chip har en DAC som körs med 25 MHz med 28 bitars frekvensupplösning (total överkill för vad som behövs här), och mycket av koden här konfigurerar det för att köra och mata ut en fyrkantvåg.

Obs! Det finns två USB -portar. Den ena används för att programmera kortet, och den andra kommer att användas för MIDI-över-USB-kommando

Observera att denna skiss inte fungerar som den är på Arduino Uno - detta projekt är specifikt i behovet av Native USB i Arduino Due eller liknande enheter

Anpassningsalternativ:

- Det finns två lägen som kan ställas in med en förprocessorns makrodefinition. Om "#define STOPNOTES" lämnas intakt, stannar steget mellan noterna. Detta är inte alltid önskvärt (till exempel att spela snabba arpeggior), så för att ändra detta beteende, ta bara bort eller kommentera att #define -satsen och steget körs kontinuerligt när det spelas.

-Jag använder ett billigt 2-oktav MIDI-tangentbord med detta som har en oktav upp/ner-knapp, men om du inte har det alternativet kan du oktav-skifta nedanstående frekvensöversättning genom att multiplicera eller dividera med 2.

MIDI-till-frekvens-översättningen görs med denna rad i playNote-funktionen: int f_out = (int) (27,5*pow (2, ((float) midiNote-33)/12));

- Jag brukar använda min dator för gränssnitt över USB MIDI - du kan göra detta från din favorit Digital Audio Workstation (DAW) programvara. Om du inte har en är det ganska enkelt att konfigurera detta system med LMMS - en gratis plattform med öppen källkod. När det har installerats och körs, ställer du in Arduino Due som MIDI -utmatningsenhet, och om du använder ett USB MIDI -tangentbord anger du det som en ingång.

Steg 3: Testa och experimentera

Dags att spela din stegmotor!

Som sagt, hela idén bakom detta var ett slags off-the-cuff-experiment, så gör några experiment på egen hand!

Rekommenderad: