Occhio che ... i cinesi hanno clonato i cinesi ... ![]()
Gli originali sono gli APA102, poi ci sono i loro cloni a basso costo
... SK9822, SK6812, ecc ... a costi inferiori, dimensioni più piccole, ma di qualità decisamente più bassa ![]()
Guglielmo
Occhio che ... i cinesi hanno clonato i cinesi ... ![]()
Gli originali sono gli APA102, poi ci sono i loro cloni a basso costo
... SK9822, SK6812, ecc ... a costi inferiori, dimensioni più piccole, ma di qualità decisamente più bassa ![]()
Guglielmo
Ciao,
mi infilo anch'io che gli APA102 mi interessano ![]()
purtroppo LucaCap non può usare una matrice già pronta a causa del fatto che si estende su una superficie di 1,5*1,5 metri.
però mi chiedevo... una matrice di 8*8 di 1,5m fanno in tutto 12 metri di lunghezza (13 e mezzo se consideriamo pure lo spazio tra una linea e l'altra)...
si potrebbero ancora usare gli APA102 nonostante siano SPI?
sì (mi son risposto da solo... ho letto di uno che è arrivato a 20m... evidentemente ogni led risquadra e rinforza il segnale)
però facendo una matrice a mo di "serpente" i led sarebbero a circa 20cm l'uno dall'altro, non creerebbe problemi?
Massimo
P.S.
mi sono già presentato ieri ![]()
Perche' ? ... la SPI non e' fatta per lunghe distanze, e' vero, ma per connessioni di poche decine di centimetri al massimo (per cui i problemi potresti averli se fra arduino ed il primo led ci fosse troppa distanza), ma non e' che smette di funzionare dopo 20 centimetri ... inoltre considera che non e' una "vera" SPI bidirezionale, i led non "rispondono" nulla al micro, ricevono soltanto, per cui in caso proprio servisse nulla vieta di usare un paio di banali porte logiche o un qualsiasi altro buffer per "rinforzare" il segnale ed avere fronti ripidi anche a distanze maggiori ... ![]()
Sì, il fatto che non sia bidirezionale è infatti il motivo per cui possono raggiungere quelle lunghezze, ma io stavo pensando al problema di disturbi, accoppiamenti capacitivi e via dicendo...
20 cm non dovrebbero essere un problema, ma moltiplicati per 63 aumentano di molto le probabilità che qualcosa vada storto... è vero che nelle strisce led ce ne sono molti di più, ma sono estremamente corti.
Se ci provassi io (non sono molto fortunato) sicuramente riuscirei a sentirci pure la radio! ![]()
Massimo
Be', considera anche che ogni uscita fa da buffer per il led successivo ... quindi a parte la connessione fra arduino ed il primo led, la massima distanza che il segnale percorre, tecnicamente, e' quella fra un led e l'altro, non l'intera serie ...
Naturalmente non l'intera lunghezza, avevo capito che ognuno fa da buffer all'altro ![]()
Intendevo proprio i singoli tratti... 2cm intercettano un tot di disturbi e formano un certo accoppiamento che però vengono subito livellati dal led successivo, 20 cm ne hanno (ipoteticamente) 10 volte tanto, solo questo...
Comunque ritieni che non dovrebbe essere un problema... buono a sapersi, probabile che mi venga a trovare in una situazione molto simile a breve...
Mi sono accodato al thread perchè 2 anni mi fa ero ritrovato nella stessa situazione di LucaCap con 64 led (32 led bicolori in matrice 4*8 in multiplexer). Da quel capii all'epoca dovevo accontentarmi visto che i led stavano spenti per il 75% del tempo... dopo, una volta scoperti, mi sono indirizzato verso dei WS2812B (perché dovevano avere max 4 pin)
Per curiosità volevo vedere se c'era un sistema per ovviare a quel calo di luminosità...
Massimo
Attento che nessuno ti obbliga ad usare la SPI ... gli APA102 si controllano tranquillamente con dei semplici digitalWrite() su due pin qualsiasi, uno su cui si inviano i vari bit dei dati ed uno su cui si fa la transazione del clock ... praticamente una SPI fatta in bit banging. In questo modo, puoi decidere tu le tempestiche e fare in modo che la lettura del pin di dati avvenga quando esso è sicuramente stabile, aspettando un po' prima di effettuare la transazione sul pin clock ... ovviamente a scapito della velocità di aggiornamento ![]()
Guglielmo
Ottimo, grazie ![]()
Non avevo pensato a questo sistema... per cui si dovrebbe poter ottenere una velocità superiore a quella dei WS2812B e mantenere nel contempo una certa sicurezza dell'esattezza dei dati inviati...
Ero un po' preoccupato per i disturbi visto che sembro un ragno panciuto circondato da una ragnatela di fili elettrici ![]()
Invece per i led in multiplexer nessuna idea?
Avevo progettato un bel sistemino che gestiva fino a 128 pulsanti e con lo stesso multiplexer pilotava fino a 64 led, ma purtroppo la luminosità ne risentiva molto...
Massimo
Il problema del multiplexare dei led e' "vario e variabile"
...
Detta nel modo piu semplice possibile ... i led funzionano in corrente, non in tensione, per cui l'unico sistema per avere la stessa luminosita' per tutti, sarebbe un pilotaggio che possa garantire la stessa corrente per ogni led, in qualsiasi situazione ... inoltre, ovviamente, c'e' il fattore della "luminosita' apparente", cioe' il fatto che in multiplex il singolo led rimane acceso solo per una frazione del tempo complessivo lo fa apparire all'occhio meno luminoso di quanto sia in realta', per cui serve "compensare" aumentando proporzionalmente la corrente ...
I led sopportano, per brevi periodi, anche correnti molto piu alte di quelle "di targa" (occhio che con "brevi periodi" io intendo al massimo millisecondi) ... ad esempio, un comune led da 20mA puo sopportare senza bruciarsi impulsi anche di 100mA, ovviamente la frequenza deve essere abbastanza alta, diciamo intorno al KHz o superiore, e la corrente "media" complessiva deve essere minore di quella di targa ... tipo, 100mA per 1 millisecondo ogni 10, ad 1KHz o piu, lo fanno sembrare acceso al massimo anche se in realta' e' acceso solo per un decimo del tempo ... altro esempio, i led "laser" dei multanova, sono banali IR a 908nm che se alimentati in continua non sopportano piu di 100mA, ma nell'apparecchio vengono alimentati ad impulsi di 6/8 microsecondi con piu di 4A, senza bruciarsi ...
altro esempio ancora, tempo fa per divertimento mi ero costruito uno "pseudoflash" per macro sfruttando dei pannellini recuperati da una vecchia lampadina led, ci sparavo dentro circa 1A per 1 millisecondo (mentre i led con cui sono composti i pannelli al massimo sopportano 80mA), e non si sono mai bruciati ... si puo fare, ma va fatto con criterio ![]()
Quindi per "vederli" piu luminosi, o si usano dei driver multiplex che prevedono il controllo attivo della corrente, o si impostano le resistenze (che DEVONO essere una per led, non una per riga o colonna) in modo che diano una corrente maggiore ai chip, ovviamente quanto maggiore si puo dare dipende dalla frequenza di multiplexing e dai tempi in cui i led rimangono accesi ... altri sistemi "piu facili" non ne conosco, a parte usare led con potenze maggiori ...
Etemenanki:
Il problema del multiplexare dei led e' "vario e variabile"...
Lo so purtroppo ![]()
Sapevo che a regime impulsivo i led possono sopportare più corrente di quella nominale, però non so bene (anzi, non lo so per niente!) come realizzare un generatore di corrente costante tipo quello che usano gli integrati multiplexer fatti apposta per i led...
Avevo provato, come pure suggerito da te, a diminuire (di molto) le resistenze per aumentare la corrente di picco ottenendo un lieve miglioramento, ma niente di più.
Etemenanki:
si puo fare, ma va fatto con criterio
Sicuramente! ![]()
Etemenanki:
o si impostano le resistenze (che DEVONO essere una per led, non una per riga o colonna)
?
Io avevo 4 righe x 8 colonne
Le righe (che dovevano sopportare il carico di 8 led) erano pilotate con dei transistor (poi sostituiti con un ULN2803).
Le colonne invece erano pilotate da un buffer con una resistenza per ogni colonna.
Naturalmente era accesa una sola riga per volta...
Non andava bene così?
Massimo
No, perche' se sulla riga (o colonna) c'e' una sola resistenza, se piu di un led per riga (o colonna) e' acceso la corrente si suddivide fra i vari led ... se si vuole fare senza chip specifici con controllo attivo della corrente, ogni singolo led deve avere la sua resistenza (e con ogni led intendo ognuno dei chip del led, quindi tre resistenze per led) ...
Inoltre, sono da calcolare diverse per i diversi colori, perche' ogni colore ha una caduta di tensione diversa ... questo influisce poco se alimentati a 12V o piu, ma parecchio se alimentati a 5v ... esempio:
alimentati a 12V ... rosso, caduta di tensione di circa 1.5V, se servono 20mA, (12-1.5)/0.02=525 ohm (510 e' il valore piu vicino) ... blu, caduta di tensione circa 3V, per 20mA (12-3)/0.02=450 ohm (470 valore piu vicino) ... la differenza fra i due valori e' poca, potrei anche usare 470 ohm per il rosso, mi darebbe 22mA invece di 20, e non succede nulla ...
alimentati a 5V ... rosso, (5-1.5)/0.02=175 ohm (valore piu vicino 180) ... blu, (5-3)/0.02=100 ohm ... se uso 100 ohm per il rosso, mi da 35mA invece di 20, se uso 180 per il blu mi da 11mA invece di 20, la differenza e' molta di piu ... e le differenze crescono ulteriormente se bisogna alimentarli con correnti maggiori per compensare la luminosita' apparente minore dovuta al multiplexing ...
Inoltre bisogna anche calcolare le cadute di tensione introdotte dai driver, che in alcuni casi non sono indifferenti ... ad esempio, gli ULN2803 sono darlington, ogni uscita causa una caduta di tensione di circa da 2 a 2.5V, che puo arrivare quasi a 3 per correnti piu alte ... altri tipi di driver causano cadute diverse ... la stessa cosa vale per il ramo positivo, ovviamente ... e queste cadute vanno tolte dalla tensione che alla fine arriva al led per il calcolo della corrente, ed in alcuni casi possono addirittura impedire al led di funzionare (ad esempio, se tu usassi l'ULN2803 per pilotare dei led blu con i 5V, al led arriverebbe meno tensione della sua stesa soglia, il che significa che non si accende, o al massimo si accende appena appena)
Etemenanki:
No, perche' se sulla riga (o colonna) c'e' una sola resistenza, se piu di un led per riga (o colonna) e' acceso la corrente si suddivide fra i vari led ... se si vuole fare senza chip specifici con controllo attivo della corrente, ogni singolo led deve avere la sua resistenza (e con ogni led intendo ognuno dei chip del led, quindi tre resistenze per led) ...
aspè... ho 8 colonne con 8 resistenze e 4 righe senza resistenza pilotate dall'ULN2803 (darlington sì, ma open-collector con caduta di potenziale di circa 0.7V), 1 sola riga accesa per volta... Non è come collegare 8 led con relative resistenze con l'anodo verso il chip ed il catodo a massa? (sì, ok... non è massa ma il collettore dell'ULN2803)
Massimo