Dernière mise à jour :
06/08/2017
Présentation
Cette interface MIDI a été étudiée pour piloter un ou deux moteurs pas
à pas depuis un logiciel séquenceur MIDI.
L'interface permet :
- de piloter des moteurs pas à pas de type bipolaire (4 fils)
ou unipolaire (5 ou 6 fils)
- de sélectionner le mode de fonctionnement Demi-pas (Half) ou Normal
(Full)
- de faire tourner le moteur dans un sens ou l'autre, en mode pas
à pas (one-pulse)
- de faire tourner le moteur dans un sens ou l'autre,
de manière continue avec un nombre de pas prédéfinis (multi-pulses)
- de sélectionner une vitesse de rotation moteur parmi 3
valeurs, dans un sens ou
l'autre.
Les commandes de pilotage du moteur sont élaborées à partir de données
MIDI
classiques de type NoteOn et ControlChange.
Schéma
Le montage est élaboré autour d'un microcontrôleur
PIC 18F46K22 cadencé à 8 MHz par un quartz.
Coeur du système (schéma
partiel, reste du montage non diffusé)
Principe général
Les données MIDI reçues par l'interface sont traitées en temps réel, et
si elles correspondent à des données reconnues (attendues) elles sont
utilisées pour élaborer les signaux de commande
du moteur.
Données MIDI
"NoteOn" (événements NoteOff ignorés)
Le
Do3 (Do central) arrête le moteur. Les notes inférieures à Do3 font
tourner le moteur d'un certain nombre de pas dans le sens
"anti-horaire".
Les notes supérieures à Do3 font tourner le moteur d'un certain nombre
de pas dans le sens "horaire". Le nombre de pas dépend de la
hauteur de la note comme indiqué dans le tableau suivant, et le numéro
de
canal MIDI (
nn)
définit le moteur à commander.
Octave |
Do |
Ré |
Mi |
Fa |
Sol |
La |
Si |
0 |
- |
- |
-500 |
-400 |
-300 |
-200 |
-100 |
1 |
- |
- |
-50 |
-40 |
-30 |
-20 |
-10 |
2 |
- |
- |
-5 |
-4 |
-3 |
-2 |
-1 |
3 |
Arrêt |
+1 |
+2 |
+3 |
+4 |
+5 |
- |
4 |
- |
+10 |
+20 |
+30 |
+40 |
+50 |
- |
5 |
- |
+100 |
+200 |
+300 |
+400 |
+500 |
- |
Ces
commandes par notes permettent de piloter le moteur à la volée, en
temps réel via un clavier MIDI et sans passer par un
enregistrement dans le séquenceur. En
contrepartie, il faut envoyer plusieurs notes à la file pour obtenir un
nombre de pas différent de ceux proposés en fixe. Pour faire avancer
ou reculer le moteur d'un nombre de pas précis et en une seule
commande (par exemple 2346 pas), il faut envoyer un message de
type CC (Control Change) à l'interface.
Données MIDI
"ControlChange"
En utilisant les données ControlChange qui suivent, on peut
faire avancer ou reculer le moteur d'un nombre de pas fixe et
défini par l'utilisateur, ou
le faire tourner
en régime permanent (3 vitesses de rotation possibles). Le numéro de
canal
nn
inclus dans le premier octet du message $B
nn correspond au
numéro de moteur (0 pour moteur #1, 1 pour moteur #2, 2 pour moteur #3,
etc).
- CC 16 ($10) : sens de rotation, 0 = Sens A
"horaire", 127 = Sens B "anti-horaire"
- CC 17 ($11) : vitesse de rotation, 1 = Minimale,
64 = Médiane, 127 = Maximale
- CC 18 ($12) : mode de rotation, 0 = Full, 64 =
Half, 127 = Wave (mode Wave actuellement non implémenté)
- CC 19 ($13) : marche/arrêt, 0 = Arrêt, 127 = Marche en mode
permanent
- CC 98/99 ($62/$63): nombre de pas dans le sens A "horaire",
valeur comprise entre 1 et 16383
- CC 100/101 ($64/$65) : nombre de pas dans le sens B
"anti-horaire", valeur comprise entre 1 et 16383
Remarques
- La notion de sens horaire (A) ou anti-horaire (B) dépend du
câblage des moteurs
- La réception du CC 99 valide la valeur spécifiée par les
deux CC 98 et 99 et démarre la rotation du moteur dans le sens A
"horaire". Il faut donc toujours envoyer les deux CC 98 (LSB) et 99
(MSB) pour spécifier un nombre de pas dans le sens A "horaire". La
réception du CC 101 valide la valeur spécifiée par les deux CC
100 et 101 et démarre la rotation du moteur dans le sens B
"anti-horaire". Il faut donc toujours envoyer les deux CC 100 (LSB) et
101 (MSB) pour spécifier un nombre de pas dans le sens B "anti-horaire".
- La commande Arrêt moteur
(CC 19 = 0) est valable pour un moteur tournant en
régime permanent ou avec nombre de pas défini
(CC 98/99/100/101). Dans le second cas, le nombre éventuel de
pas restants (non accomplis) est perdu.
Exemples
- moteur #1, sens "horaire", vitesse médiane, mode Full,
régime permanent (une commande Stop sera nécessaire) :
[$B0][$10][$00]
[$B0][$11][$40]
[$B0][$12][$00]
- moteur #2, sens "anti-horaire", vitesse min, mode Half,
déplacement de 127 pas :
[$B1][$10][$7F]
[$B1][$11][$01]
[$B1][$12][$40]
[$B1][$64][$7F] [$B1][$65][$00]
- arrêt des deux moteurs #1 et #2 :
[$B0][$13][$00]
[$B1][$13][$00]
La vitesse de rotation peut éventuellement être modifiée en
cours
de route (rapide au début, puis ralentissement en fin de parcours)..
Commande des moteurs pas-à-pas
Le
logiciel a été écrit pour piloter des drivers moteur spécifiques
(dédiés). Les données de commande
délivrées par le PIC correspondent donc aux signaux de pilotage des
deux drivers. Le temps qui sépare deux pas de
commande moteur, varie
en fonction des données de configuration MIDI reçues. Si le nombre de
tours
par minute d'un moteur pas-à-pas dépend de l'intervalle de temps écoulé
entre chaque
pas, il dépend aussi de son nombre de pas par tour. La
vitesse effective de rotation des moteurs dépend donc avant tout du
modèle utilisé
: à réglages MIDI identiques, un moteur 16 pas tournera 8 fois plus
vite qu'un moteur 128 pas.
Alimentation
La source d'alimentation principale est de 12 V
(valeur réclamée par les moteurs utilisés ici) et doit être capable de
débiter un courant de 3 A.
Un
régulateur de tension de +5 V est prévu directement sur le circuit pour
abaisser la tension de 12 V et alimenter le PIC (avec filtrage sérieux,
ça va de soi).
Entrée et sortie MIDI
La sortie MIDI délivre une note à la
mise sous tension (Do3, durée 100 ms) et permet de s'assurer que
l'interface démarre bien.
En temps normal, cette sortie n'est pas exploitée.
Brochage des prises MIDI
Le câblage proposé ci-après est
valable pour les prises MIDI IN (entrée), MIDI OUT et MIDI THRU
(sorties).
La
borne 2 est reliée à la masse au niveau des sorties
mais pas au
niveau des entrées, pour éviter toute boucle de masse entre équipements.
Logiciel du PIC (version allégée LE)
LE - Demande pro, logiciel complet non disponible sur ce site. La version LE
disponible ici ne permet que la mise en route et l'arrêt du moteur,
dans un sens ou dans l'autre et à vitesse constante, pour le
moteur #1
seul.
Interface
MIDI 026 LE - PIC 18F46K22 - 06/08/2017
Circuit imprimé
Non réalisé par mes soins.
Historique
06/08/2017
- Première mise à disposition.