hu:arduino:adr_rgb_led

Differences

This shows you the differences between two versions of the page.

hu:arduino:adr_rgb_led [2017/09/22 13:26]
hu:arduino:adr_rgb_led [2022/04/21 15:02] ()
 1:  1:
 +{{ :wiki:arduino:ws812b.png?200|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 [[hu:comm:comdict#daisy_chain|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:
 +
 +  - 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
 +  - Továbbadja a jelsort a következő LED felé
 +  - 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
 +  - Vezérli a LED-et (digitális / [[hu:comm:start#pwm|PWM]] konverzió).
 +
 +A jelátvitel hasonlít egy szabványos [[hu:comm:start#uart|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:
 +
 +{{:wiki:arduino:ws2812_logic_0_1.png?400|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:
 +
 +{{:wiki:arduino:ws2812_logic_data.png?600|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 =====
 +{{ :wiki:arduino:ws2811.png?200|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 =====
 +
 +  * 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
 +
 +
 +{{ :wiki:arduino:ws2812.png?200|WS2812}}
 +===== WS2812 =====
 +{{anchor:ws2812b}}
 +A WS2812 egy [[hu:aktor:leds#smdled5050|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ó ====
 +
 +  * LED: RGB [[hu:aktor:leds#smdled5050|SMD LED 5050]]
 +  * Színárnyalatok: 256
 +  * Üzemi feszültség: 5V
 +  * Teljesítmény LED-enként: 0.3W +/- 0.01%
 +
 +==== WS2812 portjai ====
 +
 +  * **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. 
 +
 +==== WS2812 bekötése ====
 +
 +  - 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
 +  - 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
 +  - Az első modul és az Arduino közé az adatvonalon is érdemes egy 220 - 470 Ω közötti ellenállást beépíteni
 +  - 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).
 +
 +{{:wiki:arduino:ws2812_wiring.png?600|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) [[hu:comm:comdict#daisy_chain|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 =====
 +{{anchor: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  \\