Table des matières:
- Étape 1: la planche à pain
- Étape 2: Programmation et configuration MIDI
- Étape 3: Tester et expérimenter
Vidéo: Moteur pas à pas contrôlé par MIDI avec une puce de synthèse numérique directe (DDS) : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Avez-vous déjà eu une mauvaise idée que vous deviez JUSTE transformer en un mini projet ? Eh bien, je jouais avec un croquis que j'avais fait pour l'Arduino Due visant à faire de la musique avec un module de synthèse numérique directe (DDS) AD9833… cette . Et cette idée est exactement ce qui a déclenché ce petit projet basé sur une maquette.
Ce projet comprendra du code pour utiliser MIDI-over-USB pour contrôler un Arduino Due et envoyer des ondes carrées entre un module AD9833 et le pilote pas à pas. Il y aura également un schéma et des instructions de base pour le connecter à un Arduino Due.
Fournitures:
Ce dont vous aurez besoin pour ce projet:
Arduino Due
REMARQUE: Le code est écrit pour le Due, mais il devrait également fonctionner et/ou être adapté pour le Zero. Il utilise la bibliothèque MIDIUSB d'Arduino, qui nécessite un port USB natif.
Planche à pain sans soudure + Cavaliers
Module de dérivation AD9833
Pilote pas à pas A4988 (ou similaire)
Moteur pas à pas NEMA 17 (ou similaire)
- Alimentation 24V (attention, j'ai choisi cette valeur de 24 Volts car elle était supérieure à la tension nominale du moteur pas à pas. Votre implémentation peut être différente si vous utilisez un moteur plus gros)
Étape 1: la planche à pain
L'idée de base derrière cela est que le circuit intégré de synthèse numérique directe générera une onde carrée pour entraîner la broche "pas" du pilote du moteur pas à pas. Ce pilote pas à pas déplacera ensuite le moteur à la fréquence audible spécifiée. La direction du moteur est quelque peu arbitraire tant qu'il marche à la bonne fréquence.
L'approche que je préfère adopter avec la maquette est d'exécuter d'abord les broches d'alimentation et les masses, puis de commencer à exécuter toutes les autres connexions non électriques.
Sol:
- Connectez les broches AGND et DGND du module AD9833 au rail GND de la maquette.
- Connectez les deux broches GND du pilote pas à pas au rail GND
- Apportez-le sur l'une des broches GND de l'Arduino Due
Puissance de 3,3 V:
- Connectez la broche VDD du pilote pas à pas au rail V + de la planche à pain
- Connectez la broche VCC du module AD9833 au rail V + de la planche à pain
- Apportez-le sur la broche 3,3 V de l'Arduino Due
Alimentation 24V:
- Connectez la broche VMOT à l'alimentation 24V DC (selon votre choix de moteur, vous voudrez peut-être utiliser un rail d'alimentation supérieur ou inférieur)
Connexion module à module:
- Connectez la broche OUT du module AD9833 à la broche STEP du pilote de moteur
Connexions du pilote pas à pas:
- Connectez les connexions du moteur pas à pas aux broches 2B/2A/1A/1B. La polarité n'est pas si importante, tant que les phases du pilote correspondent à celles du moteur pas à pas.
- Connectez les broches RESET et SLEEP ensemble, et apportez-les à la broche Arduino Due 8.
- Connectez la broche DIR au rail 3,3 V
Connexions du module AD9833:
- Connectez SCLK à la broche SCK de l'Arduino Due. Notez que cette broche se trouve sur l'embase ICSP mâle à 6 broches près du microcontrôleur, et non sur les embases femelles externes normales.
- Connectez la broche SDATA à la broche MOSI du Due. Notez que cette broche se trouve sur l'embase ICSP mâle à 6 broches près du microcontrôleur, et non sur les embases femelles externes normales.
- Connectez le FSYNC à l'Arduino Due Pin 6 (il s'agit de la broche Chip Select pour ce projet)
Maintenant que la maquette est entièrement assemblée, il est temps de jeter un œil au code !
Étape 2: Programmation et configuration MIDI
L'esquisse.ino ci-jointe prendra les entrées USB-MIDI via le port USB natif de l'Arduino Due et les utilisera pour piloter l'AD9833. Cette puce a un DAC qui fonctionne à 25 MHz avec une résolution de fréquence de 28 bits (surpuissance totale pour ce qui est nécessaire ici), et une grande partie du code ici configure cela pour exécuter et produire une onde carrée.
Remarque: il y a deux ports USB. L'un est utilisé pour programmer la carte, et l'autre va être utilisé pour la communication MIDI-over-USB
Notez que ce croquis ne fonctionnera pas tel quel sur l'Arduino Uno - ce projet est spécifique dans son besoin de l'USB natif dans l'Arduino Due ou des périphériques similaires
Options de personnalisation:
- Il existe 2 modes, qui peuvent être définis par une définition de macro de préprocesseur. Si "#define STOPNOTES" est laissé intact, le stepper s'arrêtera entre les notes. Ce n'est pas toujours souhaité (par exemple, jouer des arpèges rapides), donc pour changer ce comportement, supprimez ou commentez simplement cette instruction #define et le stepper fonctionnera en continu une fois joué.
- J'utilise un clavier MIDI à 2 octaves bon marché avec un bouton d'octave haut/bas, mais au cas où vous n'auriez pas cette option, vous pouvez décaler d'octave la traduction de fréquence ci-dessous en multipliant ou en divisant par des puissances de 2.
La traduction MIDI-fréquence se fait avec cette ligne dans la fonction playNote:int f_out = (int)(27.5*pow(2, ((float)midiNote-33)/12));
- J'ai tendance à utiliser mon PC pour l'interfaçage via USB MIDI - vous pouvez le faire à partir de votre logiciel de station de travail audio numérique (DAW) préféré. Si vous n'en avez pas, il est assez facile de configurer ce système à l'aide de LMMS - une plate-forme open source gratuite. Une fois qu'il est installé et en cours d'exécution, définissez simplement l'Arduino Due comme périphérique de sortie MIDI, et si vous utilisez un clavier MIDI USB, définissez-le comme entrée.
Étape 3: Tester et expérimenter
Il est temps de jouer avec votre moteur pas à pas !
Comme indiqué, toute l'idée derrière cela était une sorte d'expérience improvisée, alors, par tous les moyens, faites vos propres expériences !
Conseillé:
Ascenseur de moteur pas à pas contrôlé par IR : 15 étapes
Ascenseur à moteur pas à pas contrôlé par IR : j'avais besoin d'automatiser le levage d'une grande image qui cache un téléviseur monté au-dessus d'une cheminée. L'image est montée sur un cadre en acier coulissant personnalisé qui utilise des cordes, des poulies et des contrepoids afin qu'elle puisse être soulevée à la main. Cela semble bien en théorie, mais inc
Moteur pas à pas contrôlé par moteur pas à pas sans microcontrôleur ! : 6 étapes
Moteur pas à pas contrôlé par moteur pas à pas sans microcontrôleur ! : Dans ce rapide Instructable, nous allons faire un simple contrôleur de moteur pas à pas à l'aide d'un moteur pas à pas. Ce projet ne nécessite aucun circuit complexe ni microcontrôleur. Alors sans plus tarder, commençons
Moteur pas à pas contrôlé par moteur pas à pas sans microcontrôleur (V2) : 9 étapes (avec photos)
Moteur pas à pas contrôlé par moteur pas à pas sans microcontrôleur (V2) : Dans l'un de mes précédents Instructables, je vous ai montré comment contrôler un moteur pas à pas à l'aide d'un moteur pas à pas sans microcontrôleur. C'était un projet rapide et amusant, mais il est venu avec deux problèmes qui seront résolus dans ce Instructable. Alors, esprit
Locomotive modèle commandée par moteur pas à pas - Moteur pas à pas en tant qu'encodeur rotatif : 11 étapes (avec photos)
Locomotive modèle commandée par moteur pas à pas | Moteur pas à pas en tant qu'encodeur rotatif : Dans l'un des précédents Instructables, nous avons appris à utiliser un moteur pas à pas comme encodeur rotatif. Dans ce projet, nous allons maintenant utiliser cet encodeur rotatif à moteur pas à pas pour contrôler un modèle de locomotive à l'aide d'un microcontrôleur Arduino. Alors, sans fu
Moteur pas à pas contrôlé par moteur pas à pas - Moteur pas à pas en tant qu'encodeur rotatif : 11 étapes (avec photos)
Moteur pas à pas contrôlé par moteur pas à pas | Moteur pas à pas en tant qu'encodeur rotatif : Vous avez quelques moteurs pas à pas qui traînent et vous voulez faire quelque chose ? Dans ce Instructable, utilisons un moteur pas à pas comme encodeur rotatif pour contrôler la position d'un autre moteur pas à pas à l'aide d'un microcontrôleur Arduino. Alors sans plus tarder, allons-y