hu:arduino:adr_rgb_led

Címezhető RGB LED-ek

Címezhető RGB LED-ek

Az RGB LED-ek vezérlése 3 analógjelet igényel. Nyilván ez nagyszámú LED esetén már nem megvalósítható, így ezt a feladatot decentralizálni kell. A Daisy Chain rendszerben egymás után felfűzött modulokon, minden LED mellett található egy vezérlőegység, mely négy feladatot hajt rögtön végre:

  1. Fogadja a vezérlőegységtől, vagy az előző LED-től érkező jelsort, ebből leválasztja/kiválasztja a rá vonatkozó részt
  2. Továbbadja a jelsort a következő LED felé
  3. Dekódolja a jellemzően 3 byte-nyi színkombináció információt (1 byte / szín), összesen 16,8 millió színárnyalat
  4. Vezérli a LED-et (digitális / PWM konverzió).

A jelátvitel hasonlít egy szabványos UART interfészhez, de nem az. Ez a kommunikáció rendkívül időspecifikus, a jelkódolás gyakorlatilag a jeltartási időkön keresztül történik:

A WS2812 logikai 0-ja és 1-e
A WS2812 logikai 0-ja és 1-e

Az adatok 24 bites csomagokban érkeznek az egységekhez, az adatsorokat egy 50μs reset zárja. Minden egység levágja a saját adatsorát a telegrammból, és a maradék-részt továbbítja csak:

A WS2812 telegrammja
A WS2812 egységenként csökkenő telegrammja

Nyilván a lenti megoldások némileg eltérnek egymástól. Jelenleg az ár / érték arányban a WS2812 sorozat áll nyerésre.

WS2811 A WS2811 címezhető LED rendszer a WS2801 megoldás továbbfejlesztett változata. Az ott alkalmazott, de lassúnak bizonyult SPI kommunikációt leegyszerűsítették egy speciális, időzítés alapú soros protokollra. Az átvitel 400 vagy 800 kHz-en történik. A WS2801 az átvitelhez 2 adatvezetéket használ, míg a WS2811-nek egy is elegendő. Minden LED mellett található egy címezhető WS2811 IC, mely egyrészt az adatvezeékről érkező színkombinációt tárolja, másrészt vezérli az RGB LED-et.

  • A WS2811 külön tartalmazza az IC-t és a LED-et, míg a WS2812-ben integrálásra került a két rész
  • A WS2811 maximális feszültsége 7V, míg a WS2812 esetén ez 5,3V
  • A WS2812 a 11 továbbfejlesztett változata, az IC-k szoftverén is javítottak

WS2812

A WS2812 egy 5050-es SMD LED panelbe ágyazott WS2811 chip. Minden WS2812 tudja a 800 kHz-es jelátvitelt, így ezeknél ezt érdemes alkalmazni.

  • LED: RGB SMD LED 5050
  • Színárnyalatok: 256
  • Üzemi feszültség: 5V
  • Teljesítmény LED-enként: 0.3W +/- 0.01%
  • 5V: ez a szabályzott feszültség maradjon 5 és 7V között. Alacsonyabb feszültségszintnél csökken a fényerő, 7V-nél magasabbnál pedig sérülhetnek a modulok
  • GND: 0V. Az első modul és az Arduino közé a gnd és az 5v közé érdemes egy 100µF - 1000µF közötti kondenzátort beiktatni
  • DI: a vezérlő vagy az előző modul felől érkező jelvezeték. Az első modul és az Arduino közé az adatvonalon is érdemes egy 220 - 470 Ω közötti ellenállást beépíteni.
  • DO: a következő modul felé a jelvezeték. Utolsó modul esetén egyszerűen szabadon kell hagyni.
  1. A modulokat egymással össze kell kötni, egyszerűen: gnd↔gnd, 5v↔5v, do↔di, a címzés az összekötés sorrendjében fog működni
  2. Az első modul és az Arduino közé a gnd és az 5v közé érdemes egy 100µF - 1000µF közötti kondenzátort beiktatni
  3. Az első modul és az Arduino közé az adatvonalon is érdemes egy 220 - 470 Ω közötti ellenállást beépíteni
  4. Az Arduno Pin 4-et össze kell kötni az első modul DI-jével. (nyilván, ha a Pin 4 nem megy, a kódot kell hozzápasszitani a változáshoz).

WS2812 bekötése
A fenti példán a Sparkfun WS2812 moduljainak az Arduino-hoz kötése látható

Az Adafruit Neopixel könyvtár innen tölthető le: https://github.com/adafruit/Adafruit_NeoPixel

Az Adafruit Neopixel példaprogramok: https://github.com/adafruit/Adafruit_NeoPixel/tree/master/examples

A letöltött programokban a pin számát és az összekötött LED modulok számát is meg kell adni.

Forrás: https://learn.sparkfun.com/tutorials/ws2812-breakout-hookup-guide

Ez a klasszikus megoldás a címezhető LED-ekre. Ez még SPI kommunikációt alkalmazott, az órajelet PWM-mel állította elő és RGB csatornálat tartlamazott, az alegységeket (kvázi az RGB LED-eket) Daisy Chain rendszerben fűzte össze. Ugyanennek a megoldásnak az LPD8806 egy szabadalmaztatott és rendkívül rosszul dokumnetált változata, melyet az Adafruit integrált a rendszerébe.

Mindkét megoldás viszonylag bonyolult és lassabb, mint a WS2811/WS2812.

Lásd fent, WS2801.

  • hu/arduino/adr_rgb_led.txt
  • 2022/04/21 15:02
  • ()