Electronique > Réalisations > Interfaces > DMX > Interface DMX 003

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

Présentation

Cette interface DMX dispose d'une entrée DMX (sur XLR) et de 12 sorties qui peuvent fonctionner en mode Logique (On/Off) ou en mode Gradateur (dimmer). 


interface_dmx_003_pcb_3d_front

Le montage fait appel à un microcontrôleur PIC 18F45K22 (moins de 4 euros), c'est un mélange de mon interface DMX 002 à 10 voies logiques et de mon gradateur de lumière 014 à 8 voies piloté par DMX. L'adresse de base DMX peut être ajustée entre 0 et 255.

Une interface identique mais dont l'adresse de base peut être étendue à 512 canaux est présentée à la page Interface DMX 003-ext.

   

Schéma

Voici le schéma complet de l'interface, sans son alimentation ni l'éventuelle interface de sortie de puissance.

interface_dmx_003
Schéma 003a avec PIC 18F45K22 (ou 18F46K22)
 
Le PIC 18F45K22 peut être remplacé par un 18F46K22, mais ce serait du luxe (les ressources supplémentaires n'apporteraient rien).
 
Fonctionnement général
L'interface dispose de 12 sorties qui fonctionnent en mode Logique (on/off) ou Gradateur (dimmer), selon la position du cavalier JP1.

L'état des sorties est dans tous les cas conditionné par la valeur véhiculée dans les canaux DMX. L'exemple qui suit montre ce qui se passe en mode Logique ou Gradateur, selon les valeurs transmises pour les 12 canaux DMX.
   

Sortie #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12
Canal DMX (1) A+0 A+1 A+2 A+3 A+4 A+5 A+6 A+7 A+8 A+9 A+10 A+11
Valeur DMX 0 15 127 128 250 34 100 64 255 200 15 250
Etat logique (2) 0 0 0 1 1 0 0 0 1 1 0 1
PWM en % (2) 0 6 50 50 98 13 39 25 100 78 6 98

Nota (1) : A = adresse de base DMX, par exemple A=56.
Nota (2) : Etat logique(on/off) ou signal PWM (dimmer), dépend de la postion du cavalier JP1.


En mode Logique (on/off), les sorties ne s'activent que si la valeur DMX correspondante est supérieure ou égale à 128. La suite de valeurs dans la trame DMX donnée ci-devant en exemple active donc seulement les sorties 4, 5, 9, 10 et 12.

En mode gradateur (dimmer), le rapport cyclique des sorties dépend des valeurs transmises, selon la formule suivante :
Rapport cyclique (en %) = (N * 100) / 255 
N étant la valeur transmise dans la trame DMX (N = 0 -> PWM = 0% ; N = 127 -> PWM = 50% ; N = 255 -> PWM = 100%).

   
Choix de l'adresse de base DMX

Le choix de l'adresse de base se fait par le biais des interrupteurs câblés sur les lignes RB0 à RB7 du PIC (groupe d'interrupteurs appelé DSW1). Si vous ne connaissez pas encore le mode binaire c'est le moment de s'y mettre. Attention, les pullup interne du PORTB sont activés, ce qui fait qu'à un interrupteur ouvert correspond une entrée à l'état haut. En fermant un interrupteur, l'entrée correspondante est reliée à la masse et se voit donc imposer un état bas. Dans le schéma, seul le premier interrupteur (relié à RA0) est ouvert, l'adresse est donc 1. Configuré de la sorte, le montage réagit aux données véhiculées dans les canaux DMX #1 à #12. Si l'adresse spécifiée avec les interrupteurs DSW1 est 14, alors le montage réagit aux données véhiculées dans les canaux DMX #14 à #25.

Important : si un connecteur ICSP est prévu pour la programmation du PIC "in situ", il faudra penser à ouvrir les deux interrupteurs situés sur les lignes PGC (A6_PGC) et PGD (A7_PGD). Sans cela, programmation du PIC impossible !

 
StartCode ou pas StartCode ?

Le StartCode est une information normalement émise au début de la trame DMX, juste avant la valeur du premier canal DMX. Dans une grande majorité des cas, ce StartCode est émis, mais certains contrôleurs DMX ne le transmettent pas. A cause de cela, on peut dans certains cas observer un décalage des valeurs attribuées aux sorties de mon interface DMX 003, la première sortie n'étant dans ce cas pas activée et la deuxième sortie prenant la valeur du canal DMX #2 (décalage des sorties de 1 unité par rapport aux données transmises). 

Pour contourner cet éventuel problème, l'interface DMX 003 dispose désormais d'une option "AddrMode" permettant de démarrer sur le premier ou sur le deuxième octet de donnée de la trame DMX. En temps normal, le premier octet utile de la trame DMX correspond au StartCode, on devrait donc le considérer comme tel et non comme la valeur du premier canal DMX. La valeur du premier canal DMX devrait normalement être contenue dans le deuxième octet utile de la trame DMX. La configuration de l'interface 003 s'effectue par la position du cavalier JP2/AddrMode qui applique un niveau logique bas ou haut sur l'entrée RA2 du PIC :

   

interface_dmx_003_proto_rm_002a  interface_dmx_003_proto_rm_002c interface_dmx_003_proto_rm_002b
   

Sur la photo du centre ci-devant, on constate que le fonctionnement normal (valeur canal DMX #1 répercutée sur la sortie #1) est obtenu avec le cavalier JP2/AddrMode en position logique 0 (RA2 = 0). Sur la photo de droite, on observe un décalage : la valeur du canal DMX #1 est répercutée sur la sortie #2. La raison en est que le cavalier JP2/AddrMode est en position logique 1 (RA2 = 1) et que le StartCode est interprété comme étant le premier canal DMX (de valeur égale à 0). Dans ces conditions, l'interface voit 7 canaux DMX et non 6.

Remarque : sur les photos précédentes, l'oeil aiguisé aura remarqué que les interrupteurs de sélection d'adresse sont en configuration inversée, la valeur qu'ils donnent dans cette position étant 254 et non 1 (seul le premier inter est en position ON, ligne A0 à 0 et toutes les autres à 1). Durant les tests de ce prototype, j'avais fixé l'adresse DMX à 1 dans le logiciel du PIC et la position des interrupteurs n'était pas lue. Bien sûr, ce n'est plus le cas dans le code livré, l'adresse utilisée est bien celle spécifiée par les micro-interrupteurs.

   

Interface bus DMX
Le circuit d'interface MAX487 travaille ici toujours dans le même sens, ses entrées de direction RE et DE (broches 2 et 3) sont soumise à un état bas pour passer en mode réception au moment opportun (à un moment bien précis lors de l'initialisation du PIC).

La résistance R2 de 120 ohms est montrée câblée sur le schéma mais en pratique il convient de la mettre en série avec un cavalier pour pouvoir la mettre hors service si besoin. On peut aussi ne pas la prévoir du tout et installer une seconde prise XLR reliée en parallèle sur J1 et sur laquelle on pourra enficher une terminaison (bouchon 120 ohms) ou un câble allant vers un autre appareil (récepteur) DMX.

 
Utilisation des sorties
Les sorties sont de type logique TTL et délivrent donc des signaux électriques qui sont soit 0 V, soit +5 V, sous un courant maximal de 15 mA par sortie. Les sorties sont capables de débiter 25 mA de façon unitaire, mais le PIC ne supporte pas un courant supérieur à 200 mA, information donnée dans sa feuille de caractéristique. On doit donc limiter le courant individuel de sortie en partant de l'hypothèse que toutes les sorties peuvent être activées en même temps : 200 mA pour 12 sorties, cela donne 16 mA max pour chacune. Sachant qu'il est fort probable que ce genre d'interface ne serve pas qu'à allumer des LED, une interface de sortie (qui demande moins de 15 mA par entrée) sera la bienvenue. Exemple pour pilotage tout ou rien : interface logique. Petit conseil si vous prévoyez d'utiliser des ULN2803 (8 transistors darlington dans un même boîtier) pour piloter des moteurs ou des "petites" lampes : rendez accessibles les entrées et sorties inutilisées par des points faciles d'accès. Ca peut dépanner le jour où un des transistors utilisé lâche...
En mode gradateur, les signaux PWM délivrés ont tous une période voisine de 15 ms (environ 66 Hz). Cette fréquence, suffisament élevée pour ne pas être géné par un effet de scintillement, est liée à l'utilisation d'un timer qui "découpe" chaque période en 256 tranches, pour bénéficier de la pleine résolution (256 pas et non pas 100). Le timer en question (Timer1 16 bits) opère lui-même à une période d'environ 56 us. J'aurais pu pousser un tout petit peu plus la cadence (passer à 40 us par exemple) mais je n'en avais pas l'utilité. 

Alimentation
L'alimentation requise pour l'ensemble du circuit est de +5 V, je vous conseile d'en choisir une qui est capable de débiter au moins 200 mA. L'usage d'une tension d'alimentation supérieure (en plus de celle de 5 V destinée au PIC et au MAX487) peut être requise si les éléments à piloter (lampe de puissance, moteur, etc) le réclament.

Un bouton de reset ?
Le bouton de reset SW1 doit être pressé si vous modifiez l'adresse DMX pendant que le montage est sous tension, car la lecture de ladite adresse ne se fait qu'au moment de l'initialisation du programme.

Prototype

Dans un premier temps et pour mise au point (débogage), simulation dans Proteus. Puis test dans le monde réel avec ma platine de développement EasyPic7 et mon interface électrique DMX simplifiée. 
   
interface_dmx_003_proto_001a interface_dmx_001_proto_001b interface_dmx_003_proto_rm_002d
   
Pour l'envoi des commande DMX, j'ai utilisé trois contrôleurs différents : 
- Stairville DDC-6 (6 voies)
- Botex SDC-16 (16 voies)
- mon contrôleur DMX 003 (12/24 voies)

Le fonctionnement de l'interface 003 est conforme à celui attendu, avec les trois contrôleurs et pour les 12 sorties.

Remarque : le comportement de cette interface 003 n'est pas parfait en cas de perte de la trame DMX (ce qui est une situation anormale). Dans une telle situation en effet, les sorties peuvent prendre une valeur indéterminée (généralement, les sorties conservent l'état lié aux dernières données reçues, mais ce n'est pas systématique) jusqu'à réapparition de la trame et resynchronisation. Pour toutes mes autres interfaces (pro), les sorties se désactivent en absence de données entrantes.

Edit 23/12/2022 : l'extension de lecture à 512 adresses DMX a été implémentée dans cette interface 003 (demande/usage pro pour un fabricant de jeux de lumière, logiciel non disponible en libre service).

   

Logiciel du PIC

Le fichier binaire compilé *.hex à flasher dans le PIC est disponible dans l'archive zip ci-après. MikroPascal V5.3 utilisé pour le développement et la compilation.

Free - Interface DMX 003 - 256-ch- 18F45K22 - (17/12/2022)
Pro - Interface DMX 003 - 512-ch- 18F45K22 - (23/12/2022)

Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

   

Circuit imprimé

Non réalisé par mes soins.

   

Historique

25/12/2022
- Extension de lecture à 512 adresses DMX (demande pro, logiciel mis à jour non disponible en libre service).
- Ajout fonction de désactivation automatique des sorties en cas d'absence de trame DMX (non inclus dans la version en libre service).

18/12/2022
- Ajout possibilité de configurer le mode de comptage des canaux DMX (avec ou sans StartCode, détails dans le texte).

08/09/2013
- Première mise à disposition