Éclairer le réseau (1)

Le matériel

. Par : Jean-Luc. URL : https://www.locoduino.org/spip.php?article288

Un éclairage de qualité met en valeur le décor, donne de la vie et magnifie les couleurs. À l’heure des microcontrôleurs, c’est également l’occasion de simuler l’aube et le crépuscule en faisant varier l’intensité lumineuse mais on peut aller plus loin.

Si par le passé les tubes fluorescents étaient la méthode d’éclairage préférée, ils sont de plus en plus remplacés par des rubans de LED. L’avantage pour ces derniers est le faible coût, la robustesse, la légèreté et la possibilité de faire varier l’intensité lumineuse en les pilotant via une PWM.

De la couleur

Reproduire autant que possible un éclairage naturel suppose déjà d’examiner les caractéristiques de cet éclairage. Les LED et à fortiori les rubans de LED sont données pour une couleur exprimée en kelvins (notés K). Ceci correspond à la couleur de la lumière émise par un corps noir chauffé à cette température (voir l’article Wikipedia sur le rayonnement du corps noir). Je reproduis ci dessous l’illustration de l’article Wikipedia (figure 1).

Figure 1 : Couleur émise par un corps noir sur une échelle linéaire de 800 à 12000 kelvins.
Figure 1 : Couleur émise par un corps noir sur une échelle linéaire de 800 à 12000 kelvins.
Le moniteur doit être régler avec le point blanc à D65 et un gamma à 2.2.

Une chose que l’on peut constater est que la physique définit la température d’une couleur à l’inverse de l’art pictural où une couleur chaude correspond à une température faible alors qu’une couleur froide correspond à une température élevée. Dans ce qui suit, la température d’une couleur désigne toujours sa caractéristique définie par la physique et non par l’art. Les températures disponibles pour les rubans de LED blanches vont de 2100 à 6000 K.

Le soleil peut être considéré comme un corps noir d’une température de 5800 K ; ce qui le situe proche de ce que les LED blanches de température la plus élevée peuvent fournir et qui correspond à la lumière du jour quand le soleil est au zénith par temps clair. Lorsque le soleil est à l’horizon, que ça soit à l’aube ou au crépuscule, la température correspondante est d’environ 2000 K. Par temps nuageux, du fait du filtrage des basses fréquences par les nuages, la température de la lumière est situées entre 6500 K, un blanc pur, et 8000 K, une lumière résolument bleutée.

Ça c’est sur le papier mais ce qui compte c’est l’impression sur le spectateur. Pour une journée ensoleillé, un blanc à 5800 K est violent même si il correspond à la réalité. Il faut le jaunir un peu et l’éclairage correspondant au soleil au zénith sera donc un peu moins chaud, et donc plus jaune, sur le modèle réduit.

L’idée générale est donc de combiner 2 modèles de ruban de LED, l’un blanc pur avec une température de 5000 K et l’autre blanc ambiant avec une température de 3000 K. Au lever du jour le blanc ambiant s’allume seul et monte en intensité suivi par le blanc pur pour que finalement les deux culminent à 100% à midi. Le processus inverse est appliqué pour aller de midi au crépuscule. Pour simuler les journées nuageuses, où la température de la lumière est plus élevée, le ruban de LED à 3000 K est atténué voire carrément éteint.

Mais ça ne suffit pas pour rendre la lumière dorée de l’aube et du crépuscule et la lumière blanc-bleu d’un ciel très couvert. Il faudrait pour cela ajouter respectivement du orangé et du bleu.

Que faire la nuit ? Laisser tout éteint me direz-vous. Mais dans le noir complet le réseau disparaît complètement et il ne reste que l’éclairage public et les feux des convois et de la signalisation, ce qui est dommage. Une autre solution est de maintenir un faible éclairage bleuté comme dans une nuit américaine tel que mis en œuvre au MiniWorld Lyon et sur le réseau de Philippe.

Comme l’a fait Philippe, nous utiliserons un ruban de LED équipé de pilotes WS2811 et alimenté en 12V, ce qui correspond à l’alimentation des rubans de LED blanches [1]. Un article sur mon blog explique le fonctionnement de ce type de système. Un ruban WS2811 est un peu différent. Ici le pilote des LED est dans son propre boîtier et pilote 3 LED tricolores (RVB) montées en série, d’où le 12V. La commande reste, elle, en 5V. La figure 2 montre un segment comportant un pilote WS2811 et 3 LED.

Figure 2 : Segment de 3 LED RVB et d'un WS2811
Figure 2 : Segment de 3 LED RVB et d’un WS2811
Ici les commandes destinées aux WS2811 circulent de la gauche vers la droite comme l’indiquent les flèches.

Chaque segment de 3 LED peut être coloré de manière différente. Chaque canal (Rouge, Vert et Bleu) peut être programmé avec 256 niveaux d’intensité ce qui au total donne 2563 ou plus de 16 millions de couleurs. Bien évidemment, pour un éclairage homogène comme l’ajout d’orangé ou de bleu ou l’éclairage bleuté de nuit, tous les segments seront programmés à l’identique mais il est également possible de simuler un ciel nuageux avec des éclaircies en ajoutant de l’orangé à certains endroits et du bleu à d’autres ou bien des effet lumineux comme la foudre par des flashs blanc-bleutés.

Tout un éventail de possibilités nous est offert.

La puissance

Alimenter quelques mètres de LED en PWM via une carte électronique dédiée demande quand même d’étudier un peu le sujet pour dimensionner correctement les composants. En effet, si on veut une puissance d’éclairage suffisante, le courant nécessaire sous 12V peut être conséquent.

Deux parties distinctes sont à éclairer sur mon réseau N :

  • La zone (A) avec la gare principale et le dépôt de 210 x 70 cm qui s’évase ensuite sur 140 cm de longueur pour atteindre 120 cm de largeur.
  • La zone (B) en îlot, avec la gare secondaire, de 200 x 120 cm

Les deux surfaces sont donc assez proches, environ 2,6 m2. Voir figure 3.

Figure 3 : Schéma de la pièce avec les deux zones (A) et (B) à éclairer.
Figure 3 : Schéma de la pièce avec les deux zones (A) et (B) à éclairer.

Concernant les LED, mon choix s’est porté sur :

J’ai choisi d’éviter d’acheter ces articles sur eBay car les caractéristiques ne sont en général pas disponibles et, en cas de réapprovisionnement, la constance des caractéristiques n’est pas assurée. De plus l’adhésif, bien que marqué 3M pour donner confiance, n’est manifestement pas du 3M car les rubans de LED que j’ai pu acheter sur eBay se sont invariablement décollés.

Ces rubans sont vendus en longueur de 5 m. Rien dans la datasheet n’indique qu’il est possible de les chaîner et, afin d’éviter de faire fondre les pistes d’alimentation intégrées, on s’en tiendra à une longueur maximum de 5 m.

Pour donner une idée, le flux lumineux d’un ampoule à incandescence de 100 W est d’environ 1300 lumens. Combiner les deux rubans correspond donc à un éclairage à incandescence de presque 200 W par mètre.

Pour le segment (A) une seule paire de rubans est nécessaire sur les 70 cm de la partie étroite et 2 sont utilisés sur la partie large. Le total est de 5 m par ruban. Deux paires sont utilisées sur chaque face du segment (B) plus une partie centrale avec aussi 5 m par ruban. Les éclairages des deux segments étant alimentés indépendamment, la plus grande consommation est celle du ruban blanc pur de 15 W/m, soit 6,25 A, arrondissons à 7 A.

Commuter cette intensité nécessite un transistor MOS conséquent. Qui peut le plus peut le moins et le choix s’est donc porté sur P-MOS d’Infineon capable de passer 19 A. Le montage pour le commuter est le montage 3 présenté dans « La PWM : Qu’est-ce que c’est ? (4) » excepté la diode roue libre (D2) qui n’est nécessaire que pour une charge inductive comme un moteur ou un solénoïde. Passer cette intensité sur les pistes du circuit imprimé nécessite aussi quelques calculs ; il va falloir du cuivre. Il existe plusieurs calculateurs en ligne, comme celui de Digikey. Les éléments à renseigner sont :

  • L’intensité, dans notre cas, 7 ;
  • L’épaisseur de cuivre. Chez JLCPCB, 2 épaisseurs sont proposées, la standard, 1 oz/ft2 et la double épaisseur, 2 oz/ft2 avec un surcoût. Commençons par 1 oz pour éviter le surcoût [2] ;
  • L’élévation de température due à la dissipation dans la piste, commençons par 1 °C ;
  • La température ambiante, mettons 25 °C ;
  • Enfin la longueur de piste. Dans notre cas, 100 mm semble être un maximum.

Le résultat qui nous intéresse est en bas à droite sous l’intitulé « Couches externes à l’air libre ». La largeur de piste nécessaire est 700 mils (millièmes de pouces) soit presque 1,8 cm. C’est énorme et impraticable. Le but est d’avoir une largeur de piste compatible avec des connecteurs au pas de 5,08 mm (200 mils), soit moins de 200 mils, disons 180 mils. Un premier remède est d’utiliser les deux faces de la carte pour doubler le conducteur et diminuer de moitié la largeur nécessaire mais on reste quand même à 350 mils. Le paramètre sur lequel on peut jouer est l’élévation de température, 1 °C c’est très peu. On peut sans problème tolérer 3 °C, voire un peu plus. Avec une élévation de 3 °C, la largeur tombe à 359 mils, un peu moins du double de 180 mils, notre largeur cible. La chute de tension sera de 38 mV, ce qui est tout à fait acceptable et ceci sans avoir recourt à l’épaisseur de cuivre de 2 oz/ft2.

En ce qui concerne le ruban de LED RVB pilotées par le WS2811, il est donné pour 7,2 W par mètre, soit, pour 5 m un courant maximum de 3 A. L’application des mêmes règles que pour les LED blanches permet d’être large. Les pistes conductrices intégrées au ruban permettent d’alimenter jusqu’à 10 m, le fabricant interdisant formellement une longueur supérieure. Avec 5 m, l’installation sera loin de la limite fatidique et donc d’une meilleure fiabilité.

L’ESP32

Je devrais plutôt dire « les ESP32 » tant le nombre de cartes et de variantes disponibles est important. Ces petites cartes embarquent un SoC [3] comprenant un processeur, éventuellement bi-cœur selon les modèles, de la mémoire et une radio : WiFi et Bluetooth. Leur coût raisonnable fait qu’elles sont très présentes dans les applications domestiques connectées.

Le choix de cette carte est motivé par la volonté de limiter le nombre de fils allant vers cet éclairage qui est nécessairement disposé en hauteur. Ici il n’y aura donc que l’alimentation électrique. Par ailleurs, le fait d’avoir l’éclairage connecté au WiFi du domicile permet de le piloter par divers terminaux : ordinateurs, téléphones ou tablettes.

Les différents modèles disponibles sont assez souvent mal documentés mais, en cherchant un peu, on s’y retrouve. La carte choisie pour ce projet est la MH-ET LIVE ESP32 MiniKit qui combine un grand nombre de broches avec un format compact. L’inconvénient est que ses doubles rangées de broches ne sont pas compatibles avec un prototypage sur breadboard. Il faudra des fils mâle-femelle pour faire les montages d’essai. Toutefois, on peut la trouver avec des connecteurs non soudés. Il suffit alors de souder des connecteurs femelles, ce qui permettra d’utiliser des fils mâle-mâle plus classiques. Cette carte est présentée ci-dessous à la figure 4 avec des connecteurs soudés d’origine.

Figure 4 : La MH-ET Live Minikit.
Figure 4 : La MH-ET Live Minikit.

Un des écueils est l’étrangeté de comportement de certaines broches. Quelques unes ne peuvent être utilisées qu’en entrée, d’autres sont pilotées par le logiciel interne de l’ESP32 au démarrage et d’autres, enfin, ont une influence sur le démarrage. La table qui suit ne reprend que les broches étiquetées IOn de la carte MH-ET LIVE ESP32 MiniKit.

Broche Type Fonction spéciale
IO0 Entrée avec Pullup / Sortie émet une PWM au démarrage
IO2 Entrée / Sortie LED embarquée
IO4 Entrée / Sortie
IO5 Entrée / Sortie émet une PWM au démarrage
IO16 Entrée / Sortie
IO17 Entrée / Sortie
IO18 Entrée / Sortie
IO19 Entrée / Sortie
IO21 Entrée / Sortie
IO22 Entrée / Sortie
IO23 Entrée / Sortie
IO25 Entrée / Sortie
IO26 Entrée / Sortie
IO27 Entrée / Sortie
IO32 Entrée / Sortie
IO33 Entrée / Sortie
IO34 Entrée
IO35 Entrée

Des information plus complètes peuvent être trouvées ici.

Le pilotage des LED blanches est fait avec une PWM. L’ESP32 possède 16 canaux PWM, numérotés de 0 à 15, qui peuvent être connectés à n’importe quelle broche d’entrée-sortie. Utiliser une PWM suppose donc d’avoir effectué cette connexion en utilisant la fonction ledcAttachPin dont le premier argument est la broche et le second le canal. Un canal PWM peut être configuré avec une fréquence et une résolution, c’est à dire le nombre de bits utilisés pour fixer le rapport cyclique de la PWM. Cette résolution peut prendre une valeur allant de 1 à 16 bits [4]. La fréquence est toutefois limitée par la résolution choisie et plus la résolution est élevée, plus la fréquence maximum est faible. La fonction ledcSetup remplit ce rôle. Son premier argument est le canal, le deuxième la fréquence souhaitée en hertz, il s’agit d’un nombre à virgule (double), et le troisième et dernier est la résolution. ledcSetup retourne un double donnant la fréquence effective qui peut donc être inférieure à la fréquence souhaitée si cette dernière n’est pas atteignable pour la résolution demandée. La table 1, ci-dessous, donne les fréquences maximum pour chaque résolution telles que retournées par la fonction ledcSetup.

Résolution fréquence maximum (en hertz)
1 40 000 000
2 20 000 000
3 10 000 000
4 5 000 000
5 2 500 000
6 1 250 000
7 625 000
8 312 500
9 156 250
10 78 125
11 39 062.50
12 19 531.25
13 9 765.62
14 4 882.81
15 2 441.41
16 1 220.70

La fonction analogWrite n’existe pas et est remplacée par la fonction ledcWrite dont le premier argument est le canal, et non la broche, et le second le rapport cyclique, de 0 à 2résolution - 1.

Pour régler l’intensité lumineuses des LED, il n’est pas nécessaire d’avoir une très haute fréquence. Il suffit d’être suffisamment rapide pour excéder la persistance rétinienne. 250 Hz ont été choisis. Pour l’intensité, plus la résolution est grande et mieux c’est. Une résolution de 16 bits sera donc choisie.

La carte

Une carte permettant de gérer 2 canaux a donc été élaborée. Chaque canal comprend un connecteur pour un ruban de LED blanc pur, un ruban de LED blanc chaud et un ruban de LED WS2811.

Comme indiqué ci-dessus, les LED blanches sont pilotées en PWM et on trouve donc 4 MOSFET et les composants auxiliaires pour piloter 4 PWM 12V.

L’ESP32 fonctionnant en 3,3V, le signal de données envoyé aux WS2811 est également en 3,3V. Or, il apparaît que les WS2811 ne sont pas à l’aise avec un signal en 3,3V. En effet certains rubans vont fonctionner mais d’autres non car 3,3V doit être à la limite de ce qui est compris comme un état haut. Il faut donc mettre un amplificateur entre la sortie de l’ESP32 et la ligne de données du ruban de LED afin de piloter cette ligne en 5V. N’importe quel ampli ne convient pas car le signal en question a une fréquence de 800kHz, ce qui est relativement élevé. Paul Stoffregen, de la compagnie PJRC qui commercialise les Teensy, recommande un 74HCT245 et c’est donc un modèle de la même famille, un 74HCT125 [5], qui a été sélectionné et qui fonctionne de manière tout à fait satisfaisante.

Nous reviendrons sur cette carte dans un des derniers articles de la série. Les prochains articles seront, en effet, consacrés au logiciel qui est ici plus complexe que le matériel et ce projet comprend plusieurs volets qui vont nous entraîner dans l’examen de plusieurs facettes de ce qui peut être déployé sur ESP32 :

  • Comment assurer un fonctionnement fiable d’un système qui utilise une communication radio par essence peu fiable ;
  • Comment mettre à jour le logiciel d’un système installé dans un endroit potentiellement peu accessible ;
  • Comment communiquer de manière souple avec le système.

[1On trouve également, mais plus rarement, des rubans de LED alimentés en 24V.

[2Examiner les unités de métrologie anglo saxonnes est toujours une aventure déconcertante. ft est le pied et donc ft2 un carré d’un pied de côté. Pour les oz c’est plus compliqué. En effet, il existe 2 « once » (symbole oz). L’oz av (pour « avoirdupois », je ne plaisante pas) et l’oz t (pour « troy »). L’oz av, soit 28,349523125 g est utilisé comme mesure de masse pour les marchandises ordinaires. L’oz t vaut, quant à elle, 31,1034768 g et est utilisée pour mesurer la masse des métaux précieux. Toutes deux viennent du Français (Pour plus de précisions, l’article sur le système avoirdupois sur Wikipédia et celui sur l’once troy). Le cuivre est-il considéré comme un métal précieux ? Cette page nous apprend que 1 oz/ft2 correspond à une épaisseur de cuivre de 34,79 µm. Un pied carré de cuivre de cette épaisseur a une masse de 28,98g, ce qui est plus proche d’1 oz av/ft2 que d’1 oz t/ft2. À moins qu’il existe un 3e type d’oz pour l’industrie électronique.

[3System On Chip : module incluant processeur(s), mémoire(s), accélérateur(s) dédiés, radio(s), ...

[4Les informations trouvées sur le Web sont, sur ce point, contradictoires. Sur certains sites on trouve une résolution maximum de 15 alors que sur d’autres c’est 16. L’examen des exemples et quelques essais que j’ai menés montre que la bonne valeur est 16.

[5Il est nécessaire d’utiliser un composant possédant des temps de propagation faibles et des entrées TTL, c’est à dire des entrées où le niveau haut est compatible avec un signal en 3,3V. Le 74HCT125 est un tampon non inverseur à 4 canaux possédant un temps de propagation d’environ 13ns sous 5V et un niveau d’entrée d’état haut de 2V, donc compatible avec les 3,3V de l’ESP32.