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).
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.
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.
- JP1
côté masse (RA0 = 0) : mode Logique - Chaque sortie prend l'état
logique 0 ou 1 et peut dans ce cas servir pour arrêter ou mettre en service une lampe,
un relais ou un moteur (via interface appropriée).
- JP1
côté +5
V (RA0 = 1) : mode Gradateur - Chaque sortie délivre un signal PWM dont
le rapport cyclique dépend des valeurs DMX reçues, et peut dans ce cas
faire varier la luminosité de lampes (filament ou LED).
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 |
10 | 11 | 12 |
Valeur DMX |
0 |
15 |
127 |
128 |
250 |
34 |
100 |
64 |
255 |
200 | 15 | 250 |
Etat logique (1) |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 | 0 | 1 |
PWM en % (1) | 0 | 6 | 50 | 50 | 98 | 13 | 39 | 25 | 100 | 78 | 6 | 98 |
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.

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