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

Dernière mise à jour : 08/09/2013

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_a

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.

Schéma

Voici le schéma complet sans l'alimentation et sans l'éventuelle interface de sortie de puissance, et qui donc n'est pas si complet que ça.

interface_dmx_003

Remarque : afin d'éviter toute suppression d'une remarque qui n'a pas lieu d'être, je préfère ne pas en faire.

Fonctionnement général
L'interface dispose de 12 sorties qui fonctionnent en mode Logique ou Gradateur, 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.

Sortie 1 2 3 4 5 6 7 8 9 101112
Valeur DMX 0 15 127 128 250 34 100 64 255 20015250
Etat logique (1) 0 0 0 1 1 0 0 0 1 101
PWM en % (1)0650509813392510078698
Nota (1) : Etat logique ou signal PWM, dépend de la postion du cavalier JP1.

En mode Logique, les sorties ne s'activent que si la valeur DMX correspondante est supérieure ou égale à 128. Cette suite de valeur dans la trame DMX active donc seulement les sorties 4, 5, 9, 10 et 12. En mode gradateur, le rapport cyclique des sorties dépend des valeurs transmises, selon la formule suivante :
Rapport cyclique (en %) = 100 / 255 * N
N étant la valeur transmise dans la trame DMX (valeur 0 -> PWM = 0%; valeur 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.

Interface électrique 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. La résistance R3 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 ?
Vous avez peut-être remarqué que je ne câblais pas souvent un bouton de reset sur la broche MCLR de mes PIC. Injustice réparée, c'est ici le cas. Pourquoi ? Parce que le PIC doit travailler très vite pour en même temps lire la trame DMX et élaborer les signaux PWM, et que je ne jugeais pas utile d'inclure dans la boucle principale, la routine de lecture de l'adresse DMX spécifiée par l'utilisateur avec les interrupteurs câblés sur le port B. Bref, on limite au maximum le travail "temps réel" et on déporte ce qu'on peut dans la partie d'initialisation générale. Le bouton de reset SW1 devra donc être pressé si vous modifiez l'adresse DMX pendant que le montage est sous tension.

Prototype

Dans un premier temps et pour mise au point, simulation dans Proteus. Puis test dans le monde réel avec ma platine de développement EasyPic7 et mon interface électrique DMX simplifiée. Pour les commande DMX, j'ai utilisé mon petit contrôleur six voies bon marché Stairville DDC-6.

interface_dmx_003_proto_001a interface_dmx_001_proto_001b

Ce contrôleur DMX n'ayant que six voies, je n'ai testé que les six premiers canaux DMX et les six sorties correspondantes. Je sais donc que cette interface fonctionne au moins pour les six premières sorties, aussi bien en mode Logique que Gradateur. Pour bien faire il me faudrait un contrôleur DMX avec plus de canaux pour finaliser mes tests (ou un générateur DMX bricolé pour l'occasion), quoique à priori il n'y a pas de raison que les six canaux suivant ne réagissent pas aussi bien que les six premiers.

Remarque : lors des premiers tests, j'ai noté un comportement erratique (fonctionnement aléatoire) quand l'interface était allumée alors que des trames DMX arrivaient déjà sur la XLR d'entrée. En fait, l'interface ne fonctionnait correctement que si j'envoyais les données DMX une fois le montage mis sous tension. J'ai trouvé la parade et je suis sûr que vous trouverez aussi si vous regardez attentivement le schéma.

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.
Interface DMX 003 - 18F45K22 - (08/09/2013)
Pour ce projet, code source MikroPascal non disponible.
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é.

Historique

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