Inhoudsopgave:
Video: MIDI-gestuurde stappenmotor met een Direct Digital Synthesis (DDS)-chip - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
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
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
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:
Een stappenmotor besturen: 5 stappen
Een stappenmotor besturen: deze tutorial is zowel geldig als we de Arduino gebruiken als beide met het Drivemall-bord onder de link om de Drivemall te bouwen. Het voordeel van de voorkeur geven aan de Drivemall boven het klassieke Arduino-bord is dat de complexiteit van de verbindingen l
Bedien uw computer met een stappenmotor! 9 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Bedien je computer met een stappenmotor!: In een van mijn vorige Instructables heb ik je laten zien hoe je een stappenmotor kunt gebruiken als een roterende encoder. Laten we in deze Instructable leren hoe we het kunnen gebruiken om onze computer te besturen. Dus zonder verder oponthoud, laten we aan de slag gaan
Een stappenmotor en driver selecteren voor een Arduino geautomatiseerd schaduwschermproject: 12 stappen (met afbeeldingen)
Een stappenmotor en stuurprogramma selecteren voor een Arduino geautomatiseerd schaduwschermproject: in deze Instructable zal ik de stappen doorlopen die ik heb genomen om een stappenmotor en stuurprogramma te selecteren voor een prototype van een geautomatiseerd schaduwschermproject. De schaduwschermen zijn de populaire en goedkope Coolaroo-handgezwenkte modellen, en ik wilde t
Nummers afspelen met stappenmotor !! 11 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Speel nummers af met behulp van stappenmotor!!: Dit project gaat over het ontwerpen van een eenvoudige dynamische interface, die het mogelijk maakt om op twee verschillende manieren met een stappenmotor te communiceren. De eerste interface regelt de richting en snelheid van de stappenmotor door het gebruik van een eenvoudige GUI, die h
Een stappenmotor besturen met een potentiometer: 5 stappen
Hoe u een stappenmotor bestuurt met een potentiometer. In deze instructable laat ik u zien hoe u de positie van een stappenmotor kunt regelen met behulp van een potentiometer. Dus laten we beginnen