Dernière mise à jour :
16/03/2014
Présentation
Ce contrôleur
DMX
dispose de quatre canaux dont la valeur est assignable par le biais de
potentiomètres classiques.
Le montage fait appel à un microcontrôleur
PIC de type 16F88 et a été conçu pour piloter un projecteur à LED de
type PAR36 de marque Ibiza qui pour la partie DMX ne nécessite que 4
canaux. C'était surtout l'occasion de me faire un peu
la main
avec le DMX puisqu'il s'agit de mon premier projet s'appuyant sur ce
protocole. Voir aussi le
contrôleur
DMX 002
qui me sert maintenant pour tester mes récepteurs DMX. Suite à une
demande, j'ai ajouté le schéma d'un montage pour utiliser le
logiciel actuel en mode "orgue lumineux" :
-
schéma 001 : schéma d'origine, usage avec potentiomètres.
-
schéma 001b : schéma modifié, usage avec boutons-poussoir pour usage en orgue.
Les deux schémas, tenez-vous bien, peuvent être combinés...
-
schéma 001c : mélange des deux fonctions (avec boutons-poussoirs et potentiomètres).
Avertissement
Ce
projet a été à l'origine développé pour un projecteur PAR36 LED
Ibiza. En aucune manière je ne peux assurer qu'il fonctionne avec
d'autres types de jeux de lumière, même si le pourcentage de
possibilité n'est pas nul puisque j'ai fait dans le standard. Les
canaux DMX ont les fonctions suivantes :
- Canal
1 : fonction du projecteur. Ce canal peut tout aussi bien véhiculer une
valeur concernant la vitesse de clignotement en mode Stroboscope,
qu'une valeur de taux de luminosité globale RVB, de 0% à 100%. Ici, je
me suis permis le luxe (ou l'indécence) de faire appel à deux
potentiomètres pour chacune de ces deux valeurs, qui sont envoyées au
choix sur le même canal. Cela permet, quand on passe d'un mode à
l'autre, de ne pas perdre l'ancienne valeur du mode qu'on venait de
lâcher.
- Canal 2 : taux de luminosité du rouge, de 0% à 100%.
- Canal 3 : taux de luminosité du vert, de 0% à 100%.
- Canal 4 : taux de luminosité du bleu, de 0% à 100%.
Pour savoir si ce montage est compatible avaec d'autres projecteurs,
merci de vous reporter à leur manuel utilisateur, notamment au
paragraphe qui mentionne l'implémentation des commandes DMX.
Retour de Jean-Louis (11/03/2014) :
Ce contrôleur DMX 001 fonctionne bien avec mon projecteur DMX Involight mais pas correctement avec mon projecteur Ibiza. C'est drôle, non ?
Schéma 001 - Avec potentiomètres
Le schéma suivant est presque complet, il ne lui manque que son
alimentation 5 V. Simple, n'est-ce pas ?
Lecture des valeurs DMX
Chacune
des cinq valeurs est acquise par le PIC au travers de son CAN
(Convertisseur Analogique Numérique) qui transforme une valeur discrète
de tension analogique en sa représentation codée en numérique. Le CAN
inclus dans le PIC 16F88 possède une résolution de 10 bits, ce qui
permet de disposer d'un nombre compris entre 0 et 1023 (valeur maximale
égale à 10 puissance 10 auquel on retranche 1 puisque la valeur 0 ne
compte pas pour du beurre).
- La
valeur acquise par le potentiomètre RV1 permet de régler la vitesse du
stroboscope. Cette valeur, qui est comprise entre 1 et 127, est
transmise sur le canal 1 si le cavalier JP1 est placé côté +5 V (RB7 =
1).
- La
valeur acquise par le potentiomètre RV2 permet de régler
le taux de luminosité globale RVB. Cette valeur, qui est
comprise
entre 129 et 255, est transmise sur le canal 1 si le cavalier JP1 est
placé côté 0 V (RB7 = 0).
- La valeur acquise par le
potentiomètre RV3 permet de régler le taux de luminosité de la
couleur rouge (R) et est transmise sur le canal 2 (valeur comprise
entre 1 et 255).
- La valeur acquise par le potentiomètre RV4
permet de régler le taux de luminosité de la couleur verte (V) et est
transmise sur le canal 3 (valeur comprise entre 1 et 255).
- La
valeur acquise par le potentiomètre RV5 permet de régler le taux de
luminosité de la couleur bleue (B) et est transmise sur le canal 4
(valeur comprise entre 1 et 255).
Remarques
:
- il aurait été possible de n'utiliser qu'un seul potentiomètre pour
les deux premières fonctions, mais je
trouvais plus souple (et plus excitant) de les dissocier entièrement.
En effet, le projecteur différencie la valeur reçue comme étant
attribuée au stroboscope ou au réglage du taux de luminosité globale
selon la plage dans laquelle se situe la valeur transmise dans
le
canal 1. Si la valeur est comprise entre 1 et 127, elle est destinée à
la fonction stroboscope. Si elle est comprise entre 129 et 255, elle
est destinée à la fonction variateur (les valeurs 0 et 128 sont
ignorées). Le cavalier JP1 qui spécifie le mode stroboscope ou
variateur peut être remplacé par un
inverseur
simple (SPDT).
-
les potentiomètres que j'ai utilisés pour la mise au point du proto
sont de type ajustable, mais on peut bien entendu utiliser des modèles
plus faciles à manipuler, de facade (tableau) ou rectilignes (faders).
Sortie DMX
La sortie DMX suit la norme RS485 et pour ce faire j'ai utilisé un
driver de ligne de type MAX487.
Isolation galvanique
Il
est normalement plus prudent d'isoler d'un point de vue électrique, le
circuit de commande de l'interface ligne RS485. Cela peut être fait
grâce à un optocoupleur (par exemple un 6N137) et un convertisseur de
tension DC/DC. Ici il s'agit d'un montage d'expérimentation et je n'ai
pas pris la peine de procéder à cette isolation (et je ne pense pas
être le seul).
Alimentation
Une alimentation régulée délivrant une tension de 5 V sous au moins 100
mA est requise. Un
régulateur
de tension de type LM7805 fera parfaitement l'affaire pour la
stabilisation de tension.
Exemple
d'alimentation simple.
Schéma 001b - Avec boutons-poussoirs (fonction orgue)
Puisque
les entrées analogiques du PIC convertissent des tensions continues en
valeurs de canal DMX, pourquoi ne pas profiter du fait qu'un
condensateur peut se charger rapidement et se décharger lentement ?
Oui,
pourquoi pas ? En remplaçant les potentiomètres du premier schéma par
un trio poussoir-condensateur-résistance, on peut disposer à moindres
frais d'une tension qui grimpe d'un coup quand on presse le poussoir
(charge quasi-imédiate du condensateur) et qui chute progressivement
quand on le relâche (décharge du condensateur dans une résistance de
forte valeur). En tout cas, je vous le dis, c'est un truc rigolo qu'il
faut tester. Envie que la descente soit plus rapide ? Il suffit de
diminuer la valeur du condensateur ou de la résistance (pour cette
dernière, ne pas aller en dessous de 1 kO). Envie que la descente soit
plus lente ? Augmenter la valeur du condensateur (22 uF pour deux fois
plus lent).
Trouvez l'erreur...
Si
vous avez compris ce
que j'ai dit en filigrane dans les lignes qui précèdent à propos des
potentiomètres RV1 et RV2, vous pouvez raisonnablement vous demander
pourquoi j'ai remplacé RV1 et RV2 par les poussoirs SW1 et SW2. Bien
sûr vous pouvez laisser ces deux potentiomètres RV1 et RV2 en place et
ne mettre des poussoirs que pour les voies DMX #2 à #4.
Schéma 001c - Car on a le droit d'hésiter...
Vous
vous sentez hésitant, ou alors vous avez envie de garder les deux
fonctions. Dans ce cas rien de plus simple, il suffit de remètre les potentiomètres que vous aviez retirés, et d'ajouter un
inverseur sur les voies que vous avez prises en affection.
Si
la broche centrale des inverseurs est collée sur le curseur des
potentiomètres, on retrouve notre schéma d'origine et les
boutons-poussoirs n'ont plus aucune action. Et si à l'inverse la broche
centrale des inverseurs est collée sur les boutons-poussoirs... vous
avez tout compris, bravo !
Prototypes
Au moins deux...
Mon prototype
Réalisé
avec ma platine EasyPic et son petit satellite d'interface électrique
RS485 à base de MAX487 que j'appelle pompeusement
interface
DMX 001, pffff...
Essais
effectués avec un projecteur PAR36 LED Ibiza avec
microswitches
configurés en DMX On (switch 10 sur On) et adresse de base 0 (switches
1 à 9 sur Off).
Vidéo de démonstration YouTube
C'est plus vivant quand ça bouge, ça c'est sûr.
Remarque
: les effets visibles de "barres noires" sur la vidéo lors des réglages
de luminosité (fonction gradateur) sont normaux et sont liés à la
relation entre fréquence ligne / image vidéo et fréquence signal PWM
des LED du projecteur.
Alors, je raconte ou pas ?
Comme
vous le savez, j'adore partager ce qui ne va pas. Parce que ça défoule,
que ça peut servir aux autres, bref, j'aime m'épancher sur mes petits
malheurs. Il y avait pour cette réalisation deux nouveautés pour moi.
Une matérielle (liaison RS485) et une logicielle (protocole DMX).
Quoique je me rend compte que je vous mens un peu, car j'avais déjà un
peu touché au RS485 il y a quelques années, pour des équipements de
diffusion TV (modulateur numérique). La mémoire... Vous savez ce que
c'est. Me restait donc principalement à me faire la main sur des
signaux DMX auxquels je n'avais jamais goûté. Et comme je sais très
bien que la réception de données DMX est plus ardue que l'émission de
données DMX, j'ai commencé par le plus simple. D'où ce petit
contrôleur DMX de quelques voies. Vous savez comme moi qu'on trouve des
tonnes de réalisations semblables à la mienne sur le net (et qui
fonctionnent), donc pas grand chose de nouveau, si ce n'est... le code
source mis à disposition en "langage clair". Mais je m'égare.
Bien
entendu, ça n'a pas fonctionné du premier coup. Je m'en serais voulu.
Alors voici les points sur lesquels j'ai buté, pour ne pas vous faire
attendre plus longtemps.
- Premier problème
: d'ordre matériel. Quand j'ai débuté la conception de ce contrôleur
DMX, je ne disposais d'aucun équipement reconnaissant ce protocole. Un
comble pour un ancien DJ ! J'ai donc cherché un jeu de lumière bon
marché qui bossait sur au moins 4 canaux (le moins cher, je n'ai pas
honte de le dire), et me suis arrêté au PAR36 à LED de chez Ibiza. J'ai
branché le projecteur, qui fonctionnait bien en mode manuel (non DMX).
Fonction sélection lumière, gradateur auto et strobo OK, ça flashe
bien. Microswitch N°10 en position On pour activer le contrôle DMX,
tout s'éteint et ça me semble bien normal. Je branche mon interface
électrique DMX entre ma platine EasyPic et le projecteur, je charge le
programme dans le PIC et j'attend... j'attend... rien ne s'allume. Je
vérifie à l'oscillo la présence de trames sur la liaison, elle sont
bien là. Mais avec une amplitude de 2 V, ce qui me semble un peu léger
tout de même. A tout hasard, je retire la résistance de 120 ohms que
j'ai placée entre les broches 2 et 3 de la XLR, et hop, l'amplitude des
signaux DMX remonte à presque 5 V. Bon, je ne serais pas surpris qu'une
terminaison soit déjà présente dans le bignou, mais je n'arrive pas à
trouver confirmation. Quand j'y pense, j'ai oublié de sortir le
multimètre.
- Deuxième problème : d'ordre logiciel. Bah oui,
j'ai maintenant mes trames avec la bonne amplitude. Alors si
ça ne
fonctionne pas, c'est que les données que j'envoie ne sont pas
conformes, n'est-ce pas ? Je ne vais tout de même pas mettre en cause
un matériel professionnel chinois à 30 euros... Je cherche donc dans
mon code, ligne par ligne. Je relis le datasheet du 16F88. Je
navigue entre des pages internet gorgées d'infos que je n'arrive pas
toujours à bien avaler. Et puis soudain (car en fin des histoires qui
se terminent bien il y a parfois un soudain), je me rappelle cette
vague question de transmission 9 bits avec deux bits stop. Certes, j'ai
bien configuré le PIC pour que l'UART bosse en mode 9 bits, mais est-ce
bien suffisant ? Que neni, j'avais bêtement oublié de positionner le
9ème bit à l'état logique haut. Modification, recompilation,
retransfert dans le PIC et... hourra, le projecteur s'allume ! Je
tourne les deux petits potentiomètres ajustables de la carte EasyPic
que j'ai routés vers deux des cinq lignes configurées en entrées
analogiques (à savoir RA2 et RA3), et la variation des deux couleurs
correspondante se fait bien.
Ca fonctionne donc. Oh, je
sais, il n'y a pas de quoi être fier pour un "si petit projet". Et bien
détrompez-vous, je suis fier de moi. Parce qu'après plusieurs heures à
avoir tourné en rond, j'étais sur le point de laisser tomber et de
reprendre seulement la semaine prochaine. Et comme ça marche, je peux
finalement vous en causer dès maintenant, en ce beau milieu de janvier
2012 bien givré mais pas autant que moi.
Prototype de Jean-Louis D.
Version 001 avec potentiomètres.
Montage qui je le crois sera bientôt doté de boutons-poussoirs...
Logiciel du PIC
Le fichier binaire compilé *.hex à flasher dans le PIC ainsi que les
fichiers de code source sont disponibles dans l'archive zip
ci-après. MikroPascal V5.30 utilisé pour le développement et la
compilation. Programme pour schémas 001 et 001b.
Contrôleur
DMX 001 - 16F88 - (15/01/2012)
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é, vue 3D pour faire joli.
Historique
16/03/2014
- Ajout schémas 001b et 001c avec fonction "orgue", en gardant le logiciel d'origine.
- Ajout photo prototype de Jean-Louis D., que je remercie pour ses retours.
15/01/2012
- Première mise à disposition