Dernière mise à jour :
23/02/2014
Présentation
Ce
gradateur
de lumière multi-voies permet
de piloter de façon individuelle le taux de luminosité de 8 lampes à
LED basse tension via des messages de contrôle au protocole
DMX.
Il fait usage d'un PIC 16F628A ou 18F2420 pour le décodage des trames
DMX et pour l'élaboration des signaux PWM de la section gradateur. Deux
versions sont proposées :
-
Schéma 014
: version simplifiée avec PIC 16F628A, adresses DMX fixes
(#1 à #8).
-
Schéma 014b
: version "normale" avec PIC 18F2420, adresses DMX
paramétrables
(adresse de base #0 à #255).
Toutes les sorties se font en mode
PWM
/ MLI et sont de type TTL. Voir aussi
Interface
DMX 003 (12 sorties logiques ou gradateur).
Avertissement
Les schémas proposés ici ne conviennent pas pour des
projecteurs alimentés en 230 V, que
ces derniers aient une ampoule à incandescence ou des LED. Ils sont
prévus pour la commande d'ampoules filament ou LED basse tension (5 V,
12 V ou 24 V par exemple).
Schéma 014 - avec PIC 16F628A
Le schéma qui suit comporte la section alimentation et la section de
décodage des données
DMX. Il faut lui ajouter ce qu'il faut en sortie selon la charge que
vous prévoyez d'y mettre, nous verrons ce point en détail plus loin.
Coeur du montage
Basé
sur un microcontrôleur de type PIC 16F628A, les données DMX reçues sont
décodées et les valeurs transmises dans les 8 premiers canaux DMX sont
utilisées pour délivrer un signal PWM en rapport. Ainsi avec une valeur
DMX de 0 le signal PWM est à 0%, et avec une valeur DMX de 255 ($FF) le
signal PWM est à 100%. La sortie Out_1 correspond au canal DMX N°1 et
la
sortie Out_8 correspond au canal DMX N°8. La fréquence des signaux de
sortie PWM est voisine de 100 Hz, le risque que l'oeil humain
voit
les LED scintiller est minime. Je me demande même si dans une certaine
mesure ces huit sorties ne seraient pas
aptes à piloter la vitesse de petits moteurs à courant continu (100 Hz
peut être un peu faible pour certains moteurs, mais soyons fous).
Interface électrique DMX
L'interfaçage avec la liaison RS485 (DMX) est confié à un MAX487.
Adaptateur
RS485
J'ai utilisé le même
adaptateur
que celui utilisé pour mon
contrôleur
DMX 001.
Sauf que là le système fonctionne dans le sens inverse, mode réception
en permanence et jamais de mode émission. Les deux broches 2 et 3 du
MAX487 sont toutes deux reliées à la broche RB7 du PIC, ce dernier
autorisent les entrées DMX à entrer dans le PIC à l'issue de
l'initialisation principale. La résistance R3 est
montrée câblée mais dans la pratique il est plus judicieux de la mettre
en série avec un cavalier... ou de ne rien mettre du tout et de prévoir
une autre prise XLR sur laquelle peut être enfichée une terminaison
(bouchon 120 ohms).
Alimentation
L'alimentation nécessaire est de +5 V pour la partie principale du
montage, une tension un peu plus élevée est requise pour l'alimentation
des LED commandées. La valeur de cette tension "plus élevée" dépendra
de ce que vous voulez utiliser comme systèmes d'éclairage. Si c'est
pour alimenter une seule LED par sortie, vous pouvez rester avec la
valeur 5 V. Si vous voulez au contraire constituer plusieurs branches
série / parallèle de LED, une tension de 12 V à 18 V peut être
envisagée. Le régulateur utilisé ici pour fournir le 5 V au PIC
supporte en entrée une tension max de 35 V. Vous pouvez donc élaborer
une tension supérieure en amont simplement en choisissant un
transformateur d'alimentation adapté à vos besoins (par exemple un
modèle 230 V / 15 V). La tension redressée, filtrée et avant régulateur
5 V servira ainsi pour les guirlandes de LED, et la tension abaissée à
5 V ne servira que pour les deux circuits intégrés PIC et MAX.
Interface de puissance
Comme dit auparavant, point besoin d'interface additionnelle si le but
n'est que d'alimenter quelques LED. En revanche, un transistor
additionnel est requis pour chaque sortie si vous voulez y tirer plus
de 20 mA. Et là, vous avez le choix, ne serait-ce qu'en terme de
technologie : transistor bipolaire (2N2222 ou autre plus costaud comme
le TIP122) ou transistor MOSFET (BUK101-50GL ou STP36NF06L par
exemple). Voici un exemple d'interface utilisable avec ce gradateur 014.
De
bien gros transistors MOSFET pour de simples LED... sauf s'il s'agit de
LED de puissance ou si leur nombre dépasse les 5000. Je plaisante bien
sûr, mais le ton est donné : à vous de "sentir" votre besoin.
Schéma 014b - avec PIC 18F2420/18F2520
La section
alimentation secteur n'est pas représentée sur ce nouveau schéma
puisque de ce côté rien ne change par rapport au précédent.
Il en est de même pour l'interface de sortie, qui là aussi est la même.
La seule chose qui change est le nombre de broches du PIC, plus élevé
ici et qui permet de raccorder quelques petits interrupteurs
(microswitches) ou straps pour configurer l'adresse DMX de base.
Adresses DMX
Alors
qu'avec la version 014 à base de 16F628A on ne dispose pas de
configuration pour
l'adresse de base, cette version 014b permet de préciser à partir de
quelle adresse le système doit réagir. Les huit adresses restent
contigues dans
tous les cas. Si l'adresse de base est spécifiée est
1,
alors les 8 adresses DMX qui correspondent aux 8 canaux de ce gradateur
vont de 1 à 8. Si l'adresse de base est spécifiée est 13,
alors
les 8 adresses DMX qui correspondent aux 8 canaux vont de 13 à 20.
L'adresse de base se définit en binaire grâce aux petits interrupteurs
du "pavé" DSW1 et peut adopter n'importe quelle valeur comprise entre 0
et 255 (ça ne va pas plus loin). L'adresse est définie par la position
des interrupteurs câblés sur les huit entrées du PORTB du PIC (RB0 à
RB7), selon la logique implacable du "décimal codé binaire".
L'interrupteur relié à RB0 vaut la valeur 1, celui relié sur RB1 vaut
2, celui relié sur RB2 vaut 4, etc jusqu'à celui relié sur RB7 qui vaut
128. Une adresse de base de "3" se traduit donc par activation des
entrées RB0 (valeur 1) + RB1 (valeur 2). Pour simplifier le montage,
j'ai activé le pullup du PORTB et les interrupteur sont "actifs" quand
ils font la liaison avec la masse, mais les états logiques des broches
du PORTB sont inversés à la lecture, dans le logiciel. Ainsi sur le
schéma précédent, l'adresse est égale à 1 puisque seul l'interrupteur
câblé sur RB0 est en position ON (fermé) et que donc seule la broche
RB0 est à l'état bas.
Des sorties en tension ?
On peut transformer le signal PWM en une
tension (presque) continue, en ajoutant un filtre passe-bas qui "gomme"
la périodicité des signaux pour n'en garder que la valeur moyenne. Ce
filtre passe-bas peut être très simple, puisqu'on peut se contenter
d'un réseau RC, c'est à dire une Résistance et un Condensateur, comme
le montre le schéma suivant (avec ce schéma, on cherche à convertir en
tension trois signaux PWM différents Out1, Out4 et Out8).
Seulement
voilà, un filtre aussi simple ne peut prétendre à délivrer une
source de tension parfaitement propre (j'aime le mot
parfaitement,
qu'on cherche souvent sans jamais le trouver). Le signal PWM possède
ici une fréquence voisine de 100 Hz. C'est une fréquence assez élevée
pour la persistence rétinienne mais qui reste tout de même assez basse
dans l'absolu. Filtrer une telle fréquence pour en obtenir sa
moyenne sous forme de tension continue pose le problème de la
fréquence
de coupure du filtre qui doit être basse et qui impose des composants
de valeur élevée. Partons avec un exemple concret, où nous disposons de
trois signaux PWM ayant une fréquence de 100 Hz et des rapports
cycliques de 10% (Out1), 50% (Out4) et 95% (Out8).
Imaginons
que nous n'y connaissions rien et qu'on cherche les valeurs idéales par
tatonnement. Ca ne fait pas très sérieux mais même dans le monde
professionnel on doit parfois y passer. Donnons à ces composants RC les
valeurs respectives de 100 kO et de 100 nF (valeurs adoptées sur le
schéma proposé ci-avant). Voici ce que nous obtiendrions.
Oups
! ce n'est pas vraiment ce qu'on appelle des tensions
continues. On a
certes fait un peu de ménage puisque les trois signaux ne se balladent
plus entre le 0 V et le +5 V. Mais il faut aller plus loin, et donc
filtrer un peu plus en descendant la fréquence de coupure du filtre (le
calcul nous aurait montré que 100 kO et 100 nF étaient insuffisants,
avant même d'avoir essayé). Augmentons la valeur des condensateurs de
100 nF à 1 uF, ce qui correspond à une fréquence de coupure des filtre
dix fois plus basse.
C'est
déjà plus proche de ce qu'on souhaite obtenir, n'est-ce pas ? Mais on
peut encore mieux faire, et nous allons maintenant augmenter la valeur
des résistances, de 100 kO à 470 kO.
Eh
bien voilà ! Nous disposons maintenant d'une tension continue
proportionnelle au rapport cyclique du signal PWM. Mais, car il y a un
mais, la tension attendue met beaucoup plus de temps à arriver. Vous
devez donc trouver un compromis entre taux de filtrage et temps de
réaction. Ne pourrait-on pas bénéficier d'un temps de réaction plus
élevé en même temps qu'un filtrage correct ? Mmm... possible. Et si
vous faisiez un petit tour du côté des filtres actifs, notamment sur la
page
Convertisseur
PWM / Tension 001 ?
Remarques importantes
Dans
le cas où un simple filtre RC vous suffit (par exemple combinaison 100
kO + 1 uF ou 470 kO + 220 nF), n'oubliez pas que l'impédance d'entrée
du circuit qui va suivre va jouer de façon notable sur la valeur de
tension obtenue au finale. En effet, la résistance "série" du filtre,
comme elle est élevée, va former un pont diviseur de tension avec le
circuit suivant, et ce pont diviseur ne peut pas être négligé. Le
circuit qui fait suite doit posséder une impédance d'entrée bien plus
élevée, au moins 10 fois la valeur de la résistance série du filtre
(impédance d'entrée d'au moins 1 MO si résistance du filtre de 100 kO).
Une solution élégante consiste à intercaler un AOP en suiveur de
tension (voir en multiplicateur de tension si vous voulez
étendre
la plage de la tension de sortie - de 0 V à +10 V par exemple). Mais
attention là encore, vous devez utiliser un AOP dit "rail-to-rail" pour
coller au mieux aux valeurs extrêmes 0 V et tension max (+5 V
dans
notre cas).
Prototypes
Réalisés de mon côté pour les deux versions 014 (avec 16F628A) et 014b (avec
18F2520). Les deux fonctionnent bien.
Sur la première des photos, on voit le
PIC sous test (18F2520) sur la platine de développement EasyPic. Sur
la dernière photo, on peut voir que les LED n'éclairent pas toutes avec
la même intensitée. Normal puisque leur rapport cyclique d'allumage est
conforme à la position des potentiomètres à glissière du contrôleur DMX
utilisé pour les tests (avant-dernière photo). Petite
remarque, en passant : j'ai oublié d'éteindre le controleur DMX durant
une des phases de reprogrammation du PIC, pendant laquelle ce
dernier recevait
toujours les trames DMX sur son entrée Rx. Après chargement du fichier
hex, plus rien ne répondait, j'ai du éteindre et rallumer la platine de
développement pour que ça reparte. J'avoue avoir eu une petite suée.
Vidéo de démonstration
Pour la vidéo, j'ai remplacé le bargraphe de 10 LED rouges par
6 LED blanches 5 mm.
Vidéo
YouTube
Remarque : les LED sont un peu trop rapprochées les unes des autres et on ne
voit pas toujours très bien celles qui s'allument ou s'éteignent. C'est
pourquoi à certains endroits de la vidéo j'ai ajouté une petite
incrustation pour mieux les voir.
Prototype de Olivier H.
Olivier a aussi réalisé ce gradateur... merci à lui pour ses retours positifs, photos et enthousiasme !
Commentaires d'OlivierMes
appareils DMX sont basés sur un produit =S=, dont la carte a été un peu
modifiée pour libérer les E/S, changer le Quartz, recâbler le DIP
Switch. J'y ai ajouté une carte (ma première au perchlo !) comprenant
d'une part votre adaptation RS485 pour commander le PIC, et d'autre
part de la commutation 12V par MOS ou NPN reliée à quelques
sorties du PIC. Ces spot contiennent un flash à LEDs rouges (d'origine
sur la carte), auquel j'ai ajouté des LED blanches HL ; je les
remplacerai par 3x1W pour que ça pète plus. A l'arrière, il y a 2
sorties 12V (phoenix 2 pts) pilotées par MOS pour alimenter des
éclairages annexes : j'ai une barre de LED blanches pour faire stobo,
un Bob l’éponge gonflable éclairé, une tête de mort en plastique mou
avec 3 LEDS dedans. Sur cette version de base, seulement 4 canaux DMX
(ou sorties PIC) sont utilisés.Dans le même principe, j'ai également piloté des guirlandes 220V à LED (avec des LAA120) - 8 canaux utilisés et un spot RGB+ Blanc - 4 canauxTout
ça est piloté avec le logiciel QLC+ que je trouve très ergonomique et
complet; mes équipement ont été facilement intégrés avec le "Fixture
Editor" ; ce logiciel fonctionne en application portable > très
pratique. Grâce à votre support, j'ai pu
développer un kit d'éclairage très performant pour mes soirées ; un
projet d'un an enfin abouti ! Je ne saurai jamais assez vous remercier.
Les amis aiment beaucoup l'ambiance. On a notamment organisé une Beach
Party en plein air entièrement alimentée en batteries 12V ; un grand
succès. De nombreuses idées sont en attente; c'est surtout une question
de temps pour s'y mettre (vous devez connaitre ça).Heureux d'avoir pu vous aider !
Liaison DMX sans fil
Le prototype à base de 18F2520 a été testé avec succès avec une liaison DMX filaire et avec une
liaison DMX HF (sans fil) en utilisant un couple émetteur/récepteur
dédié DMX du commerce.
Comme
les modules HF du commerce dédiés DMX coûtent cher, j'ai commencé à
travailler sur des modules HF (TxRx) économiques à base de nRF24L01 ou
CC2500 pour voir ce qu'on pouvait en tirer (en terme de stabilité et de
portée). Je me suis finalement focalisé sur des modules équipés d'un
nRF24L01 associé à un ampli HF (nRF24L01+PA+LNA V3.1), que j'ai du
câbler sur un bout de CI d'expérimentation pour pouvoir les placer sur
ma platine EasyPic et sur une plaque sans soudure.
A
l'heure qu'il est (07h22 du 02/04/2014), j'arrive à transmettre 30
canaux DMX avec cet ensemble émetteur-récepteur HF (proto sur les deux
dernières photos, récepteur sur platine EasyPic7 et émetteur sur plaque
sans soudure), la longueur des paquets de données traités par le chip
nRF24L01 est limitée à 32 octets. Pour envoyer plus de 32 canaux DMX,
il faut donc envoyer plusieurs paquets consécutifs, le premier paquet
pour les canaux 1 à 30, le second paquet pour les canaux 31 à 60, etc.
Dans un premier temps, je me limiterai à 120 canaux DMX, même si dans
la théorie rien n'interdit de diffuser les 512 canaux de la normes (il
faudrait 18 paquets de 30 canaux ou 17 paquets de 31 canaux).
Logiciel du PIC
Fichier binaire compilé (*.hex)
prêt à flasher dans le PIC, dans l'archive zip que voici :
Gradateur
lumiere 014(b) - 16F628A / 18F2520
(version du 21/02/2014)
Si vous souhaitez
recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC
- Sources.
Circuit imprimé
Modèle 014bb (identique au 014b mais avec les
transistors de puissance MOSFET sur le CI) réalisé en quatre
exemplaires, pour un professionnel de la lumière (pour spectacle
théâtre / plateaux TV).
Historique
05/01/2015
- Ajout photos prototype et commentaires d'Olivier H., que je remercie.
23/02/2014
- Modification programmes 014
(16F628A) et 014b (18F2520) pour permettre un fonctionnement correct
quel que soit l'ordre d'allumage des appareils (gradateur ou source
DMX). Schémas correspondants mis à jour (liaison ajoutée entre le PIC et le MAX487).
18/12/2013
- Nouvelle version 014bb réalisé pour une application spectacle
théâtre / plateaux TV, où un même CI regroupe le PIC, la régulation
alim et les transistors FET de puissance qui pilotent des rubans LED
RVB.
02/09/2012
- Ajout discussion sur transformation signal PWM en tension continue
proportionnelle.
08/04/2012
- Première mise à disposition.