Inhaltsverzeichnis:

MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip - Gunook
MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip - Gunook

Video: MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip - Gunook

Video: MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip - Gunook
Video: Motors, Magnets and Motion: Electronic Music Instruments from the Physical World | Loop 2024, November
Anonim
MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip
MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip
MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip
MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip
MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip
MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip
MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip
MIDI-gesteuerter Schrittmotor mit einem Direct Digital Synthesis (DDS)-Chip

Haben Sie jemals eine schlechte Idee, die Sie NUR in ein Miniprojekt verwandeln mussten? Nun, ich spielte mit einer Skizze, die ich für den Arduino Due gemacht hatte, um mit einem AD9833 Direct Digital Synthesis (DDS)-Modul Musik zu machen… Dies . Und genau diese Idee hat dieses kleine, auf Steckbrettern basierende Projekt ausgelöst.

In diesem Projekt enthalten ist Code für die Verwendung von MIDI-over-USB zur Steuerung eines Arduino Due und zum Senden von Rechteckwellen zwischen einem AD9833-Modul und dem Stepper-Treiber. Es wird auch ein Diagramm und eine grundlegende Anleitung zum Anschluss an einen Arduino Due geben.

Lieferungen:

Was Sie für dieses Projekt benötigen:

Arduino Due

HINWEIS: Der Code ist für den Due geschrieben, sollte aber auch für den Zero funktionieren bzw. angepasst werden. Es verwendet die MIDIUSB-Bibliothek von Arduino, die einen nativen USB-Anschluss erfordert.

Lötfreies Steckbrett + Jumper

AD9833 Breakout-Modul

A4988 Stepper-Treiber (oder ähnlich)

NEMA 17 Schrittmotor (oder ähnlich)

- 24-V-Netzteil (Hinweis, ich habe diesen Wert von 24 Volt gewählt, weil er größer als die Nennspannung des Schrittmotors war. Ihre Implementierung kann anders sein, wenn Sie einen größeren Motor verwenden)

Schritt 1: Breadboarding

Brotbacken
Brotbacken

Die Grundidee dahinter ist, dass der Direct Digital Synthesis IC eine Rechteckwelle erzeugt, um den "Step" -Pin des Schrittmotortreibers anzusteuern. Dieser Schritttreiber bewegt dann den Motor mit der angegebenen hörbaren Frequenz. Die Richtung des Motors ist etwas willkürlich, solange er mit der richtigen Frequenz läuft.

Der Ansatz, den ich beim Breadboarding bevorzuge, besteht darin, zuerst die Stromstifte und Masse zu betreiben und dann alle anderen, nicht stromführenden Verbindungen zu betreiben.

Boden:

- Verbinden Sie die AGND- und DGND-Pins des AD9833-Moduls mit der GND-Schiene auf dem Steckbrett.

- Verbinden Sie die beiden GND-Pins des Stepper-Treibers mit der GND-Schiene

- Bringen Sie dies zu einem der GND-Pins des Arduino Due

3,3 V Leistung:

- Verbinden Sie den VDD-Pin des Stepper-Treibers mit der V+-Schiene des Steckbretts

- Verbinden Sie den VCC-Pin des AD9833-Moduls mit der V+-Schiene des Steckbretts

- Bringen Sie dies zum 3,3-V-Pin des Arduino Due

24V Leistung:

- Verbinden Sie den VMOT-Pin mit der 24-V-DC-Stromversorgung (je nach Wahl des Motors möchten Sie möglicherweise eine höhere oder niedrigere Versorgungsschiene betreiben)

Modul-zu-Modul-Verbindung:

- Verbinden Sie den OUT-Pin des AD9833-Moduls mit dem STEP-Pin des Motortreibers

Anschlüsse des Stepper-Treibers:

- Verbinden Sie die Schrittmotoranschlüsse mit den 2B/2A/1A/1B Pins. Die Polarität ist nicht so wichtig, solange die Treiberphasen mit denen des Schrittmotors übereinstimmen.

- Verbinden Sie die RESET- und SLEEP-Pins miteinander und bringen Sie diese zum Arduino Due Pin 8.

- Verbinden Sie den DIR-Pin mit der 3.3V-Schiene

Anschlüsse des Moduls AD9833:

- Verbinden Sie SCLK mit dem SCK-Pin des Arduino Due. Beachten Sie, dass sich dieser Pin auf dem 6-poligen ICSP-Stecker in der Nähe des Mikrocontrollers befindet, nicht auf den normalen externen Buchsen.

- Verbinden Sie den SDATA-Pin mit dem MOSI-Pin des Due. Beachten Sie, dass sich dieser Pin auf dem 6-poligen ICSP-Stecker in der Nähe des Mikrocontrollers befindet, nicht auf den normalen externen Buchsen.

- Verbinden Sie den FSYNC mit dem Arduino Due Pin 6 (dies ist der Chip Select-Pin für dieses Projekt)

Jetzt, da das Steckbrett vollständig zusammengebaut ist, ist es an der Zeit, einen Blick auf den Code zu werfen!

Schritt 2: Programmierung und MIDI-Setup

Programmierung und MIDI-Setup
Programmierung und MIDI-Setup

Die beigefügte.ino-Skizze nimmt USB-MIDI-Eingänge über den nativen USB-Port des Arduino Due auf und verwendet sie zum Ansteuern des AD9833. Dieser Chip verfügt über einen DAC, der mit 25 MHz mit 28 Bit Frequenzauflösung läuft (totaler Overkill für das, was hier benötigt wird), und ein Großteil des Codes hier konfiguriert ihn so, dass er eine Rechteckwelle ausführt und ausgibt.

Hinweis: Es gibt zwei USB-Anschlüsse. Einer wird für die Programmierung des Boards verwendet und der andere wird für die MIDI-over-USB-Kommunikation verwendet

Beachten Sie, dass diese Skizze auf dem Arduino Uno nicht so funktioniert, wie es ist - dieses Projekt ist spezifisch in seiner Notwendigkeit für den nativen USB im Arduino Due oder ähnlichen Geräten

Anpassungsoptionen:

- Es gibt 2 Modi, die durch eine Präprozessor-Makrodefinition eingestellt werden können. Wenn "#define STOPNOTES" intakt gelassen wird, stoppt der Stepper zwischen den Noten. Dies ist nicht immer erwünscht (z. B. beim Spielen schneller Arpeggios). Um dieses Verhalten zu ändern, löschen oder kommentieren Sie einfach diese #define-Anweisung und der Stepper wird nach dem Abspielen kontinuierlich ausgeführt.

- Ich verwende ein billiges 2-Oktaven-MIDI-Keyboard mit einer Oktav-Auf/Ab-Taste.

Die MIDI-zu-Frequenz-Umsetzung erfolgt mit dieser Zeile in der playNote-Funktion:int f_out = (int)(27.5*pow(2, ((float)midiNote-33)/12));

- Ich neige dazu, meinen PC für die Schnittstelle über USB MIDI zu verwenden - Sie können dies von Ihrer bevorzugten Digital Audio Workstation (DAW)-Software aus tun. Wenn Sie keins haben, ist es ziemlich einfach, dieses System mit LMMS einzurichten - einer kostenlosen Open-Source-Plattform. Sobald es installiert und ausgeführt ist, stellen Sie einfach das Arduino Due als MIDI-Ausgabegerät ein, und wenn Sie ein USB-MIDI-Keyboard verwenden, stellen Sie es als Eingang ein.

Schritt 3: Testen und Experimentieren

Zeit, Ihren Schrittmotor zu spielen!

Wie gesagt, die ganze Idee dahinter war eine Art spontanes Experiment, also experimentiere auf jeden Fall selbst!

Empfohlen: