Electronique > DMX > Théorie > La norme DMX

Dernière mise à jour : 25/12/2011

Présentation

DMX = Digital MultipleX
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

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 :
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.

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 :
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

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.

controleur_dmx_001
Contrôleur 5 canaux avec 16F88

interface_dmx_003
Interface DMX 003 avec 18F45K22

pic_tuto_base_dmx_18f24j10_001a
Contrôleur 1 canal avec 18F24J10

Pour 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.