WS2812B, SK6812 e WS2813: quanta corrente chiedono, quale alimentatore, condensatore e resistenza sui dati, segnale a 3,3 V e strisce lunghe alimentate in più punti
· A cura di Ada Intelisano · redazione tecnica di informaticait.it
Un anello da dodici LED si accende anche dal pin 5V di Arduino. Un metro di striscia da 144 LED, a bianco pieno, secondo Adafruit arriva invece a 8,6 A. Quasi tutti i guai con i NeoPixel (colori sbagliati in fondo alla striscia, primo LED bruciato, effetti che impazziscono) nascono dall'alimentazione e da un paio di collegamenti fatti male. Qui trovi quelli da non sbagliare, con i dati dei datasheet e della guida ufficiale di Adafruit. Strisce, anelli, matrici e LED singoli sono in LED indirizzabili NeoPixel.
Cosa sono
NeoPixel è il nome che Adafruit dà ai LED RGB con un piccolo circuito di comando all'interno: WS2812B di Worldsemi, SK6812 e compatibili. I contatti essenziali sono quattro: alimentazione, massa, ingresso dati (DIN) e uscita dati (DOUT). Il microcontrollore manda una fila di bit a 800 kbps; il primo LED tiene per sé i suoi bit (in un LED RGB sono 24, 8 per colore, nell'ordine verde, rosso, blu) e passa il resto al successivo. Con un solo pin comandi centinaia di LED, ognuno con il suo colore.
- WS2812B: il più diffuso, RGB.
- SK6812: compatibile, esiste anche RGBW, con un quarto LED bianco. Nella libreria Adafruit_NeoPixel si dichiara
NEO_RGBWal posto del solitoNEO_GRB(oNEO_GRBW, se i colori escono sbagliati). - WS2813: ha una seconda linea dati di riserva. Se un LED si guasta, il successivo prende il segnale dalla riserva e il resto della striscia continua a funzionare. Worldsemi raccomanda di collegare a massa l'ingresso di riserva (BIN) del primo LED.
Quanta corrente chiedono
Per i suoi prodotti Adafruit calcola fino a 60 mA per LED a bianco pieno, cioè rosso, verde e blu al massimo. È il caso peggiore: con colori misti e luminosità più bassa si consuma molto meno, e per le animazioni normali Adafruit usa come regola grossolana un terzo, 20 mA per LED.
Il conto è semplice: numero di LED × 20 (oppure × 60, per stare larghi) ÷ 1000 = ampere dell'alimentatore. Con 60 LED fanno 1,2 A con la regola dei 20 mA e 3,6 A nel caso peggiore. Per le strisce, Adafruit indica il consumo massimo per metro a 5 V: circa 1,8 A con 30 LED/m, 3,6 A con 60 LED/m, 8,6 A con 144 LED/m.
Se vuoi tenere bassa la corrente, chiama setBrightness() una volta sola nel setup(): limita la luminosità per tutto lo sketch. Adafruit avverte che non è fatta per le animazioni, perché modifica i colori già salvati in memoria.
Quale alimentatore
- Pochi LED: il pin 5V di Arduino. Secondo Adafruit la UNO da quel pin dà in continuo circa 500 mA, giusti per un anello o una barretta. Dal pin USB di una scheda, invece, Adafruit sconsiglia di alimentare più di qualche LED.
- Strisce: un alimentatore switching a 5 V separato, con qualche ampere in più del necessario. Adafruit lo riassume così: ampere in più vanno bene, volt in più no. Per il WS2812B Worldsemi indica 5,3 V come massimo assoluto.
- Alimentatori da banco: alcuni all'accensione danno un picco di tensione che brucia i LED. Accendi prima l'alimentatore, aspetta che si stabilizzi, poi collega la striscia, massa per prima.
- A batteria: tre stilo alcaline danno 4,5 V, quattro ricaricabili NiMH 4,8 V; quattro alcaline arrivano a 6 V, troppi. Una LiPo da 3,7 V va bene per spezzoni corti. Attenzione ai power bank: molti si spengono da soli se la corrente è bassa.
Il condensatore e la resistenza
Sono due componenti da pochi centesimi, che Adafruit consiglia in ogni progetto con molti LED o con un alimentatore grosso.
- Un condensatore elettrolitico tra + e − della striscia, dove entra l'alimentazione: Adafruit indica valori fino a 1000 µF, con tensione di almeno 6,3 V. Fa da piccola riserva quando la luminosità cambia di colpo, una causa frequente di sfarfallii. Rispetta la polarità.
- Una resistenza da 300 a 500 Ω in serie sul filo dei dati, montata vicino al primo LED e non vicino al microcontrollore. Protegge il primo LED dai picchi sulla linea. Alcuni prodotti ce l'hanno già a bordo; Adafruit precisa che metterne una in più non fa danni.
L'uscita dati dell'ultimo LED resta scollegata. Negli schemi dei produttori c'è anche un condensatore da 100 nF per ogni LED: su strisce, anelli e moduli è già montato, ma se saldi LED singoli tocca a te.
Collegare nell'ordine giusto
- Massa per prima, poi il +5 V, poi i dati. Per scollegare, l'ordine inverso. Meglio ancora: collega tutto a circuito spento.
- Masse in comune: se LED e microcontrollore hanno alimentazioni diverse, le due masse vanno unite.
- Prima i LED, poi la scheda: con un alimentatore separato, dai tensione ai LED prima che al microcontrollore. Altrimenti i LED cercano di alimentarsi dalla linea dati e il pin del microcontrollore ne soffre.
- Filo dei dati corto: per Adafruit uno o due metri di solito vanno bene, oltre il segnale diventa incerto.
- Segui le scritte stampate sulla striscia (DIN, 5V, GND) e le frecce del verso dei dati: Adafruit raccomanda di fidarsi di quelle, non del colore dei fili.
3,3 V o 5 V sui dati
ESP32, Raspberry Pi Pico e le altre schede a 3,3 V mandano un segnale più basso di quello che un LED alimentato a 5 V si aspetta. La soglia d'ingresso cambia da una versione all'altra del datasheet del WS2812B, e il risultato è quello che Adafruit chiama «funziona sul banco ma non sul posto». La soluzione che indica è un traslatore di livello come il 74AHCT125 o il 74HCT245 tra il pin e il primo LED. Se invece i LED sono alimentati direttamente da una LiPo da 3,7 V, i dati a 3,3 V vanno bene. Tutto il discorso dei livelli è spiegato nella nostra guida Livelli logici 3,3 V e 5 V: far parlare ESP32 e Arduino.
Strisce lunghe: l'alimentazione in più punti
Il rame dei binari della striscia ha una sua resistenza, e lungo la striscia la tensione cala. Il sintomo tipico: i LED in fondo, sul bianco, tirano al marrone, perché il blu e il verde vogliono più tensione del rosso. Adafruit ricorda che ai NeoPixel non importa da che parte arrivi l'alimentazione: puoi portarla in testa, in coda, a metà o, meglio, in più punti. Per colori uniformi, nessun LED dovrebbe stare a più di circa un metro da un punto di alimentazione. Con impianti grandi pensa l'alimentazione come i rami di un albero, non come una linea unica.
Con più alimentatori le masse vanno tutte collegate insieme, mentre il +5 V di ciascuno va solo al suo tratto di striscia: i positivi di alimentatori diversi non si uniscono.
Un'ultima avvertenza di Adafruit: i NeoPixel non sono pensati per illuminare una stanza tutti i giorni per anni. Per quello esistono le strisce LED bianche normali. Per cominciare, invece, c'è la nostra guida L'anello di LED: dodici colori con un solo pin, con Arduino e un anello da 12 LED.
Hai un progetto con tanti LED?
Scrivici quanti LED vuoi usare, su quale scheda e dove andranno montati: ti aiutiamo a scegliere striscia, alimentatore e collegamenti.