Ce montage qui fait appel à un microcontrôleur
PIC 18F4xKxx est une évolution de mon interface
DMX 003
avec PIC 18F45K22 dont l'adresse de base DMX était limitée à 255. Ici,
on peut grimper jusqu'à
l'adresse 512 (voir détails dans le texte). Des microcontrôleurs un peu
plus récents ont été utilisés et deux versions ont été mises au point :
Si on compare le schéma des interfaces DMX 003a basée sur PIC 18F45K50 ou 18F45K80 avec celui de l'interface DMX 003 basée sur PIC 18F45K22, on constate que l'affectation des broches d'entrée/sortie du PIC n'est pas la même. En effet, il n'existe pas de compatibilité "broche à broche" totale entre les PIC 18F45K22 et 18F45K50.
Le PIC45K50 est doté d'un module USB qui n'est pas utilisé ici, le choix de cette référence de PIC a été principalement dicté par des raisons de disponibilité chez les revendeurs.
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 pour les 12 canaux DMX.
Sortie | #1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | #9 | #10 | #11 | #12 |
Canal DMX (1) | A+0 | A+1 | A+2 | A+3 | A+4 | A+5 | A+6 | A+7 | A+8 | A+9 | A+10 | A+11 |
Valeur DMX | 0 | 15 | 127 | 128 | 250 | 34 | 100 | 64 | 255 | 200 | 15 | 250 |
Etat logique (2) | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
PWM en % (2) | 0 | 6 | 50 | 50 | 98 | 13 | 39 | 25 | 100 | 78 | 6 | 98 |
Nota (1) : A = adresse de base DMX, par exemple A=56.
Nota (2) : Etat logique(on/off)
ou
signal PWM (dimmer), dépend
de la postion du cavalier JP1.
En
mode Logique (on/off),
les sorties ne s'activent que si la valeur DMX
correspondante est supérieure ou égale à 128. La suite de
valeurs
dans la trame DMX donnée ci-devant en exemple active donc seulement les
sorties 4, 5, 9, 10 et 12.
En mode gradateur (dimmer),
le rapport cyclique des sorties dépend des valeurs
transmises, selon la formule suivante :
Rapport cyclique (en %) = (N * 100) / 255
N étant la valeur transmise dans la trame DMX (N = 0
-> PWM = 0% ; N = 127 -> PWM = 50% ; N = 255
-> PWM = 100%).
Le choix de l'adresse de base se fait par le biais des interrupteurs câblés sur les lignes A0 à A8, à savoir RB0 à RB5 et RA1 à RA3 du PIC (groupe d'interrupteurs appelé DSW1). Le numéro d'adresse DMX est comme d'habitude codé en binaire. Du fait de la présence des résistances de rappel R3 à R5 et des pullup internes du PORTB qui sont activés, un interrupteur ouvert correspond une entrée à l'état haut. En fermant un interrupteur, l'entrée correspondante est reliée à la masse et se voit donc imposer un état bas.
Bien que l'interface puisse extraire les valeurs des 512 canaux d'une trame DMX, il va de soi que l'adresse de base ne pourra pas être configurée au-delà de 501 si on veut exploiter les 12 sorties (utilisation des canaux #501 à #512).
Par défaut, l'interface considère que le StartCode est présent au début de chaque trame DMX. Pour ignorer le StartCode, procéder ainsi :
1 - éteindre l'interface DMXPour restaurer la prise en compte du StartCode, procéder ainsi :
1 - éteindre l'interface DMXCette façon de faire ne gêne en rien le fonctionnement de l'interface en mode désactivée (adresse DMX restant fixée à 0).
Le circuit qui assure l'interface électrique entre le PIC et le bus DMX est un MAX487, aucune isolation galvanique n'a été prévue. Le 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 au moment opportun (à un moment bien précis lors de l'initialisation du PIC).
La résistance R2 de 120 ohms peut être mise en ou hors service grâce au cavalier JP2. Pour rappel, cette résistance permet de "terminer" la liaison sur un bus composé de plusieurs machines.
Si la trame DMX disparaît en cours de route, l'interface DMX 003a désactive les 12 sorties (ces dernières passent à l'état logique bas).
Cet état "sorties désactivées" persiste jusqu'à ce que 5 nouvelles trames DMX valides (au moins) réapparaissent. Le temps de réaction est de l'ordre de 5 ms pour la disparition de la trame et de l'ordre de 100 ms lors du retour de trames valides.
Remarque : une mise à jour du logiciel pourrait aussi être prévue pour sauvegarder les valeurs de la dernière trame DMX valide, ce qui permettrait de laisser les sorties dans l'état où elles se trouvaient avant la perte de transmission de la trame DMX.
Les sorties sont de type logique TTL et délivrent donc des signaux électriques qui sont soit 0 V, soit +5 V, sous un courant maximal de 15 mA par sortie. Les sorties sont capables de débiter 25 mA de façon unitaire, mais le PIC ne peut pas fournir un courant total supérieur à 70 mA, information donnée dans son datasheet (feuille de caractéristiques techniques). On doit donc limiter le courant individuel de sortie en partant de l'hypothèse que toutes les sorties peuvent être activées en même temps : 70 mA pour 12 sorties, cela donne 5,8 mA max pour chacune. Sachant qu'il est fort probable que ce genre d'interface ne serve pas qu'à allumer des LED, une interface de sortie (qui réclame moins de 5 mA par entrée - idéalement 1 ou 2 mA) sera la bienvenue. Exemple pour pilotage tout ou rien : interface logique.
En mode gradateur, les signaux PWM délivrés ont une résolution de 8 bits (256 niveaux) et leur période est de 15 ms (environ 66 Hz) pour la version avec PIC18F45K50 ou de 11 ms (environ 90 Hz) pour la version avec PIC18F45K80. Ces fréquences sont suffisament élevées pour que l'oeil ne soit pas géné par un effet de scintillement.
Dans un premier temps, tests réalisés pour les deux montages sur plaque sans soudure, avec mon interface électrique DMX simplifiée. Pour les commande DMX, j'ai utilisé mon contrôleur DMX 003 24 voies fait maison, après avoir effectué la simulation avec mon contrôleur DMX 005.
Dans un second temps, j'ai réalisé un prototype sur PCB pour la version 003aa avec PIC 18F45K50, selon un dessin proche de celui proposé plus loin. Je n'ai pas encore réalisé de "prototype sérieux" pour la version 003ab avec PIC 18F45K80, mais ce PIC 18F45K80 a été mis en oeuvre avec succès dans mon interface DMX 013.
Tiens, tiens... j'ai oublié la liaison VCC de l'interface d'entrée RS485 (broche 8 de U2/MAX487). Erreur vite corrigée avec une queue de composant faisant office de strap entre broches 8 et 4 dudit composant. Bien entendu, le nouveau PCB est corrigé.
Pour changer un peu, j'ai soudé des LED CMS en apparence jaune qui s'allument en blanc. Cela fonctionne, comme en témoignent les photos suivantes où les canaux DMX activés sont les canaux 1, 3, 5, 7, 9 et 12. Une rupture des trames DMX (provoquée par extinction du contrôleur ou débranchement du câble) se traduit bien par l'extinction des 12 sorties, qui reprennent leur état normal dès le retour de trames valides.
Remarques concernant ce prototype :
Pro - Logiciels non disponibles en libre accès.
Interface DMX 003aa avec PIC 18F45K50 - (04/12/2022)
01/01/2023
- Ajout dessin circuit imprimé (PCB).
- Ajout photos prototype (testé OK).
04/12/2022
- Première mise à disposition