Tags:
create new tag
view all tags

LEDs

Introduction

Notre kit d'expérience contient trois types d'LEDs différentes :

  • LED mono-couleur
  • LED multi-couleurs, LED rgb (red,green,blue)
    Ceci est un LED qui contient trois LEDs avec les couleurs de base rouge, vert, bleu, dans un mème boitier.
  • LED RGB du type WS2812
    Il s'agit d'un LED rgb, digital adressable, qui est utilisé dans des chaines à LED

LED mono-couleur

Sur la plupart des cartes micro-contrôleurs on trouve un LED programmable par l'utilisateur (user LED)

wroverLed.png

Souvent cette LED est connectée sur le pin GPIO 2, mais d'autres connexions existent (la carte CPU WeMos D1 mini WROVER-B, sur la photo ci-dessus, utilise GPIO 19)

Si on utilise une LED extérieure, on doit limiter le courant qui traverse la LED avec une résistance (valeurs typiques : 330 ohms, qui, avec une tension GPIO de 3.3 V, limite le courant à 10 mA).

leds.png ledschematics.png

Changer l'intensité de la lumière de la LED avec la modulation de largeur d'impulsion

La LED est contrôlée par un seul pin GPIO qui peut prendre que de valeurs zéro, avec la LED éteinte, ou 1, avec la LED en intensité de lumière maximale. Pour changer l'intensité de lumière, il faut changer le courant qui traverse la LED. Ceci peut être accompli si, au lieu d'un signale constant, le pin GPIO émet une fréquence (la fréquence de modulation) et on change le rapport cyclique du signal (duty cycle). Ce principe s'appelle Pulse Width Modulation ou PWM en anglais.

Si la fréquence est assez élevée et avec la persistance de la LED on observe seulement le courant moyen comme variation de l'intensité de lumière. L'intensité de lumière peut alors être changé en changeant le "duty cycle" du signal PWM.

10kHz10.png 10kHz25.png
10kHz50.png 10kHz75.png
10kHz90.png  
L'illustration ci-dessus montre le signale PWM (mesuré avec un autre pin GPIO programmé en entrée et avec un taux d’échantillonnage de 4 us entre les enchantions) avec un cycle de service (duty cycle) de 10%, 25%, 50%, 75% et 90%.

La barre à LED

La barre à LEDs contient 10 LEDs aligné dans un seul boitier. Chaque LED est contrôlée par un pin GPIO de la même manière que celui décrit dans les sections dessus. Bien sûr, les LEDs peuvent aussi être contrôlées en PWM. Néanmoins, if faut noter que la barre à LED contient 10 LEDs mais le nombre de signaux PWM dans MicroPython est limité à 8.

ledbar.png

Les afficheurs sept segments

Les afficheurs sept segments fonctionnent un peu comme la barre à LED avec un arrangement des LEDs en forme de "8". Ils consistent en 8 LEDs: les sept segments a..g et le point décimal dp. En allument une certaine combinaison de LEDs, on peut afficher tous les digits hexadécimaux. Le kit fourni un module à un seul digit et un autre à quatre digits. Contrairement à la barre à LEDs soit toutes les anodes des LEDs sept segments sont connecté ensemble (type anodes communes) soit toutes les cathodes (type cathodes communes).

sevenSeg1Digit.png sevenSeg1DigitPinout.png
Les connexions de deux types du module sept segments n'est pas très différents. L'anode commune est connecté à Vcc, tandis que la cathode commune se connecte sur la masse. Les autres pins sont connectés avec des pins GPIO via la résistance de limitation de courant.

Les afficheurs sept segments à quatre digits

Si on étudie bien le schéma de connexion ci-dessous, on observe que tous les même segments des digits sont connecté ensemble. Ceci a comme conséquence qu’à un moment donné un seul digit peut être affiché. Si on affiche ce digit pour une courte instance avant de changer au digit suivant et on poursuit ce principe cycliquement pour tous les digits, et avec la persistance des LEDs, l'observateur voit tous les quatre digits affichés en même temps.

four_digit_seven_seg.png

Pour faire marcher l'afficheur sept segments à quatre digits, les valeurs des digits individuels doivent alors être rafraîchi en permanence. Ceci peut être accompli dans un système multitâche (voir asyncio dans MicroPython) ou une tache s'occupe du rafraichissement de l'afficheur tandis une autre tache permet d'exécuter d'autres fonctions.

La LED rgb

La LED rgb existe en deux variants : la LED à anode commune et la LED a cathode commune dont les connexions sont montrés ci-dessous :

rgbLed.png ledrgb.png
Les pins des composants de couleurs rgb ("-" dans le cas de l'anode commune et "+" dans le cas de cathode commune) sont connectés à des pins GPIO. Le pin commun est connecté à Vcc (3.3 V) dans le cas de l'anode commune et à la masse dans l'autre cas.

Pour allumer le composant de couleur le pin GPIO doit être tiré à la masse pour l'anode commune et mis à Vcc pour la cathode commune.

La LED WS2812

Cette LED est accédé avec un protocole de communication qui permet d'adresser chaque LED dans une chaine de LEDs individuellement. Dans notre cas nous utilisons une chaîne avec sept LEDs (ou huit LEDs pour le module dans le kit Freenove) :

ws2812.pngledRingBack.png

Le WS2812 est décrit par la fiche technique : https://cdn-shop.adafruit.com/datasheets/WS2812.pdf

Chaque LED de la chaine est contrôlé avec 8 bit de résolutions pour chaque composant de couleurs ce qui demande un total de : 3 * 8 * nombre d'LEDs, de bits. Ces données sont envoyées en série via une seule ligne de données. Chaque LED a un pin de donnée en entrée et un autre en sortie.

ws2812data.png

La première LED de la chaine considère les premières 24 bits comme information de couleur pour elle et passe les autres bits à la LED suivant. Les données sont envoyées avec une vitesse de 800 kbit/s et nécessite un timing bien précis.

MicroPython fournit un pilote "NeoPixel" pour ce type de chaine à LED ce qui facilite largement l'usage de ces LEDs (voir la section NeoPixel et APA106 driver dans https://docs.micropython.org/en/latest/esp32/quickref.html.

La roue des couleurs

Les LEDs rgb permettent de montrer tout un spectre de couleurs en changeant l'intensité de ses composants r,g,b. Le WS2812 reçoit ces valeurs d'intensités en digital via son protocol de communication tandis qu'on utilise des signaux PWM dans le cas de l'LED rgb simple.

On peut afficher toutes les couleurs de l'arc-en-ciel en suivant la roue des couleurs :

color-wheel-800px.jpg

Si on observe bien la roue des couleurs, on voit que dans les premiers 60 dégrées la composante rouge reste au maximum, la composante bleue est toujours zéro et seulement la composante verte croit d’une intensité 0 au maximum. Dans les 60 dégrées suivant, vert et bleu restent constants et la composante rouge décroît du maximum à zéro, etc.

-- Uli Raich - 2021-06-19

Comments

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng 10kHz10.png r1 manage 10.1 K 2021-06-19 - 13:02 UliRaich  
PNGpng 10kHz25.png r1 manage 10.3 K 2021-06-19 - 13:02 UliRaich  
PNGpng 10kHz50.png r1 manage 10.1 K 2021-06-19 - 13:02 UliRaich  
PNGpng 10kHz75.png r1 manage 10.3 K 2021-06-19 - 13:02 UliRaich  
PNGpng 10kHz90.png r2 r1 manage 10.5 K 2021-06-19 - 13:02 UliRaich  
PNGpng 5kHz10.png r1 manage 7.3 K 2021-06-19 - 12:57 UliRaich  
PNGpng 5kHz25.png r1 manage 7.3 K 2021-06-19 - 12:57 UliRaich  
PNGpng 5kHz50.png r1 manage 7.3 K 2021-06-19 - 12:57 UliRaich  
PNGpng 5kHz75.png r1 manage 7.3 K 2021-06-19 - 12:57 UliRaich  
PNGpng 7segment_display.png r1 manage 87.6 K 2021-06-21 - 12:26 UliRaich  
JPEGjpg color-wheel-800px.jpg r1 manage 110.3 K 2021-06-21 - 12:54 UliRaich  
PNGpng four_digit_seven_seg.png r2 r1 manage 222.9 K 2021-07-24 - 19:37 UliRaich  
PNGpng ledRingBack.png r1 manage 348.5 K 2021-06-28 - 09:38 UliRaich  
PNGpng ledbar.png r1 manage 113.9 K 2021-06-19 - 15:48 UliRaich  
PNGpng ledrgb.png r1 manage 33.5 K 2021-06-19 - 11:12 UliRaich  
PNGpng leds.png r2 r1 manage 132.4 K 2021-06-19 - 10:58 UliRaich  
PNGpng ledschematics.png r1 manage 7.2 K 2021-06-19 - 10:33 UliRaich  
PNGpng rgbLed.png r1 manage 58.9 K 2021-06-19 - 11:12 UliRaich  
PNGpng sevenSeg1Digit.png r1 manage 17.0 K 2021-06-21 - 12:15 UliRaich  
PNGpng sevenSeg1DigitPinout.png r2 r1 manage 62.8 K 2021-06-21 - 12:17 UliRaich  
PNGpng wrover.png r1 manage 250.8 K 2021-06-19 - 10:32 UliRaich  
PNGpng wroverLed.png r1 manage 260.7 K 2021-06-19 - 10:47 UliRaich  
PNGpng ws2812.png r1 manage 292.6 K 2021-06-19 - 12:29 UliRaich  
PNGpng ws2812data.png r1 manage 9.9 K 2021-06-19 - 15:23 UliRaich  
Edit | Attach | Watch | Print version | History: r10 < r9 < r8 < r7 < r6 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r10 - 2021-07-24 - UliRaich
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback