ElectroBest
Indietro

Come collegare una striscia LED indirizzabile WS2812B a un Arduino

Pubblicato: 02.08.2021
0
2578

Lo sviluppo della tecnologia di illuminazione basata sui LED continua a ritmo sostenuto. Fino a ieri, i nastri RGB controllati da un controller, la cui luminosità e colore possono essere regolati da un telecomando, sembravano un miracolo. Oggi, ci sono nuovi apparecchi sul mercato con ancora più possibilità.

Striscia di LED basata su WS2812B

Le differenze tra le strisce LED indirizzabili e quelle standard RGB è il La luminosità e il rapporto di colore di ogni elemento sono regolabili separatamente. Questo permette di ottenere effetti di luce che non sono disponibili per altri tipi di apparecchi di illuminazione. La striscia LED indirizzabile è controllata in un modo ben noto - per mezzo della modulazione di larghezza d'impulso. Una caratteristica del sistema è che ogni LED è dotato di un proprio controller PWM. Il chip WS2812B è un diodo a emissione di luce a tre colori e un circuito di controllo, combinati in un unico pacchetto.

Come collegare la striscia indirizzabile a LED WS2812B ad Arduino
Vista esterna del LED con driver.

Gli elementi sono collegati in parallelo all'alimentazione e sono controllati tramite un bus seriale - l'uscita del primo elemento è collegata all'ingresso di controllo del secondo elemento, ecc. Nella maggior parte dei casi, i bus seriali sono costruiti su due linee, una delle quali trasmette strobo (impulsi di clock) e l'altra - dati.

L'aspetto del nastro indirizzabile.
L'aspetto del nastro indirizzabile.

Il bus di controllo del WS2812B consiste di una linea - è usato per trasferire dati. I dati sono codificati come impulsi con una frequenza costante ma con frequenze diverse. Un impulso è un bit.. La durata di ogni bit è di 1,25 µs, il bit zero consiste in un livello alto di 0,4 µs e un livello basso di 0,85 µs. L'unità appare come un livello alto di 0,8µs e un livello basso di 0,45µs. Un pacco di 24 bit (3 byte) viene inviato ad ogni LED, seguito da una pausa come livello basso per 50µs. Questo significa che i dati per il prossimo LED saranno trasmessi dopo, e così via per tutti gli elementi della catena. Il trasferimento dei dati termina con una pausa di 100 µs. Questo significa che il ciclo di programmazione del nastro è completo e il prossimo set di pacchetti di dati può essere inviato.

Dati di controllo per il nastro indirizzabile.
Dati per il controllo del nastro di indirizzi.

Questo protocollo permette di fare a meno di una sola linea per il trasferimento dei dati, ma richiede una tempistica accurata. È consentita una deviazione di max. 150 ns. Inoltre, l'immunità al rumore di questo bus è molto bassa. Qualsiasi interferenza di ampiezza sufficiente può essere captata dal controllore come dati. Questo impone delle limitazioni sulle lunghezze dei conduttori dal circuito di controllo. D'altra parte, fornisce la possibilità di per controllare il corretto funzionamento della cinghia senza dispositivi aggiuntivi. Se l'apparecchio è alimentato e un dito tocca l'area di contatto del bus di controllo, alcuni LED possono accendersi e spegnersi in modo casuale.

Caratteristiche tecniche degli elementi WS2812B

Per creare sistemi di illuminazione con nastri indirizzabili è necessario conoscere i parametri importanti degli elementi di emissione della luce.

Dimensioni dei LED5x5 mm
Frequenza di modulazione PWM400 Hz
Consumo di corrente alla massima luminosità60mA per elemento
Tensione di alimentazione5 volt
Consigli degli esperti
Il consumo energetico dell'apparecchio è piuttosto alto. È determinato non solo dalla corrente richiesta per l'innesco della giunzione p-n glow, ma anche dalle perdite di commutazione durante la formazione PWM. Per un apparecchio di 15 elementi, l'alimentazione e i conduttori sono progettati per una corrente di almeno 1 ampere.

Arduino e WS2812B

La piattaforma Arduino, popolare in tutto il mondo, permette la creazione di sketch (programmi) per controllare i nastri indirizzabili. Le capacità del sistema sono abbastanza ampie, ma se ad un certo livello non sono più sufficienti, le competenze ottenute saranno sufficienti per passare senza problemi al C++ o anche all'assembler. Anche se è più facile ottenere le conoscenze di base da Arduino.

Collegare un nastro basato su WS2812B a un Arduino Uno (Nano)

All'inizio, una semplice scheda Arduino Uno o Arduino Nano è sufficiente. In seguito, schede più complesse possono essere utilizzate per costruire sistemi più complessi. Quando si collega fisicamente la striscia LED indirizzabile alla scheda Arduino, bisogna assicurarsi che siano soddisfatte alcune condizioni:

  • A causa della bassa immunità al rumore, i conduttori di connessione della linea dati dovrebbero essere il più corti possibile (cercate di farli entro 10 cm);
  • Collegare la linea dati a un'uscita digitale libera della scheda Arduino - sarà indicata in seguito dal software;
  • A causa dell'alto consumo di energia, non è necessario alimentare la striscia dalla scheda - sono forniti alimentatori separati per questo scopo.

La linea di alimentazione comune tra la striscia e Arduino deve essere collegata.

Schema elettrico WS2812B.
Schema elettrico della striscia WS2812B.

Leggi anche

Come collegare il LED alla scheda Arduino

 

Fondamenti del controllo software di WS2812B

Si è già detto che per controllare il chip WS2812B bisogna generare impulsi di una certa lunghezza con grande precisione. Nel linguaggio Arduino ci sono comandi per formare brevi impulsi delayMicroseconds и micros. Il problema è che la risoluzione di questi comandi è di 4 microsecondi. Ciò significa che non è possibile formare i ritardi temporali con una certa precisione. È necessario utilizzare strumenti C++ o Assembler. Oppure è possibile controllare la striscia di LED tramite Arduino con l'aiuto di librerie appositamente create per questo scopo. L'introduzione inizia con Blink, un programma che fa lampeggiare gli elementi che emettono luce.

FastLed

Questa libreria è versatile. Oltre al nastro indirizzabile, supporta molti dispositivi tra cui i nastri controllati da SPI. È molto potente.

Per prima cosa è necessario collegare la libreria. Questo viene fatto prima del blocco di setup, e la stringa appare così:

#include .

Il passo successivo è quello di creare un array per memorizzare i colori di ogni diodo che emette luce. Avrà il nome strip e la dimensione 15 - per il numero di elementi (è meglio assegnare una costante a questo parametro).

Striscia CRGB[15]

Nel blocco di setup dovete specificare la banda con cui lo script lavorerà:

void setup() {

FastLED.addLeds< WS2812B, 7, RGB>(strip, 15);

int g;

}

Il parametro RGB imposta l'ordine di alternanza dei colori, 15 indica il numero di LED, 7 è il numero dell'uscita assegnata al controllo (è meglio assegnare una costante anche all'ultimo parametro).

Il blocco di loop inizia con un ciclo che scrive sequenzialmente in ogni sezione dell'array Red (red glow):

per (g=0; g< 15;g++)

{strip[g]=CRGB::Red;}

Poi l'array generato viene inviato all'apparecchio di illuminazione:

FastLED.show();

Ritardo 1000 millisecondi (un secondo):

ritardo(1000);

Poi tutti gli elementi possono essere spenti allo stesso modo, scrivendo nero su di essi.

per (int g=0; g< 15;g++)

{strip[g]=CRGB::Black;}

FastLED.show();

ritardo(1000);

Schizzo per nastro lampeggiante basato su FastLed.
Uno schizzo per una striscia lampeggiante basata su FastLed.

Dopo aver compilato e caricato lo schizzo, il nastro lampeggerà con un periodo di 2 secondi. Se volete controllare ogni componente di colore separatamente, allora invece della stringa {strip[g]=CRGB::Red;} vengono utilizzate più stringhe:

{

strip[g].r=100;// imposta il livello di luminescenza dell'elemento rosso

strip[g].g=11;// lo stesso per il verde

strip[g].b=250;// lo stesso per il blu

}

NeoPixel

Questa libreria funziona solo con i LED NeoPixel Ring, ma è meno impegnativa in termini di risorse e contiene solo l'essenziale. In linguaggio Arduino il programma si presenta così:

#include .

Come nel caso precedente, si include la libreria e si dichiara l'oggetto lenta:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Dove 15 è il numero di elementi e 6 è l'uscita assegnata

Il lenta è inizializzato nel blocco di setup:

void setup() {

lenta.begin ()

}

Nel blocco di loop tutti gli elementi sono illuminati di rosso, una variabile viene passata al nastro e viene creato un ritardo di 1 secondo:

for (int y=0; y<15;y++)// 15 - numero di elementi nella lenta

{lenta.setPixelColor(y, lenta.Color(255,0,0))};

{lenta.show();

ritardo(1000);

La lenta smette di brillare di nero:

per (int y=0; y< 15;y++)

{ lenta.setPixelColor(y, lenta.Color(0,0,0))};

lenta.show();

ritardo(1000);

Schizzo per il programma Blink basato su NeoPixel.
Uno sketch per il programma Blink basato su NeoPixel.

Lezione video: esempi di effetti visivi utilizzando nastri indirizzabili.

Una volta che hai imparato a far lampeggiare i LED, puoi continuare a imparare come creare effetti di colore, compresi i popolari Rainbow e Northern Lights con transizioni morbide. Il WS2812B e i LED indirizzabili di Arduino forniscono possibilità quasi illimitate per questo.

Commenti:
Non ci sono ancora commenti. Sii il primo!

Consigli per la lettura

Come riparare la lampada a LED da soli