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

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 és WS2812 sorozat közötti különbségek

WS2812

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.

WS2812 specifikáció

WS2812 portjai

WS2812 bekötése

  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ó

WS2812 könyvtár / szoftver

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

WS2801

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.

LPD8806

Lásd fent, WS2801.

Források

http://www.doityourselfchristmas.com/wiki/index.php?title=Different_Styles_of_Pixels
https://digistump.com/board/index.php?topic=991.0