Innehållsförteckning:
Video: MIDI-styrd stegmotor med ett direkt digitalt synteschip (DDS): 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:36
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
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
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:
Stegmotorstyrd stegmotor - Stegmotor som roterande kodare: 11 steg (med bilder)
Stegmotorstyrd stegmotor | Stegmotor som roterande kodare: Har ett par stegmotorer liggande och vill göra något? I denna instruerbara, låt oss använda en stegmotor som en roterande kodare för att styra en annan stegmotors position med en Arduino -mikrokontroller. Så utan vidare, låt oss ge
Generativ design - Utveckling av ett digitalt Bonsai -träd: 15 steg (med bilder)
Generativ design - Utveckling av ett digitalt Bonsai -träd: Jag började arbeta med forskargruppen på Autodesk med Dreamcatcher för ungefär 2 år sedan. Vid den tiden använde jag den för att designa rymdfarkoster. Sedan dess har jag lärt mig att älska det här mjukvaruverktyget eftersom det tillåter mig att utforska tusentals mönster, en
Välja en stegmotor och drivrutin för ett Arduino Automated Shade Screen Project: 12 steg (med bilder)
Välja en stegmotor och drivrutin för ett Arduino Automated Shade Screen Project: I denna instruktionsbok kommer jag att gå igenom stegen som jag tog för att välja en Step Motor och Driver för ett prototyp Automated Shade Screen -projekt. Skärmskärmarna är de populära och billiga Coolaroo handvävda modellerna, och jag ville byta ut
Hur man hackar och uppgraderar ett Rigol DS1054Z digitalt oscilloskop: 5 steg (med bilder)
Hur man hackar och uppgraderar ett Rigol DS1054Z digitalt oscilloskop: Rigol DS1054Z är ett mycket populärt 4-kanals digitalt lagringsoscilloskop på ingångsnivå. Den har en samplingshastighet i realtid på upp till 1 GSa/s och en bandbredd på 50 MHz. De särskilt stora TFT -färgskärmarna är mycket lättlästa. Tack vare en i
Hur man gör ett digitalt stoppur med 555: 3 steg
Hur man gör digitalt stoppur med 555: Jag har gjort ett enkelt stoppur med 3 sju segment LED -skärm, varav jag först visar 10: e delen av sekunder en annan för andra och tredje en för flera av 10 inn sekunder. Jag använde 555 timers i astabilt läge som ger signal per 1 sekund till