Arduino Due - UNL2803A - StripLED WS2812

Buongiorno a tutti, lo so, seguo il forum solo a Natale e soprattutto quando mi serve, ma è anche vero che sono talmente ignorante che non potrei aiutare nessuno.
PREMESSA E PROGETTO ATTUALE
Torno a descrivere il mio progetto che vorrei ampliare proprio quest'anno:

  • Arduino Due
  • 2 ULN2803A
  • 2 alimentatori da 5(non ricordo quanti A ma il classico per Arduino e comunque alimenta solo quello) e 12Volt (5 A)
  • 3 file da 2 con microlampade 12V 2Watt
  • 8 led di vari colori per case e fuoco
    il tutto funziona per come piace a me. Cosa importante da specificare è che ho creato, saldato, costruito uno shield con tutti i componenti e i minimorsetti saldati che inserisco sopra il mio Arduino mentre le resistenze dei singoli LED le ho saldate singolarmente direttamente sui LED. A questo punto però TUTTE le uscite di Arduino (dalla 1 alla 13) passano per gli integrati ULN2803A.
    OBIETTIVO
    Ora però l'appetito vien mangiando e quest'anno volevo introdurre per l'effetto notte/giorno una striscia led così ho acquistato 5 mt di una con le sigle WS2812 60 IP67 White PCB. Ora passiamo alle domande:
    QUESITI
  1. primo dubbio. Da quello che ho studiato il segnale alla striscia va dato direttamente dall'uscita pin di Arduino. Visto che le mie passano tutte il negativo da Arduino via ULN2803A e positivo da alimentatore 12 Volt come devo collegare la striscia? Azzardo:
    +VCC della striscia al + dell'alimentatore da 12V con resistenza da 470
    GND striscia in comune da alimentatore e Arduino
    IN striscia dall'uscita dell'integrato con una resistenza che però non saprei come calcolare.
    ho trovato qualcosa in giro e sembra che oltre ad aggiungere un condensatore da 1000 mF per evitare disturbi sull'alimentazione dovrei inserire una resistenza da 330 ohm ma in questo caso vedo che partono tutti dall'uscita di Arduino (uno tra l'altro) pulito.
  2. secondo dubbio. Teoricamente mi servirebbe una striscia di 3 mt e viste le mie specifiche capirete che sono 180 LED. Riesco a pilotare tutto senza bruciare niente? Devo dividerle in qualche modo? devo rinunciare a 1-2 mt?
  3. domanda non "elettronica" ma più da programmazione. Riesco a trovare moltissimi esempi di fade in/out tra tutte le bande di colori. A me però servirebbe passare da un blu notte, ad un arancio/rosso alba ad un giallo/bianco notte per poi tornare al rosso/arancio tramonto e blu notte. Ma routine di passaggi tra questi colori? cicli che aumentano per esempio i valori di R, calano G, aumentano B o cose del genere? Dove devo lavorare? Capisco che prima dovrei accenderla e poi cominciare a fare prove, ma visto che sto scrivendo butto anche questo pensiero

grazie anche solo della pazienza di leggere, ditemi se ho tralasciato qualcosa che non vi faccia capire,
saluti a tutti
Emanuele

  1. Per pilotare le strisce usa semplici mosfet logic level tipo questi, ti semplificano il cablaggio. Vedi qua a pag 5.

  2. Che la striscia sia lunga 10cm o 5m per il pilotaggio cambia solo il ritardo fra l'accensione del primo led e dell'ultimo, ma dato che i cambiamenti di colore saranno lentissimi non ci dovrebbero essere problemi.

  3. Il fading delle luci alba-giorno-tramonto-notte in un presepe, che necessita di comandare indipendentemente altri dispositivi, DEVE essere effettuato attraverso l'uso della funzione millis(). Per i colori puoi partire dal triangolo di Maxwell che ti da una idea sul mix dei colori primari che devi usare per le sfumature dei colori che vuoi ottenere. Sono date in decimi, devi proporzionarli in 255esimi.

Ciao,
P.

... ma leggo male o quelle sono striscie WS2812? ... perché, se SI, quelli sono dei NeoPixel e:

  1. vanno alimentate a 5V
  2. si comandano digitalmente con un solo pin
  3. anche il segnale di comando DEVE essere a 5V e quindi occorre un adattatore di livello perché sta usando un Arduino DUE che lavora a 3.3V
  4. lo schema di Pighixxx (pag.5) NON è assolutamnete applicabile dato che è per normali strisce RGB (che si trovano anche a 12V)

Guglielmo

Per il punto 1 rispondo sull'altra risposta :wink:
per il 2 ok
per il 3 si, uso già la funzione mills() per tutte le altre luci, dovrei integrare quindi la striscia e benissimo per il triangolo dei colori, ora vedo di studiarci sopra qualcosa
grazie tantissimo !!
Ciao
Emanuele

GIUSTISSIMO !!! sono NeoPixel ed ho letto che vanno alimentate a 5Volt. Quindi o mi sono spiegato malissimo, o ho detto una grandissima castroneria "elettronica". Provo a spiegare con parole mie la mia deficienza elettronica cercando di non urtare le vostre conoscenze. abbiate pietà :smiley:

  1. per l'alimentazione a 5V da un alimentatore da 12 pensavo di poter usare una qualche resistenza per poter abbassare la tensione ma effettivamente dovrei sapere l'assorbimento in corrente di tutti i LED e calcolare la resistenza? Potrei comunque prendere i 5V dall'altro alimentatore che alimenta solo Arduino
  2. si infatti dai miei studi è una delle poche cose a questo punto che mi sono chiare
  3. nella mia testa bacata credevo che l'integrato ULN2803A fosse una sorta di amplificatore insieme al collegamento dell'alimentatore a 12V e quindi credevo che il segnale doveva essere passato alla striscia attraverso una resistenza che appunto vi chiedevo come calcolare. Ho sbagliato tutto?
  4. chiaro
    Grazie, seguo poco ma sei sempre uno pronto a rispondere a tutti, anche alle domande stupide che faccio, certo pronto anche a "shamparmi" sulle castronerie :smiley:
    grazie ancora
    Emanuele

NUOVO DUBBIO IN AGGIUNTA:
non ho le specifiche della striscia se non la sigla che ho riportato sopra WS2812 60 IP67 ma il consumo è standard 20mA per ogni led? quindi 60 x metro x 20mA?

Perfetto, allora ...

  1. dimentica la resistenza ... l'assorbimento è variabile (in funzione dei colori accessi) e quindi, con la resistenza NON ci fai nulla.
    Occorre un alimentatore a 5V che dia sufficienti A per accendere tutti i LED che devi accendere. Considera che OGNI WS2812 è composto da 3 LED (R,G,B) che assorbono ciascuno 20mA circa ... quindi, in funzione di quanti NeoPixel contemporaneamente accendi e del colore, l'assorbimento varia di parecchio, fino ad arrivare al massimo dei 60mA per WS2812 se accendi il colore "bianco" (R, G e B accesi contemporaneamente).

  2. Il pin di controllo DEVE andare a 5V e devi usare un traslatore di livello tipo QUESTO oppure QUESTO ...
    ... personalmente uso sempre quest'ultimo che mi va bene anche con i sensori I2C :wink:

Guglielmo

ODDIO !!!! Mi hai aperto un modo. Per ricapitolare quindi

  1. per assurdo, servendomi 3 mt il calcolo massimo è 20mA x 3 (bianco) x 60 x 3 mt = 10800 mA ? 11 A? mmhhh... decisamente troppo, e dove lo trovo un alimentatore 5V 11A? :smiley: mi dovrò ridimensionare?
  2. ok per il traslatore ma a questo punto prendo il segnale prima del ULN2803A pulito da Arduino? Conviene no?
    ciao
    Emanuele

Allora ...

  1. Di alimentatori ne trovi quanti ne vuoi, anche da 100A :grinning_face_with_smiling_eyes: :grinning_face_with_smiling_eyes: :grinning_face_with_smiling_eyes: ... se hai calcolato 11A, prendine uno almeno da 15A :wink:
    Solo il primo che ho trovato su Amazon cercando "alimentatore 5V 15A", QUI, ma ne hanno quanti ne vuoi.

  2. ovviamete il segnale che va al traslatore lo prendi dal pin di Arduino :slight_smile:

Guglielmo

Ciao a tutti. Sto già postando più cose su questo progetto, ma ecco la prima.
Secondo il datasheet di questi diodi, il Vih dell'ingresso dati deve essere di 0,7 Vcc. Allora 0,7 *5 = 3,5, Rare sarebbe che non funzionerebbe a 3,3 di Due, quindi proviamo.
Detto e fatto, l'ho appena provato. Funziona tutto correttamente, alimentando una strip da 144 led a 5v funziona correttamente con i dati a 3.3V
Allora non c'è bisogno di un convertitore di livello.
Saluti.

Mi spiace ma debbo dissentire, prova effettuata con ESP8266 a 3.3V e NON va, quindi ...
... per evitare che con alcune strisce vada con altre no, o che a volte vada ed altre no (... tenere sempre conto delle tolleranze dei componenti ... specie se presi sul mercato cinese), è bene mettere SEMPRE il traslatore di livello ed evitare subdoli problemi che poi diventano difficili da diagnosticare.

Guglielmo

Humm.... Hai montato il condensatore da 1000uF e la resistenza di protezione, io sto usando una resistenza da 460 ohm.

... peggio ancora, se senza a volte va e a volte no, con la resistenza (che è d'obbligo, per evitare possibili danni, nel caso dei 5V) proprio non va più del tutto.

Dai retta, se si vuole avere un progetto affidabile ... il pin dei dati deve essere controllato a 5V, poi, ripeto, magari a 3.3V una volta va ed un altra no, ma non mi sembra una buona idea ... oltretutto, su AliExpress, i traslatori di livello costano pochi centesimi di $, quindi ... :wink:

Guglielmo

Sì, hai ragione, era solo un test per saperne di più sulle mie strisce, rispetto anche quelle premesse nei miei montaggi. Anche meglio usare quegli adattatori, in un certo senso amplificheranno un po' il segnale e potrai usare cavi più lunghi. E poiché sono dotati di diversi "canali" puoi tagliare, (se lo desideri), la striscia in pezzi e ottenere diverse "animazioni" più facilmente che se programmi una singola striscia intera.

... ecco, di una cosa devi tenere conto, che le piste di quelle strisce difficilmente possono portare 10A per cui, mentre il segnale dei dati va bene solo sulla prima per controllare tutti i LED, l'alimentazione, direi ogni metro, va collegata sulle apposite piazzole, ovvero ... dovrai portare GND e +5V in vari punti della striscia.

Guglielmo

molto bene grazie, il condensatore a monte va messo comunque a prescindere? nel senso, serve solo per la striscia o è sempre bene metterlo? Da quello che ho capito stabilizza e fa da protezione?
ciao
Emanuele

... quale condensatore? Collegato dove?

Guglielmo

gpb01 mi riferivo a questo passaggio e ad una delle tante cose lette per capire cercando di rompervi il meno possibile

nello specifico questo schema


quindi sto aggiungendo castronerie su castronerie?
ciao
Emanuele

Ahhh ... si, scusa, è che su strip corte con pochi LED non lo uso mai, ma nel tuo caso, con così tanti LED ed un assorbimento importante, è senz'altro consigliabile ... io ne metteri uno su ogni punto dove porti i 5V

Guglielmo

No, il montaggio è corretto

Non è necessario, ma la distanza tra la resistenza e la striscia dovrebbe essere la più corta possibile, e il condensatore dovrebbe essere posizionato direttamente sulla striscia (se possibile), se no, più la è vicina alla striscia e meglio è. Un paio di esempi:


tiras
Saluti.