Inhoudsopgave:

MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip - Ajarnpa
MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip - Ajarnpa

Video: MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip - Ajarnpa

Video: MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip - Ajarnpa
Video: Waveboy Ensoniq EPS 16+ External Audio Time Dicer FX 2024, November
Anonim
MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip
MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip
MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip
MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip
MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip
MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip
MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip
MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip

Heb je ooit een slecht idee gehad dat je MOET veranderen in een miniproject? Nou, ik was aan het spelen met een schets die ik had gemaakt voor de Arduino Due, gericht op het maken van muziek met een AD9833 Direct Digital Synthesis (DDS) -module … en op een gegeven moment dacht ik "hé, misschien moet ik een stappenmotor/driver dit". En dat idee is precies wat leidde tot dit kleine breadboard-gebaseerde project.

In dit project is een code opgenomen voor het gebruik van MIDI-over-USB om een Arduino Due te besturen en om blokgolven te verzenden tussen een AD9833-module en de stepper-driver. Er zal ook een diagram en basisinstructies zijn om dit aan te sluiten op een Arduino Due.

Benodigdheden:

Wat heb je nodig voor dit project:

Arduino Due

OPMERKING: De code is geschreven voor de Due, maar zou ook moeten werken en/of aangepast zijn voor de Zero. Het maakt gebruik van Arduino's MIDIUSB-bibliotheek, waarvoor een native USB-poort vereist is.

Soldeerloze Breadboard + Jumpers

AD9833 Breakout-module

A4988 Stepper Driver (of vergelijkbaar)

NEMA 17 stappenmotor (of vergelijkbaar)

- 24V-voeding (let op, ik heb voor deze waarde van 24 Volt gekozen omdat deze groter was dan de nominale spanning van de stappenmotor. Uw implementatie kan anders zijn als u een grotere motor gebruikt)

Stap 1: Breadboarden

Breadboarden
Breadboarden

Het basisidee hierachter is dat de Direct Digital Synthesis IC een blokgolf zal genereren om de "stap" -pin van de stappenmotordriver aan te drijven. Deze stappenmotor zal dan de motor met de gespecificeerde hoorbare frequentie bewegen. De richting van de motor is enigszins willekeurig, zolang deze maar op de juiste frequentie stapt.

De benadering die ik bij breadboarding het liefst gebruik, is om eerst de stroompinnen en -aarden te gebruiken en dan alle andere, niet-stroomverbindingen te starten.

Grond:

- Sluit de AGND- en DGND-pinnen van de AD9833-module aan op de GND-rail op het breadboard.

- Verbind de twee GND-pinnen op de Stepper Driver met de GND-rail

- Breng dit over naar een van de GND-pinnen van de Arduino Due

3.3V vermogen:

- Sluit de VDD-pin van de Stepper Driver aan op de V+ Rail van het breadboard

- Sluit de VCC-pin van de AD9833-module aan op de V+ Rail van het breadboard

- Breng dit over naar de Arduino Due's 3.3V Pin

24V vermogen:

- Sluit de VMOT-pin aan op de 24V DC-voeding (afhankelijk van uw motorkeuze wilt u misschien een hogere of lagere voedingsrail gebruiken)

Module-naar-module verbinding:

- Sluit de OUT-pin van de AD9833-module aan op de STEP-pin van de motordriver

Stappenstuurprogramma-verbindingen:

- Sluit de stappenmotoraansluitingen aan op de 2B/2A/1A/1B-pinnen. Polariteit is niet zo belangrijk, zolang de driverfasen maar overeenkomen met die van de stappenmotor.

- Verbind de RESET- en SLEEP-pinnen met elkaar en breng deze naar de Arduino Due Pin 8.

- Sluit de DIR-pin aan op de 3.3V-rail

AD9833 Module-aansluitingen:

- Sluit SCLK aan op de SCK-pin van de Arduino Due. Merk op dat deze pin zich op de 6-pins mannelijke ICSP-header in de buurt van de microcontroller bevindt, niet op de normale externe vrouwelijke headers.

- Sluit de SDATA-pin aan op de MOSI-pin van de Due. Merk op dat deze pin zich op de 6-pins mannelijke ICSP-header in de buurt van de microcontroller bevindt, niet op de normale externe vrouwelijke headers.

- Sluit de FSYNC aan op de Arduino Due Pin 6 (dit is de Chip Select-pin voor dit project)

Nu het breadboard volledig is gemonteerd, is het tijd om naar de code te kijken!

Stap 2: Programmeren en MIDI-configuratie

Programmering en MIDI-configuratie
Programmering en MIDI-configuratie

De bijgevoegde.ino-schets neemt USB-MIDI-ingangen via de eigen USB-poort van de Arduino Due en gebruikt deze om de AD9833 aan te sturen. Deze chip heeft een DAC die draait op 25 MHz met 28 bits frequentieresolutie (totale overkill voor wat hier nodig is), en veel van de code hier configureert dat om een blokgolf uit te voeren en uit te voeren.

Let op: er zijn twee USB-poorten. De ene wordt gebruikt voor het programmeren van het bord en de andere wordt gebruikt voor MIDI-over-USB-communicatie

Merk op dat deze schets niet werkt zoals hij is op de Arduino Uno - dit project is specifiek in zijn behoefte aan de Native USB in de Arduino Due of soortgelijke apparaten

Aanpassingsopties:

- Er zijn 2 modi die kunnen worden ingesteld door een preprocessor-macrodefinitie. Als "#define STOPNOTES" intact wordt gelaten, stopt de stepper tussen de noten. Dit is niet altijd gewenst (bijvoorbeeld bij het spelen van snelle arpeggio's), dus om dit gedrag te veranderen, verwijdert of becommentarieert u dat #define-statement en de stepper zal continu draaien zodra het is gespeeld.

- Ik gebruik hierbij een goedkoop 2-octaaf MIDI-toetsenbord met een octaaf omhoog/omlaag-knop, maar als je die optie niet hebt, kun je de onderstaande frequentievertaling octaaf verschuiven door te vermenigvuldigen of te delen door machten van 2.

De vertaling van MIDI naar frequentie wordt gedaan met deze regel in de functie playNote:int f_out = (int)(27.5*pow(2, ((float)midiNote-33)/12));

- Ik gebruik mijn pc meestal voor interfaces via USB MIDI - u kunt dit doen met uw favoriete Digital Audio Workstation (DAW)-software. Als je er geen hebt, is het vrij eenvoudig om dit systeem in te stellen met LMMS - een gratis, open source platform. Als het eenmaal is geïnstalleerd en actief is, stelt u eenvoudig de Arduino Due in als het MIDI-uitvoerapparaat en als u een USB MIDI-toetsenbord gebruikt, stelt u dat in als invoer.

Stap 3: Testen en experimenteren

Tijd om je stappenmotor te spelen!

Zoals gezegd, het hele idee hierachter was een soort off-the-cuff-experiment, dus doe in ieder geval zelf wat experimenteren!

Aanbevolen: