Electronique > Réalisations > Interfaces > DMX > Interface DMX 007 [Pro]

Dernière mise à jour : 16/11/2014

Présentation

Cette interface DMX travaille en tout ou rien et permet de piloter jusqu'à 128 équipements différents.

interface_dmx_003_pcb_3d_a

Les sorties sont de type TTL (5 V) et une interface appropriée doit être ajoutée en fonction de la nature des équipements à piloter. Cette interface a été développée en même temps que mon contrôleur DMX 004 à 128 canaux tout ou rien. Elle fait usage d'un PIC 18F46K22 et de 16 registres à décalage de type 74HC595 (8 sorties chacun).

Avertissement

La publication de cet article fait suite à une demande pro, le logiciel complet du PIC n'est pas mis à disposition libre sur ce site. 

Schéma

Forcément, la gestion de 128 sorties demande plus de circuits intégrés que la gestion de 6 ou 8 sorties. Pour simplifier, j'ai scindé le schéma total en deux parties, la première correspond au récepteur DMX et la seconde correspond à l'interface de "décodage" des 128 sorties (convertisseur série/parallèle). Les deux schémas sont reliés entre eux par les lignes d'alimentation (masse et +5 V) et par les trois lignes des données séries (Data, Clock et Strobe).

Récepteur DMX

interface_dmx_007_recepteur

Cette partie du montage réceptionne les trames DMX et envoie sous forme série l'état des 128 sorties logiques, qui dépendent de la valeur véhiculée dans les 128 canaux DMX sélectionnés par l'utilisateur. Les sorties Out1b à Out6b du schéma qui précède (port C du PIC) sont des copies conformes des sorties Out1 à Out6 du schéma qui suit (sorties registres à décalage).

Convertisseur série/parallèle

interface_dmx_007_conv_sp

Cette partie du montage convertit les données séries en données parallèles pour disposer des 128 commandes de manière séparées.

Fonctionnement général
Le PIC reçoit la trame DMX sur l'entrée de son UART Rx1. La valeur des 128 canaux sélectionnés par l'utilisateur est stockée en mémoire vive puis quand arrive la trame suivante, les sorties TTL sont mises à jour en fonction des valeurs issues de la trame précédente. Ici on fait simple : chaque sortie est activée si la valeur du canal DMX correspondant est supérieure à 127. Il suffit donc d'envoyer dans la trame DMX, des valeurs comprises entre 0 et 126 (par exemple $00) pour désactiver les sorties, et des valeurs comprises entre 128 et 255 (par exemple $FF) pour les activer.

Interface électrique DMX
Le circuit d'interface MAX487 travaille ici uniquement dans le sens réception, cela est obtenu en mettant les entrées logiques de direction RE et DE (broches 2 et 3) à l'état bas. La résistance R3 de 120 ohms est montrée câblée sur le schéma mais elle est en réalité câblée en série avec un cavalier (jumper) pour pouvoir la mettre hors service si besoin (chaînage éventuel avec d'autres appareils DMX).

Choix des canaux à traiter
L'interface peut traiter les canaux DMX suivants, selon la position des interrupteurs câblés sur le port B du PIC (DSW1/Config) :

RB4RB3RB2RB1Plage adresses DMX
00000 à 127
00011 à 128
001064 à 191
001165 à 192
0100128 à 255
0101129 à 256
0110192 à 319
0111193 à 320
1000256 à 383
1001257 à 384
1010320 à 447
1011321 à 448
1100384 à 511
1101385 à 512

L'entrée RB0 est réservée dans cette application et doit être laissée en l'air (non câblée). Quant à l'entrée RB1, elle ne sert qu'à "rassurer" sur le numéro du premier canal DMX (premier canal de la série de 128 sur "base" 0 ou 1). 

Sorties
Deux types de sorties sont disponibles :
La sortie Out1 reflète l'état du premier canal traité de la trame DMX (canal 0, 1, 64, 65, 128, 129, ..., 384 ou 385), la sortie Out2 reflète l'état du second canal traité de la trame DMX (canal 1, 2, 65, 66, 129, 130, ..., 385 ou 386), etc.

Alimentation
L'alimentation requise pour l'ensemble du circuit est de +5 V / 1,2 A pour tenir compte du fait que chaque circuit 74HC595 peut activer ses 8 sorties en même temps et que ces sorties peuvent allumer la LED d'un optocoupleur ou optotriac. Comme le 74HC595 ne peut débiter plus de 70 mA, j'ai fixé le max à 8 mA par sortie (donc 64 mA au max par circuit). Pour l'alimentation générale, cela donne 8 (mA) x 128 (sorties) = 1,024 A (1,2 A pour la marge). L'usage d'une tension d'alimentation additionnelle et supérieure (en plus de celle de 5 V destinée au PIC et au MAX487) sera peut-être requise si une interface additionnelle est ajoutée pour le pilotage des appareils à commander (lampe de puissance, moteur, etc).

Prototype

Réalisé sur plaque sans soudure et avec ma platine de développement EasyPic7. Pour l'émission des trames DMX, je souhaitais au départ utiliser trois sources différentes :
- mon contrôleur DMX 003 à 24 canaux (tests limités aux premiers canaux);
- mon contrôleur DMX 004 à 128 canaux (spécialement conçu pour tests);
- le logiciel FreeStyler avec une interface maison USB/DMX 512 canaux assemblée avec des chips FTDI232 et MAX487 en CMS.
Mais je n'ai pas réussi à faire fonctionner FreeStyler, ce n'est que partie remise.
Côté matériel, j'avoue n'avoir testé que les 8 premières sorties de l'interface et les 8 dernières (chaînage de 16 circuit 74HC595 mais câblage de seulement 16 LED, 8 au début de la chaîne et 8 à la fin). Je pars du principe que si cela fonctionne au début et à la fin de la chaîne, cela fonctionne aussi au milieu.

Logiciel du PIC

Le fichier binaire compilé (*.hex) est disponible dans l'archive zip ci-après. MikroPascal Pro V6.4 utilisé pour le développement et la compilation.
Interface DMX 007 - 18F46K22 - Version limitée - (16/11/2014)
Pour ce projet (demande pro), code source MikroPascal non disponible et nombre de sorties limitée à 6.
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

16/11/2014
- Première mise à disposition