Dernière mise à jour :
25/12/2011
Présentation
DMX =
Digital
Multiple
X
Tout comme pour le MIDI, il existe à gauche et à droite des tas
d'informations
concernant la norme DMX, et encore une fois je n'ai pas pas la
prétention d'en
ajouter des masses. Disons que cette page est ma petite contribution en français ;-)
Comme vous le constaterez, mon texte
n'est pas exhaustif mais devrait suffire pour démarrer d'un
bon pied. Si l'aventure du DMX côté bricolage vous intéresse, sachez
que vous ne devez pas vous en priver, car il s'agit d'un système assez
facile à mettre en oeuvre (il faut certes quelques connaissances en
électronique), pas cher et relativement robuste.
Brochage des prises DMX
Les connecteurs utilisés pour les liaisons DMX sont de simples XLR
trois broches telles celles utilisées pour les liaisons audio
professionnelles ou des XLR cinq broches, un peu moins répendues dans
le domaine audio. La spécification précise qu'il
faut utiliser un câble blindé à deux paires de conducteurs
quand on utilise des prises XLR 5 points, la seconde paire est
optionnelle quand on utilise des prises XLR 3 points.
Broche XLR |
Fonction |
Remarque |
1 |
Référence (masse) |
- |
2 |
Data 1- |
- |
3 |
Data 1+ |
- |
4 |
Data 2- |
Non utilisé sur XLR 3 points |
5 |
Data 2+ |
Non utilisé sur XLR 3 points |
Remarques
- En toute rigueur, la norme indique qu'il faut une prise 5 points, mais
comme une XLR 5 points coûte plus cher qu'une XLR 3 points (car cette
dernière est plus répendue), la plupart des constructeurs ne s'embêtent
pas...
- A la différence des liaisons audio, la ligne
"positive / chaude"
(Data 1+) est connectée sur la broche 3 et non sur la broche 2 de la
XLR.
- La broche de masse (pin 1 de la XLR) doit être raccordée
des deux côtés de la liaison (dans le cas de liaisons BF avec interface
sur transformateur, cela n'est pas obligatoire).
- Certains
contrôleurs DMX disposent d'un connecteur femelle 5 points pour mettre
à disposition deux univers DMX (réseaux 512 canaux). La notion
d'univers DMX sera vue plus loin.
- L'émetteur possède une prise femelle et les
récepteurs possèdent une prise mâle.
- Les
broches 4 et 5 de la XLR 5 points (Data 2- et Data 2+) étaient prévues
à l'origine pour disposer d'une liaison de retour (équipement DMX
contrôlé vers contrôleur DMX). Petite exception donc en ce qui concerne
la notion "femelle pour émetteur et mâle pour récepteur".
- Le câble utilisé pour constituer un réseau DMX doit posséder une impédance caractéristique de 110 ohms (idem câble pour signal audionumérique AES).
- Un
réseau DMX doit se terminer sur une impédance fixe (en pratique une
simple résistance) qui se trouve soit dans le dernier equipement de la
chaîne, soit ajoutée sous forme de "bouchon" ou "terminaison" (valeur
typique 120 ohms). Bien que dans certains cas l'absence de cette
terminaison ne soit pas synonyme de malfonctionnement, sa présence est
très vivement conseillée (si ce n'est obligatoire) surtout si les
longueurs de câble sont grandes et si le nombre d'appareils reliés sur
le même réseau est grand. Il n'y a rien de plus facile que de réaliser
ce genre de terminaison : il suffit de se procurer une prise XLR mâle
et de câbler une résistance de 120 ohms / 0,5 W entre ses deux broches
2 et 3.
- Le nombre maximum d'équipements que l'on peut connecter
sur un même réseau DMX est supposé être de 32. Dans la pratique, ce
nombre dépend de la longueur et de la qualité des câbles, des
équipements utilisés et peut être revue à la baisse. La vitesse de
transmission des données est en effet assez élevée (nous verrons plus
loin qu'elle atteind 250 kbps) et l'usage de câble de qualité standard
à vite fait de réduire les possibilités théoriques. Il faut noter que
cette limitation à 32 équipements est d'ordre purement électrique,
puisque d'un point de vue informatique on dispose de 256 canaux. Pour
augmenter le nombre d'équipements sur un même réseau DMX et surpasser
cette limite de 32 appareils, on peut utiliser des répartiteurs (distributeurs, splitters) DMX.
- Il
existe des "booster" DMX, qui permettent de régénérer un signal DMX et
de permettre des liaisons de plus grande longueur. Attention, un
booster n'est pas un splitter (voir ci-après).
- Il existe des répartiteurs (distributeurs, splitters) de ligne DMX
disposant d'une entrée et de deux sorties ou plus. Les entrées et
sorties peuvent se faire en XLR 3 broches, en XLR 5 broches, parfois
les deux types de connecteurs sont disponibles en même temps. Ce type
d'appareil est obligatoirement actif (il comporte des composants
électroniques et ne repose pas sur une simple mise en parallèle des
câbles sur les prises) et nécessite une alimentation. Un répartiteur peut être utilisé en temps que booster.
- La
longueur maximale d'une liaison DMX est supposée être de 300 mètres. En
pratique, cela dépend beaucoup de l'électronique utilisée dans le
contrôleur DMX, de la qualité des câbles et du nombres d'équipements
câblés sur le réseau.
- Il
existe des adaptateurs XLR mâle 5 broches / XLR femelle 3 broches ainsi
ques des adaptateurs XLR femelle 5 broches / XLR mâle 3 broches.
Soit sous forme de bloc compact et court, soit sous forme de câble (50
cm à 1,5 m par exemple). Le prix d'un tel adaptateur peut varier de 2
euros environ pour un modèle d'entrée de gamme à 20 euros environ si la
connectique est de marque Neutrik (réputée pour sa robustesse).
- Il
existe des "merger" DMX au même titre qu'il existe des merger MIDI. Un
merger DMX permet de mélanger (combiner) de façon intelligente les
données issues de deux contrôleurs DMX et de mettre le tout à
disposition sur une seule sortie DMX, pour envoyer le tout sur un seul
réseau. Un tel équipement est basé sur l'emploi d'un microcontrôleur,
on ne peut pas assurer la fonction de "mélange" de signaux
informatiques avec deux résistances comme on peut le faire avec des
signaux audio analogiques...
Principe général des liaisons DMX
Une
liaison DMX est une liaison de type série : on y transmet
des
informations binaires - informatiques - sur deux fils selon le principe
d'une liaison "symétrique" en boucle de courant. Une telle liaison se
compose d'un seul émetteur et de un ou plusieurs récepteurs. D'un point
de vue électronique, et du fait que le PIC
travaille plutôt en logique TTL (0 V pour état logique bas et +5 V pour
état logique haut), il est nécessaire d'ajouter un composant
d'adaptation électrique qui assure l'interfaçage de TTL vers boucle de
courant et inversement. Un seul composant est nécessaire pour
travailler dans les deux sens émission et réception, vous avez le choix
entre plusieurs modèles de convertisseurs mais que diriez-vous d'un
MAX487
ou
d'un SN75179 ? Voilà pour l'aspect électrique. D'un point de
vue "logiciel", la liaison DMX permet de transmettre 512 valeurs
différentes, chacune étant véhiculée de façon séquentielle (les unes
après les autres) sur un canal distinct reconnu par son numéro.
L'appellation "DMX512" semble n'être pas née du hasard. A la
base, une liaison DMX est conçue pour piloter des gradateurs de lumière
(dimmer en anglais) avec une valeur de contrôle de niveau de luminosité
codée sur 8 bits et pouvant donc varier entre 0 et 255. La valeur zéro
correspond à un taux de luminosité nul (lampe éteinte), la valeur 127
correspond à un taux de luminosité de 50% et la valeur 255 correspond à
un taux de luminosité maximal (plein feux). Mais dans la pratique
courante les équipements de type "jeux de lumière" pilotés par une
interface DMX ne se cantonnent pas aux gradateurs de lumière. Il peut
tout aussi bien s'agir de stroboscopes, de scanners, de machines à
fumée, de lasers ou autres types de jeux de lumière. Dans
la majorité des cas, les récepteurs disposent d'un système de
configuration physique (micro-interrupteurs par exemple) qui permet de
spécifier le numéro de canal.
Petit rappel historique
Il fut une époque où le réglage du taux de luminosité des lampes sur
scène théâtre était assuré par un
auto-transformateur.
Ce type d'appareillage était lourd et encombrant, et surtout
nécessitait des câbles de forte section pour faire la liaison entre
variateur et lampe (il y avait des ampères à faire passer). Et il
fallait un couple variateur + câblage pour
chaque lampe. Par la suite sont apparus des systèmes plus
élaborés où la commande était déportée et où la section électronique de
puissance était disposée au plus proche des lampes commandées. Il n'y
avait plus besoin de gros câbles pour la commande mais cette dernière
qui se faisait avec une tension analogique (0 à 10 V) était assez
sujette aux parasites, et il fallait toujours un câble de commande pour
chaque lampe pilotée. L'arrivée du DMX a résolu pas mal de problèmes en
même temps :
- très bonne imunité aux parasites;
- meilleur contrôle sur la linéarité de réglage du taux de
luminosité, quelque soit le type de lampe utilisé;
- un seul cable de commande partant de la console de
pilotage, pour un maximum de 512 canaux individuels.
Le protocole DMX512 n'est pas si vieux que ça puisque sa validation eut
lieu en 1986. Il a permi à différents constructeurs de se mettre
d'accord sur une norme commune et de rendre ainsi
inter-opérants leurs appareils. Quatre ans plus
tard fut définie la norme évoluée DMX512-A, dont vous pouvez
vous procurer les spécifications techniques... à condition de sortir le
porte-monnaie.
Protocole d'envoi des données
Les données transitant sur une liaison DMX doivent répondre à un
protocole bien défini et assez strict, dont les grandes lignes
théoriques sont les suivantes.
- La vitesse de transmission normalisée d'une liaison DMX est
de 250 kbps (250 kilo-bauds), chaque bit constituant la trame de
données possède donc une largeur (durée) de 1 seconde divisée
par 250000, soit 4 us.
- Au repos - c'est à dire en absence de transmission de
données, la ligne de transmission DMX est à l'état logique haut.
- Une trame DMX est constituée d'un certain nombre de bits,
ces derniers constituant d'une part des informations indiquant
quand commence ou quand s'arrête la trame, et d'autre part les
valeurs à transmettre pour l'ensemble des canaux 1 à 256. Le détail des
bits constituant ces informations sera donné plus loin.
- Il n'est pas possible d'adresser directement un équipement
DMX avec un numéro de canal autre que 1 sans au préalable
avoir transmis les données du ou des canaux précédents. Par exemple si
on veut envoyer la valeur 78 à un gradateur de lumière positionné sur
le canal 12, la trame DMX doit contenir les valeurs des canaux 1 à 11
même si ces dernières ne sont pas exploitées (dans ce cas les valeurs
des canaux 1 à 11 peuvent être quelconques).
- Une trame DMX complète peut avoir une longueur de durée
variable. Les informations (valeurs) liées aux 512 canaux n'ont pas
besoin d'être transmises en totalité si toutes ne sont pas requises.
Par exemple, on peut vouloir n'envoyer des informations de valeurs que
pour les 45 premiers canaux (canaux 1 à 45) et ignorer les suivants
(canaux 46 à 512). Notez que cela ne concerne que les numéros de canaux
situés après le dernier dont on a besoin, les valeurs des canaux
précédents doivent impérativement être transmis.
- Une trame DMX débute par un signal appelé "Break",
électriquement matérialisé par le passage à l'état logique bas
de la ligne de transmission. Cet état bas doit durer au minimum 88 us
(durée équivalente à 22 bits), cette durée de 88 us est
équivalente à deux élements de base de la trame sans aucun bit Stop,
chaque élement de base durant 44 us (détails plus loin). En fait, la
norme indique que le signal Break devrait durer au moins 92 us et
qu'une valeur standard est de 176 us.
- A la suite du signal Break est transmis un signal appelé
"Mark After Break" (marque après coupure) qui consiste en un état logique haut de longueur
minimale 8
us (durée 2 bits) et de durée maximale 1 seconde. Le fait que
le signal Mark After Break ne peut durer plus de 1 seconde implique
que chaque trame DMX doit être envoyée au moins une fois par seconde.
- Après le signal Mark After Break est transmis un élement de
base appelé "Start Code" (démarrage) qui consiste en un message
similaire aux
élements indiquant la valeur de chaque canal, mais où les huit bits de
données sont positionnés à 0. Sa durée est de 44 us, tout comme la
durée des élements de base décrits ci-après. Ntons que si la valeur de
ce StartCode est de 0 pour une trame DMX standard, elle peut être autre
pour d'autres applications (par exemple $17 pour envoyer un message
texte ASCII).
- Un élement de base permet de transmettre la valeur d'un
canal et est construite selon le mode "1 bit Start (4 us) + 8 bits
Données (32 us) + 2 bits Stop (8 us)". Un bit Start est électriquement
matérialisé par le passage à l'état logique bas de la ligne de
transmission pendant une durée de 4 us, et il en est de même pour le
bit Stop. Chaque bit durant 4 us, un élement de base dure bien 44 us.
On peut trouver dans la trame DMX un nombre d'élements de base qui peut
varier entre 1 et 512 puisqu'il n'y a aucune obligation de transmettre
512 valeurs d'affilé. Mais rappelons que le premier élement de base
correspond toujours au canal #1, que le second élement de base
correspond toujours au canal #2, etc.
- La trame DMX est considérée comme arrivant à terme quand
l'état logique de la ligne de transmission retourne à l'état logique
haut et y reste pendant une certaine durée.
Si la trame DMX comporte la valeur d'un seul canal, alors sa durée
totale est de 88 us (break) + 8 us (MAB) + 44 us (SC) + 1 * 44
us (Data) = 184 us (sans compter le temps pendant lequel la
ligne repasse à l'état logique haut pour indiquer sa fin). Si la trame
DMX comporte la valeur des 512 canaux, alors sa durée
totale est de 88 us (break) + 8 us (MAB) + 44 us (SC) + 512 *
44
us (Data) = 22668 us. Sachant cela, on peut en déduire qu'il est
possible
d'envoyer jusqu'à 44 trames complètes (512 canaux) en une seconde.
Univers DMX
Une liaison DMX permet d'envoyer 512 informations (valeurs) différentes
via 512 canaux. Si on désire en envoyer plus, il faut disposer de
plusieurs liaisons DMX séparées. Ainsi la commande de 1024 valeurs
différentes est possible avec deux liaisons DMX distinctes (2 x 512
canaux). Les consoles DMX et les logiciels DMX qui accèptent de
travailler avec plus de 512 canaux travaillent sur le principe
d'univers (universes en anglais). Un univers permet de gérer 512
canaux. Quand plusieurs univers (plusieurs liaisons DMX) sont mises à
contribution, les numéros de canaux sont "décallés" à partir de la
seconde liaison, selon tableau suivant.
Univers / liaison DMX |
Canaux |
Univers 1 (liaison DMX #1) |
1..512 |
Univers 2 (liaison DMX #2) |
513..1024 |
Univers 3 (liaison DMX #3) |
1025..1536 |
Univers 4 (liaison DMX #4) |
1537..2048 |
Univers 5 (liaison DMX #5) |
2049..2560 |
Univers 6 (liaison DMX #6) |
2561..3072 |
Il n'existe pas réellement de limite au nombre de liaisons DMX
qu'on peut utiliser en même temps, mais reconnaissons que piloter 3000
éléments commence à faire... Dans un domaine amateur, les 512 canaux de
base sont généralement bien suffisants. Dans le monde professionnel il
en va différement, car on ne pense pas forcement "quantité" mais
"sécurité, souplesse d'installation et d'utilisation".
Utilisation d'un PIC pour délivrer des messages DMX
On peut lire des choses rigolotes sur le Net, qui peuvent parfois nous
embrouiller quelque peu l'esprit. D'un côté untel affirme qu'il est
impossible ou très difficile d'établir une liaison DMX avec un PIC
tournant à 20 MHz, et de l'autre on trouve des schémas de décodeurs
ou contrôleurs DMX basés sur un PIC 16F84 cadencé à 4 MHz !
Pour ma part et dans l'état actuel de mes connaissances, il me semble
plus facile de produire des trames DMX que d'en décoder avec des
ressources processeur limitées.
UART matériel vs UART logiciel
Une chose est sûre, il est bien plus efficace
d'utiliser le module UART matériel d'un PIC plutôt que
d'essayer d'émuler de façon purement logicielle le protocole DMX (qui pour rappel travail avec un débit de 250 kbps). Ce
n'est pas impossible puisque plusieurs l'ont fait, mais les choses sont
bien plus souples à mettre en place quand on décharge le programme
principal de la notion critique de vitesse de transmission des données.
Laissons donc faire ces petits modules matériels (UART) qui finalement
ont été créés spécifiquement pour cette tâche. A partir de là,
l'écriture de programmes destinés à décoder ou générer des infos DMX
n'est pas si compliqué que ça. Il faut bien sûr avoir assimilé la
structure des trames, mais si vous avez lu ce qui précède vous vous
êtes rendu compte qu'il n'y avait vraiment rien de compliqué. D'un
point de vue pratique, la détection du signal Break peut se faire en
analysant les codes d'erreurs retournés par le module UART du PIC. Ce
dernier indique en effet une erreur de transmission (FERR) quand
plusieurs bits de données sont réceptionnés sans être suivi des bits
Stop, ce qui est justement le cas du signal Break. Comme ce signal
Break dure au moins 88 us (équivalent à deux éléments de
bases de 44 us), il suffit de compter les erreurs, on doit en avoir
deux d'affilé dans le cas présent.
Limitation du nombre de canaux pilotables
Si vous souhaitez pouvoir attribuer une valeur pour les 512 canaux
prévus dans la norme DMX512, le PIC doit disposer d'une quantité de
mémoire suffisante. Une valeur de 1 Ko est un minimum, si vous
choisissez un PIC disposant d'une taille mémoire inférieure vous ne
pourrez pas aussi facilement travailler avec 512 canaux (l'usage
d'une mémoire externe pose le problème de la vitesse de dialogue
avec elle). A première vue un PIC 16F628A peut suffire pour commencer à
travailler sérieusement sur du DMX, même si le 16F648A peut être
privilégié (deux fois plus de mémoire et à peine plus coûteux).
Souvenez-vous que s'il n'est pas nécessaire de transmettre la
valeur des 512 canaux, autant ne pas le faire car ainsi chaque trame
dure moins longtemps, ce qui permet un meilleur temps de réponse de la
part des équipements reliés sur le bus (la chaîne) DMX. Beaucoup de
projets amateur n'ont pas besoin d'utiliser les 512 canaux.
Choix du PIC
Hormis l'aspect UART matériel qui doit être implémenté dans le PIC et
l'aspect quantité de mémoire, on peut se poser la question de savoir
quelle famille de PIC est conseillée. Microchip (le fabricant
des PIC) conseille l'usage d'un PIC de la famille 18Fxxx, par exemple
le 18F24J10. C'est en tout cas ce modèle qui est suggéré dans la
note
d'application AN1076
du même fabricant. Mais rien ne vous
empêche d'utiliser un PIC de la famille 16Fxxx, comme l'ont fait des
dizaines de bricoleurs très content de leurs résultats. Pour l'heure,
j'ai réalisé des interfaces et contrôleurs DMX avec un 16F628A, un
16F88, un 18F2420, un 18F45K22, un PIC 24F et un PIC 32MX. Hum... juste
entre parenthèses : à l'écriture de ces lignes (décembre 2011), on trouve le 18F24J10 à
1,70 euro et le 18F45K22 à 3,50 euros. Je dis
ça comme ça...
Structure générale du code logiciel pour émission de trames
DMX
Si vous avez bien assimilé comment était constituée une trame
DMX, alors vous comprendrez sans problème que le logiciel de création
de trames peut se contenter de répéter en boucle les quatres
instructions suivantes :
- DMX_Tx_MBB : repos pendant 100 us, état logique
bas (0) au niveau logiciel,
ligne à l'état logique haut (1) au niveau matériel.
- DMX_Tx_Break : break pendant 100 us, état logique
haut (1) au niveau logiciel,
ligne à l'état logique bas (0) au niveau matériel.
- DMX_Tx_MAB : pendant une durée arbitraire de 100 us (valeur
requise entre 8 et 1000 us), état logique bas (0) au niveau logiciel,
ligne à l'état logique haut (1) au niveau matériel.
- DMX_Tx_SC : valeur égale à 0 pour une application DMX standard.
- DMX_Tx_Data : envoi de la valeur de chaque canal, avec
intervalle de temps arbitraire de 50 us entre chaque octet.
MBB = Mark Before Break, période de repos
Break = comme son nom l'indique...
MAB = Mark After Break
SC = StartCode
Data = valeur de l'ensemble des canaux
Remarques
- Le fait d'utiliser des durées arbitraires de 50 us et 100 us permet
de rester dans les contraintes de la norme et simplifie l'usage du
Timer0 du PIC réglé pour une période d'interruption de 50 us.
- Le
fait de devoir envoyer deux bits Stop et non un seul impose d'utiliser
le module UART du PIC en mode "9 bits" et non en mode "8 bits". Le bit
N°9 de donnée représente alors le premier bit Stop et est toujours
positionné à 1.
- Oh je ne vous l'avais pas encore dit ? Un état logique bas
(0) au
niveau logiciel se traduit par un état logique haut (1) au niveau
matériel. Bien plus simple pour s'y retrouver !!!
Exemples pratiques ?
On trouve pas mal de choses sur le
net, mais si on obtient facilement des fichiers binaires compilés, il
n'en est pas vraiment de même pour les codes sources. Aussi ai-je pensé
qu'il pourrait être intéressant de mettre en ligne un petit exemple avec PIC 16F88 et PIC 18F24J10.
Contrôleur 5 canaux avec 16F88Interface DMX 003 avec 18F45K22Contrôleur 1 canal avec 18F24J10Pour
vérifier le bon fonctionnement de mes
contrôleurs et interfaces DMX,
je me suis
offert (au tout début) un petit projecteur PAR36 LED et un petit
contrôleur 6 canaux de base. Par la suite, j'ai fabriqué mes propres
contrôleurs pour tester mes circuits.
Interfaces électriques RS485
Une
liaison DMX s'appuie sur du RS485, liaison de type différentielle. Les
modules UART des microcontrôleurs (uC) offrent un accès en entrée (Rx)
et en sortie (Tx) via une seule ligne (une seule broche), c'est à dire
que nous sommes en mode asymétrique (non symétrique/différentiel).
L'adaptation d'un uC sur une ligne DMX/RS485 requiert donc l'usage d'un
composants spécifique, qui fait la transformation
asymétrique/symétrique (pour l'émission de données) ou la
transformation symétrique/asymétrique (pour la réception de
données). Pour les projets amateurs alimentés sous 5 V,
un circuit intégré de type MAX485, MAX481, MAX483,
MAX487
ou SN75176BP conviennent. Si l'uC est alimenté sous 3,3 V, un CI
adapté doit être choisi, par exemple le MAX3072. Tous ces circuits
(très simples d'emploi) présentent l'inconvénient de n'offrir aucune
isolation électrique entre l'uC et la ligne DMX. Pour un projet pro, l'utilisation d'un circuit tel que le MAX1480
(isolation galvanique totale entre entrée et sortie) peut être
conseillé. Son prix toutefois est de nature à rebuter les amateurs, et
cela se comprend.