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

Dernière mise à jour : 31/01/2016

Présentation

Cette interface DMX dispose d'une entrée DMX (sur XLR) et de 8 sorties qui peuvent fonctionner en mode Logique (On/Off) ou en mode Gradateur (dimmer). Elle inclue un étage de sortie en puissance pour l'attaque directe de lampes à LED basse tension (jusqu'à 20 W / 12 V par sortie).

interface_dmx_003b_pcb_3d_a

Le montage fait appel à un microcontrôleur PIC 18F45K22 et correspond à une mise à jour de mon interface DMX 003. L'adresse de base DMX peut être ajustée entre 1 et 512.

Schéma

Pour un soucis de clarté, la section de puissance est détachée de la section de commande.

interface_dmx_003b
Réception/commande DMX

interface_dmx_pwm_8outs_001
Interface de puissance

Fonctionnement général
L'interface dispose de 8 sorties qui fonctionnent en mode Logique ou Gradateur, selon la position du microswitch DSW2:2.
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 (1 à 512) se fait par le biais des interrupteurs câblés sur les lignes RB0 à RB7 du PIC (bits #0 à #7, groupe d'interrupteurs appelé DSW1) et de l'interrupteur câblé sur la ligne RA2 du PIC (bit #8). Si vous ne connaissez pas encore le mode binaire c'est le moment de s'y mettre. Attention, les pullup internes du PORTB sont activés (pour la ligne RA2 la résistance de pullup est externe), ce qui fait qu'à un interrupteur ouvert correspond un niveau logique 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 DMX 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 électrique MAX487 (ou MAX481 ou SN75176BP) travaille ici toujours dans le même sens, ses entrées de direction RE et DE (broches 2 et 3) sont soumises à un état bas pour passer en mode réception. La commande des deux lignes RE et DE n'est pas établie "en dur" (directement câblées à la masse) mais de façon logicielle - au bon moment lors de l'initialisation du PIC, pour que d'éventuelles données DMX qui arrivent au PIC lors de sa mise sous tension ne pose pas de problème. 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 du PIC attaquent directement des transistors MOSFET compatibles "logique", ce sont eux qui permettent de commuter des courants de valeur élevée (ici plusieurs ampères par sortie, mais il faut dans ce cas que l'alim générale 12 V arrive à suivre). En mode gradateur, les signaux PWM délivrés ont une période voisine de 10 ms, ce qui correspond à une fréquence voisine de 100 Hz. Cette fréquence, suffisament élevée pour ne pas produire un scintillement visible, 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 38 us. L'utilisation d'une courbe (table) de correction de luminosité (pour adapter la plage linéaire des valeurs DMX à la sensibilité de l'oeil qui est logarithmique) demande quelques ressources processeur supplémentaires et ralentit un peu l'ensemble, mais on s'en sort bien.

Mode de fonctionnement en absence de données DMX
Si pour une raison quelconque les données DMX n'arrivent plus (coupure en plein milieu d'une trame), le logiciel peut réagir de deux façons différentes :
- si DSW2:1 ouvert (RA0 = +5 V) : les sorties conservent l'état qu'elles avaient sur la dernière trame DMX valide reçue.
- si DSW2:1 fermé (RA0 = 0 V) : les sorties sont désactivées.
Ce fonctionnement est rendu possible grâce à l'utilisation d'un timer dédié qui incrémente un compteur en absence de signal DMX, compteur qui est remis à zéro à chaque trame valide reçue. Si le compteur atteint une valeur "critique", cela est considéré comme une absence de trame DMX persistante.

Alimentation
L'alimentation requise pour le circuit de commande (PIC et MAX487) est de +5 V, un simple régulateur de tension 5 V (LM7805 ou 78L05) convient. La ligne +12 V est réservée pour les sorties de puissance. Chaque transistor de sortie peut commuter un courant de plusieurs ampères, mais imaginez la puissance requise pour le bloc secteur 12 V, si on veut débiter 5 A sur les 8 sorties en même temps (40 A au total, tout de même).

Un bouton de reset ?
Le PIC doit travailler très vite pour en même temps lire la trame DMX et élaborer les signaux PWM, et 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. On limite donc 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 être pressé si vous modifiez l'adresse DMX pendant que le montage est sous tension.

Prototype

Mise au point (simulation) avec Proteus, puis tests dans le monde réel avec une platine sans soudure relié à un PICkit3 et mon interface électrique DMX simplifiée. Pour les commande DMX, j'ai utilisé mes contrôleurs Stairville DDC-6 et Botex SDC-16.

interface_dmx_001_proto_001b botex_sdc16_001a

Fonctionnement OK.

Logiciel du PIC

Le fichier binaire compilé *.hex à flasher dans le PIC est disponible dans l'archive zip ci-après
Interface DMX 003b - 18F45K22 - (31/01/2016)
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

31/01/2016
- Première mise à disposition