Dernière mise à jour :
15/09/2013
Présentation
Ce contrôleur
DMX
1 à 512 canaux a été conçu pour faciliter des vérifications ou
recherche
de pannes sur une installation lumière pilotée par DMX. Pour être franc
avec vous, je l'ai développé pour vérifier le fonctionnement de tous
les canaux de mon
interface
DMX 003. Il permet
d'envoyer des commandes DMX avec une valeur fixe ajustable,
sur une plage d'adresses plus ou moins étendue. On peut ainsi, par
exemple,
demander l'envoi de données sur les
seuls canaux 1
à 22, avec les autres canaux fixés à la valeur 0 ou tout
simplement non envoyés.
Avertissement :
ce montage est un
appareil de test et ne peut pas servir pour une gestion
lumières scénique.
Schéma
Il
ne faut pas grand chose pour arriver au résultat souhaité. Un PIC
16F88 et un MAX487 auxquels on associe quelques interrupteurs
et
autres composants passifs.
Fonctionnement général
Ce montage délivre une trame DMX qui
se répète à l'infini tant qu'il est alimenté. La valeur envoyée dans
les différents canaux est ajustable entre 0 et 255 via un
potentiomètre qui produit une tension comprise entre 0 V et +5 V et qui
est numérisée par le CAN interne au PIC. Le nombre de canaux traités
(envoyés dans chaque
trame) dépend de l'adresse de fin (et non de départ) spécifiée
par
9 interrupteurs (codage binaire de l'adresse entre 0 et 511).
Si
par exemple l'adresse de fin est spécifiée à la valeur 12, alors la
trame envoie la même valeur dans les canaux #0 à #12. Il n'est pas
possible de modifier l'adresse de départ qui est toujours l'adresse #0.
Le sort réservé aux canaux situés après l'adresse de fin dépend de la
position d'un interrupteur appelé Mode.
Modes de fonctionnement
Deux
modes de fonctionnement sont possibles, selon l'état de l'interrupteur
DSW1-10/Mode (entre les broches 10 et 11 du bloc DSW1), qui
déterminent le nombre de canaux transmis (pour rappel, une
trame
DMX peut comporter un nombre de canaux compris entre 1 et 512) :
- DSW1-10/Mode à ON (RB7 = 1) : mode
"512 canaux". Les 512 canaux sont traités et envoyés dans
chaque trame, mais seuls ceux situés entre l'adresse #0 et l'adresse de
fin envoient la valeur spécifiée par le potentiomètre. Les suivants
envoient la valeur 0, quelque soit la position du curseur du
potentiomètre.
- DSW1-10/Mode à OFF (RB7 = 0) : mode "Nb spécifié de
canaux". Seuls
les canaux situés entre l'adresse #0 et l'adresse de fin envoient la
valeur spécifiée par le potentiomètre. Les autres canaux ne sont pas
traités et la trame est donc renouvelée plus rapidement.
Le
bouton de reset doit être pressé si une modification de la valeur de
l'adresse de fin à lieu pendant que le montage est sous tension.
Valeur transmise dans les canaux DMX
La
tension récupérée sur le curseur du potentiomètre RV1 est numérisée par
le CAN du 16F88 via la broche RA0/AN0. La numérisation se fait avec une
résolution de 10 bits et le résultat donne donc un nombre compris entre
0 et 1023 (2 puissance 10 valeurs possibles). Après division par quatre
de la valeur numérisée, on obtient une valeur comprise entre 0 et
255 qui tient dans huit bits (un octet) et qu'on peut donc
inclure
dans la trame DMX. C'est cette même valeur qui est transmise dans tous
les canaux sélectionnés par les interrupteurs qui définissent l'adresse
de fin. Le condensateur C3 permet de filtrer un peu la tension continue
délivrée par RV1, on pourra le cas échéant augmenter sa valeur jusqu'à
quelques uF (si le potentiomètre crachotte un peu, ce condensateur
limite les crachats).
Horloge / cadencement des trames
Les
trames DMX sont transmises à une vitesse de 250 kbauds, ce qui est un
poil supérieur à 9600 bauds. On pourrait se dire qu'il serait
dangeureux d'utiliser une horloge à 32,768 kHz (quartz
horloger)
eh bien je confirme, ça ne marche pas. Pour une transmission à 250000
bauds, il faut une horloge qui turbine à un minimum de 1 MHz, et comme
on pourrait aussi s'en douter un peu, ce minimum n'est pas suffisant.
Non, il faut au moins 4 MHz, et pour ma part je n'ai pas cherché plus
loin et j'ai choisi de mettre un quartz de 20 MHz.
Interface électrique DMX
Réalisé
avec un MAX487, identique à celui utilisé pour mon
interface
DMX 001.
Les deux MAX487, un en
émetteur et l'autre en récepteur
Comme
je souhaitais utiliser ce contrôleur DMX pour tester mes récepteurs
DMX, il me fallait mettre sur pied un second circuit imprimé "interface
électrique DMX/RS485". C'est à ce moment-là que j'ai décidé, dans un
éclair de je ne sais pas trop quoi au juste, de regrouper cette seconde
interface électrique RS485 avec le reste du montage. J'aurais volontier
qualifié cette idée de lumineuse si par le suite je ne m'étais pas
demandé s'il n'aurait pas été plus judicieux de faire deux circuits
séparés, un pour le contrôleur et l'autre pour l'interface électrique.
Comme ça j'aurais eu deux interfaces électriques autonomes
sous la
main. Et puis zut, c'est fait.
Logiciel du PIC
Le fichier binaire compilé *.hex à flasher dans le PIC est disponible
dans l'archive zip
ci-après. MikroPascal V5.30 utilisé pour le développement et la
compilation.
Contrôleur
DMX 002 - 16F88 - (15/09/2013)
Si vous souhaitez
recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC
- Sources.
Prototype
Montage testé dans un premier temps avec ma platine EasyPic7 et mon
interface DMX à base de MAX487, envoi des trames DMX à mon petit
projecteur LED DMX.
Ensuite, réalisation d'un petit circuit
dédié sur plaquette prépercée, pour redonner sa
liberté à mon petit bout d'interface MAX487. Bah oui, pour
tester
un émetteur fait maison avec un récepteur fait maison, il me
fallait bien deux MAX487.
Pour
les adresses, je ne me suis pas embêté et me suis contenté d'un bloc de
8 interrupteurs miniatures, la ligne D8 restant à l'état bas par défaut
(possibilité toutefois de la mettre à l'état haut avec un
pont sur le
support de circuit intégré qui possède tout de même 20 broches). Les
résistances de rappel à la masse (câblées sur les entrées du PIC) sont
montées verticalement et raccordées par le haut pour une unique liaison
vers le 0 V.
Fonctionnement
validé avec les deux prototypes. Lors de mes premiers tests, j'ai cru
que le montage ne fonctionnait pas bien car dans la première partie de
réglage du potentiomètre, mon projo se comportait en stroboscope et
dans la seconde moitiée de la plage il se comportait comme un
gradateur. J'avais tout bonnement oublié que c'était son comportement
normal (fonction strobo si valeur canal 1 comprise entr 0 et 127,
fonction gradateur si valeur comprise entre 128 et 255). Donc OK pour
moi.
Remarques
- L'oeil
avisé aura remarqué sur la photo où on voit les interrupteurs en gros
plan, que le PIC est un 16F628A et non un 16F88. Il aura aussi remarqué
(tant qu'à faire) que le circuit intégré n'est pas entièrement enfiché
dans son support. C'est que j'étais pressé et voulais faire la photo
alors que le 16F88 était encore sur la platine EasyPic. Lors des tests
finaux (photo avec pile 9 V), c'est bien un 16F88 qui est en place. A
noter en passant qu'on pourrait tout à fait utiliser un 16F628A et
envoyer des valeurs de données qui changent de façon automatique (par
exemple) toutes les secondes : tout éteint, plein feux, tout éteint,
plein feux, etc.
- Normalement il faut une XLR femelle pour un
contrôleur DMX. Si j'ai mis une embase mâle, c'est uniquement par ce
qu'il ne me restait que ça dans mon stock de connecteurs.
- Si
vous ne voulez pas vous encombrer des interrupteurs d'adresse et que le
but est d'envoyer la même chose dans les 512 canaux, alors pas de
scrupule à avoir, câblez en dur (en permanent) toutes les entrées
d'adresses D0 à D8 et l'entrée Mode à l'état logique haut.
Circuit imprimé
Non réalisé.
Historique
15/09/2013
- Première mise à disposition