Dernière mise à jour :
14/01/2018
Présentation
Cette interface
DMX
dispose d'une entrée DMX (sur connecteur XLR) et de 8 ou 16
sorties
analogiques 0-10V. Elle permet de piloter des systèmes
commandés
par tension 0-10V
(gradateur de lumière, par exemple).
Le montage fait appel à un microcontrôleur
PIC 18F45K22 qui pilote des CNA (convertisseurs
numérique/analogique) de type MCP4922, via un bus SPI. L'adresse
de base DMX peut être ajustée entre 0 et 511.
Schéma
Le schéma de cette interface DMX est décomposé en deux parties :
coeur
(récepteur DMX) et étage de conversion N/A à 8 voies.
Coeur (récepteur DMX)
Interface de conversion
N/A 8 voies (en double pour 16 voies)
Fonctionnement général
Les valeurs véhiculées dans la trame DMX
sont extraites et traitées par le logiciel du PIC et sont ensuite
traduites en tension analogique par des convertisseurs N/A
(Numérique/analogique). La tension maximale issue de ces
convertisseurs
étant ici de
+5
V, un AOP amplifie cette tension par deux, pour allonger l'étendue
de
la
plage de
tension de sortie. De cette façon, la valeur des canaux DMX
traités est convertie en
une tension comprise entre 0 V (valeur DMX = 0) et +10 V (valeur
DMX =
255). Un réglage fin permet d'ajuster la tension de sortie à +10,0
V
pour une valeur DMX de 255.
Conversion N/A et amplification
La
conversion N/A est assurée par les MCP4922, des convertisseurs
doubles
de
résolution 12 bits assez bon marché de Microchip. Leurs broches de
tension de référence VREFA et VREFB permettent de spécifier la
valeur
haute (maximale) de la tension de sortie correspondant à la pleine
échelle du convertisseur (valeur 4095). Notons au passage que la
valeur
véhiculée dans les canaux DMX est codée sur 8 bits (256 valeurs
possibles, plage de 0 à 255) et que le
convertisseur MCP4922 travaille sur 12 bits (4096 valeurs
possibles,
plage de 0 à 4095). Pour cette raison, les
valeurs
extraites de la trame DMX sont "amplifiées" dans un rapport de 16
par
le PIC, avant d'être
envoyées aux convertisseurs. Le transfert des données sur le bus
SPI
s'effectue à une vitesse d'horloge de 4 MHz (le MCP4922 peut
travailler jusqu'à 20 MHz). La tension de sortie de chaque MCP4922
ne
peut excéder la tension d'alimentation du convertisseur, avec
les broches de référence haute du CNA soumises à la même
tension
d'alimentation. Pour pouvoir disposer d'une tension de sortie
supérieure à +5 V, il faut l'amplifier, et le plus simple pour
cela est
d'utiliser des AOP qui eux sont alimentés sous une tension
suffisante (ici 12 V à 15 V). Les LM324 (AOP d'usage courant)
conviennent amplement pour cette tâche, mais si
leur tension de sortie peut aller très près du zéro volt, la
tension de
déchet vers le rail d'alimentation positive en revanche est plus
élevée, de l'ordre de 1,5 V. Ce qui veut dire que si le LM324
était alimenté sous 10 V, sa tension de sortie max ne
pourrait
pas dépasser +8,5 V. C'est la raison pour laquelle
l'alimentation
des
LM324 doit être ici d'au moins 11,5 V, d'où la valeur plus
standard de
12 V (ou plus, mais pas trop tout de même pour ne pas faire
chauffer
inutilement le régulateur de 5 V qui fait suite). Afin de disposer
d'une réglage fin de la tension max de sortie (10 V),
l'amplification
apportée par les AOP est un peu supérieure à 2, et la tension de
référence des CNA peut être ajustée à une valeur inférieure à +5
V pour compenser cet "excès" de gain.
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 à RB5 et RA0 à RA2 du PIC (groupe
d'interrupteurs appelé
DSW1, lignes A0 à A8). S'il vous manque les notions de base du
binaire,
c'est
le moment de réviser.
Les résistance de pullup interne du PORTB ne sont pas activées, ce
qui
explique la présence des résistances de rappel R3 à R12 (R12 et la
ligne Ext ne sont pas utilisées actuellement,
extension à venir).
Un
interrupteur ouvert correspond à une entrée à l'état bas. En
fermant
un interrupteur, l'entrée correspondante est reliée au
+Valim et
se voit donc imposer un état haut. Sur le schéma, seul le
premier
interrupteur correspondant à l'adresse A0 (et relié à la broche
RB0 du
PIC) est fermé, l'adresse de base DMX est donc
égale à 1. Configuré
de la sorte, le montage réagit aux données véhiculées dans les
canaux
DMX #1 à #8. 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 à #21. Le PIC doit travailler très vite pour en même
temps lire la trame DMX et élaborer les signaux de commande.
Si j'avais inclus la routine de
lecture de l'adresse DMX dans la boucle principale, cela
aurait
consommé inutilement des ressources processeur. Le bouton de reset
SW1
devra être
pressé si vous modifiez l'adresse DMX pendant que le montage
est
sous tension.
Entrée 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, après la phase
d'initialisation
générale du PIC.
La résistance R1 de 120 ohms est
montrée câblée sur le schéma mais en pratique elle se
trouve en série avec un cavalier qui permet de la mettre en
ou
hors circuit. 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 qui va vers un autre appareil
(récepteur) DMX.
Nombre de canaux DMX reçus différent de 8 ?
L'interface
est actuellement prévue pour traiter 8 canaux. Si le nombre de
canaux véhiculés dans la trame DMX est inférieur à 8, le
logiciel du PIC le
comprend automatiquement et s'y adapte : les sorties
inutilisées restent
inactives (à 0 V). Si le nombre de canaux DMX est supérieur à 8,
alors
le logiciel ne
prend que ce dont il a besoin, toujours en commençant à l'adresse
de
base
spécifiée par l'utilisateur. Dans ce dernier cas, l'envoi des
données
aux convertisseurs MCP4922 à lieu alors même que les données
continuent
d'arriver sur
l'entrée DMX de l'interface (ces dernières sont réceptionnées mais
ignorées).
Alimentation
Deux rails d'alimentation continue sont requis : +12 V (non régulé
dans
le cas présent, mais il pourrait l'être) pour l'étage de sortie,
et +5
V pour le PIC et les CNA. Le 12V
n'est pas très critique, les AOP doivent ici être alimentés entre
+11,5
V
et +15 V (maximum 18 V). Le +5 V est tiré
d'un régulateur de tension LM7805 en boîtier TO220 qui sera de
préférence doté d'un
petit dissipateur thermique (radiateur). La tension issue du
secondaire
du
transformateur
d'alimentation TR1 est de 9 Vac ou 12 Vac, mais un modèle 9
Vac
pourra être tout juste limite (dépend du modèle de transfo,
de
la
tension secteur effective et du pont de diodes utilisé).
Points test
Quelques broches du PIC délivrent des signaux
caractéristiques, permettant de faciliter un dépannage
éventuel :
- DMXReset : brève impulsion (environ 65 ns) entre
chaque trame DMX
- DMXRx : changement d'état à réception d'une nouvelle valeur
de canal DMX (toutes les 44 us)
Ces points de contrôle n'ont pas besoin d'être reliés ailleurs,
ils ne
servent
qu'en
cas de problème. Le point de contrôle DMXReset nécessite
obligatoirement un oscilloscope numérique ou un analyseur de
données,
vu la faible largeur des impulsions délivrées.
Extension à 16 voies ?
Le
logiciel a été conçu pour piloter 16 voies de sortie
0-10 V, mais j'ai volontairement limité le nombre de voies à 8
pour une
question de dimensions de circuit imprimé. L'ajout de 8 voies
supplémentaires impose simplement la "mise en parallèle" de 4
convertisseurs doubles MCP4922 et
de 2 quadruples AOP LM324 sur les circuits existants, avec quatre
lignes de sélection de circuit supplémentaires (lignes CS4 à CS7
sur
les broches RD6, RD7, RC0 et RC1 du PIC).
Logiciel du PIC
Le fichier binaire compilé *.hex à flasher dans le
PIC est disponible dans l'archive zip
ci-après (version limitée LE).
Interface
DMX
011 - 18F45K22 - LE - (14/01/2018)
Projet Pro. Code
source non disponible. Version libre = version allégée (LE) avec
nombre
de sorties limité à 2.
Pour la version à 8 ou 16 sorties,
me
contacter.
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 uniquement pour aperçu. A noter que cette vue
3D
montre les composants requis pour 8 sorties analogiques. Par la
suite,
j'ai décidé de séparer ce PCB en deux : un premier PCB pour
le
contrôleur seul, et un second PCB pour l'interface de sortie (
interface
analogique 001 ou
interface
analogique 002).
Historique
14/01/2018
- Première mise à disposition.