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

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.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 de 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.

-- 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 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 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 | r5 < r4 < r3 < r2 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r3 - 2021-06-19 - UliRaich
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback