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).
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.
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%).
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 !
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 :
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.
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.
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).
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)Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.
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