Costruzione Orologio a led da parete - guida per dummies

Grazie Claudio_F, grazie anche per il suggerimento di fritzing sto imparando molte cose di base su arduino con i loro tutorial in inglese "teutonico" :)

Allora. io a prescindere sconsiglio fritzing (sara' anche estetico, ma quando poi devi collegare piu di una ventina di fili, ti esce un macello che meta' basta :P ... tanto per dire, prova ad immaginarti di dover disegnare una cosa del genere, che non e' neppure troppo complessa, con fritzing ... :D :D :D) ... scaricati EAGLE free, che oltre agli schemi, ti fa disegnare anche gli stampati ;)

Per lo schema, appena ho un minuto ti butto giu qualcosa, dimmi solo se vuoi fare tutto con i due shift register oppure in multiplexing "puro" o meta' e meta' ...

Etemenanki: Allora. io a prescindere sconsiglio fritzing (sara' anche estetico, ma quando poi devi collegare piu di una ventina di fili, ti esce un macello che meta' basta :P ... tanto per dire, prova ad immaginarti di dover disegnare una cosa del genere, che non e' neppure troppo complessa, con fritzing ... :D :D :D) ... scaricati EAGLE free, che oltre agli schemi, ti fa disegnare anche gli stampati ;)

Grazie anche a te Etem, per il momento stavo solo seguendo i vari tutorial per imparare qualcosa su Arduino... comunque anche l'interfaccia di creazione dei circuiti mi sembrava abbastanza intuitiva. Comunque prima di installare darò un'occhiata anche a EAGLE.

Etemenanki: Per lo schema, appena ho un minuto ti butto giu qualcosa, dimmi solo se vuoi fare tutto con i due shift register oppure in multiplexing "puro" o meta' e meta' ...

Thanks again ;), sicuramente opterò per i due shift register dal momento che vorrei rimanere sulla UNO (l'ho anche appena acquistata :) )

Etemenanki: Allora. io a prescindere sconsiglio fritzing (sara' anche estetico, ma quando poi devi collegare piu di una ventina di fili, ti esce un macello che meta' basta

Sono d'accordo, gestire uno schematico (ho guardato dopo le altre due funzioni schema e pcb) è improponibile, va molto bene per la rappresentazione visiva al volo su bredboard (anche se molte cose mancano).

dimmi solo se vuoi fare tutto con i due shift register oppure in multiplexing "puro" o meta' e meta'

Io proponevo un multiplexing con shift register, ho verificato che trasmettendo solo 12 bit con una funzione ad hoc la trasmissione dura 185 microsecondi:

#define CLOCK_PIN   2
#define LATCH_PIN   3
#define DATA_PIN    4
//-----------------------------------------------------------------------------
//               Trasmette 12 bit ai 74595 (lsbfirst)
//-----------------------------------------------------------------------------
void write_shift_register(uint16_t val)
{
   digitalWrite(LATCH_PIN, 0);
   for (uint8_t i=0; i<11; i++)
   {
           digitalWrite(DATA_PIN, val & 1);
           digitalWrite(CLOCK_PIN, 1);
           digitalWrite(CLOCK_PIN, 0);
           val >>= 1;
   }
   digitalWrite(DATA_PIN, val & 1);
   digitalWrite(CLOCK_PIN, 1);
   digitalWrite(CLOCK_PIN, 0);
   digitalWrite(LATCH_PIN, 1);
}

Se si usano le uscite QA..QG dei 595 per comandare i relativi segmenti (accesi se uscita alta) dovrebbe andare bene la seguente tabella di codici:

     CODICI DISPLAY 1=ACCESO

               --A--
             |       |
             F       B
             |       |
               --G--
             |       |
             E       C
             |       |
               --D-- 


     A  B  C  D  E  F  G  dp
------------------------------------
0    1  1  1  1  1  1  0  0    0xFC
1    0  1  1  0  0  0  0  0    0x60
2    1  1  0  1  1  0  1  0    0xDA
3    1  1  1  1  0  0  1  0    0xF2
4    0  1  1  0  0  1  1  0    0x66
5    1  0  1  1  0  1  1  0    0xB6
6    1  0  1  1  1  1  1  0    0xBE
7    1  1  1  0  0  0  0  0    0xE0
8    1  1  1  1  1  1  1  0    0xFE
9    1  1  1  1  0  1  1  0    0xF6

Io rimango dell'idea che usare le StripLed faciliti il montaggio. E visto che non sono state menzionate schede di prototipizzazione ( millefori ) abbastanza grandi, presumo che voglia montare il tutto su un pannello di legno, dove fare dei fori in cui inserire i Led. Il che vuol dire 280 fori ( con precisione, altrimenti un led spostato si nota anche a distanza ) e relative 560 saldature. Molto meglio tagliare le StripLed in scrisce da 10cm ( 2 moduli ) e saldarci due fili, e visto che sono adesive, incollarle sul legno, praticando un piccolo foro in prossimità dei fili, in modo da fare i collegamenti sul retro E visto che i 74HC595 e i ULN2003 costano una miseria, eviterei anche il multiplexing, specialmente se devono essere visibili anche da lontano

|288x500

Brunello: Il che vuol dire 280 fori ( con precisione, altrimenti un led spostato si nota anche a distanza ) e relative 560 saldature.

In effetti anche questa variabile non l'avevo considerata... l'idea era di costruire una custodia con stampante 3D ma le stripled, sopratutto dopo quanto indicato da te, sembrano essere molto interessanti. Sapete su quale shop trovo le più convenienti?

Fra l'altro, ora che le strip da 120 led per metro sono scese di prezzo, e' pure molto piu conveniente che comperare i led sciolti ... giusto come esempio, http://www.ebay.com/itm/5M-600-LEDs-SMD-2835-IP65-Flexible-Strip-String-Light-12V-Home-Truck-Car-/302088121604?var=600898170806&hash=item4655daed04:g:zSkAAOSwAuZX6j3u

La soluzione strip piace anche a me (i displayoni giganti ancora di più), e anche la semplice uscita in parallelo su catena di shift register (rogne in meno a livello software e Arduino più libero per fare altro), ma se non si fa in multiplexing forse va rivista radicalmente l'alimentazione.

Anche per quelle appena linkate... mai uno straccio di dati per capire quanto può assorbire un segmento lungo N centimetri.

È un azzardo ipotizzare un minimo di 100mA per segmento? Accendendo tutto siamo già a quasi 3A. Poi si potrebbe (ecco la follia della sera) calcolare quanti segmenti al massimo possono essere accesi contemporaneamente per un'ora qualsiasi dalle 0:00 alle 23:59 (tra l'altro il segmento F della prima cifra non si accenderebbe mai).

EDIT: Ok, calcolo fatto (fare a Python), al massimo si accendono 24 segmenti contemporaneamente (alle 20:08)

Normalmente le StripLed consumano 5W al metro, 20mA per ogni modulo da 5cm.
Qui un segmento è composto da due moduli, quindi 40mA a segmento

Quindi sono massimo 960mA... giusto?

Dipende da quali tipi di led sono montati sulle striscie, perchè ce ne sono anche di quelle che consumano esattamente il doppio

Claudio_F: ...mai uno straccio di dati per capire quanto può assorbire un segmento lungo N centimetri. ...

Dipende dal tipo di led e dalla densita' ... in genere, le strip a 12V hanno sezioni da 3 led in serie ognuna con la sua resistenza (infatti si possono tagliare solo ogni 3 led, dove ci sono le marcature ... ma e' sempre meglio controllare la marcatura sulla strip), tutte in parallelo ... se sono led 5050, ogni led assorbe circa 60mA, quindi anche ogni sezione da 3 led, essendo in serie, per cui 60mA per ogni sezione da 3 led del tuo pezzo di strip ...

Se sono 2835, (attenzione a non farsi fregare dai venditori disonesti che nei titoli scrivono 2835 e poi spediscono 3528 ... c'e' una bella differenza fra 3528 e 2835 ... i primi assorbono crca 400mA per metro di strip, i secondi circa il doppio ... e rendono pure piu del doppio della luminosita' ;)) e' piu complicato perche' ne esistono diverse varianti (la Luxeon, ad esempio, per il solo bianco ne produce 5 diverse versioni, 3V 120mA, 3V+TVS 120mA, 6V 60mA, 6V 120mA e 9V 60mA) ... comunque la maggior parte di quelli usati nelle strip sono i 3V 120mA, anche quelli connessi a gruppi di 3 in serie, ogni gruppo con la sua resistenza ... pero' la portata di 120mA non e' compatibile con l'uso su una strip che non garantisce alcuna dissipazione, quindi tocca misurare l'assorbimento di una sezione da 3V (oppure di una strip, e poi dividerlo per il numero di sezioni da 3V presenti), per saperlo con certezza (gli 800mA/metro per la strip da 60led/m li dichiara il venditore, il che farebbe circa 40mA per ogni sezione da 3 led, il che ci sta, ma saranno dati veri ? ... ;)) ...

Ci sono anche le strip con i 5630/5730, ma io in genere le lascio perdere, quei led si bruciano troppo facilmente se non sono saldati su un pcb che dissipa calore ...

A proposito … ti ho buttato giu una delle possibili configurazioni per pilotare i 4 display piu i punti lampeggianti di separazione usando un paio di HC595 (e’ relativo alla parte esterna, non ti ho segnato i pin di arduino perche’ quelli decidi tu quale usare) … non e’ l’unica soluzione possibile, quindi vedi tu se ti puo andare bene …

nota: i condensatori di filtro, possono sembrare troppi, ma fidati, non lo sono (poi andranno “sparpagliati” in vari punti dello stampato, specie quelli sul 5V, dove due da 100n andranno vicino ai due integrati) … inoltre le resistenze di pulldown/pullup da 1K e quella di “terminazione” sulla linea fra i due IC … negli schemi che recuperi da internet di solito non le mettono (come non mettono mai neppure i pin master reset e output enable, il che limita molto il modo di utilizzo, mentre invece per usare gli shift correttamente ci vorrebbero) … pero’ ho visto in alcuni progetti che usavano catene di 595 che avevo realizzato, che senza metterle a volte il sistema si comporta in modo strano o irregolare, per cui io preferisco sempre metterle anche se sono solo due integrati … ;)EDIT: dimenticavo, mentre fai i test, usando solo i display piccoli ed un led per i punti lampeggianti, il 12V puoi collegarlo al +5V, volendo … andra’ alimentato a 12V in seguito, con le cifre grandi … inoltre, sempre mentre fai i test, fra gli emettitori dei BC337 in basso ed i display andranno ovviamente aggiunte in serie delle resistenze da 330 ohm, che poi saranno tolte con le cifre a 12V (non le ho disegnate perche’ quello sarebbe lo schema gia per le cifre grandi … in questo modo, se realizzi questa parte su una millefori o PCB, poi non la devi rifare per usare quelle)

Etemenanki: A proposito ... ti ho buttato giu una delle possibili configurazioni

Piccola dimenticanza, le resistenze sulle basi dei BC327.

inoltre, sempre mentre fai i test, fra gli emettitori dei BC337 in basso ed i display andranno ovviamente aggiunte in serie delle resistenze da 330 ohm, che poi saranno tolte con le cifre a 12V

Qui volevi dire collettori immagino.

Trovo curiosa l'idea di mettere il comando punti in mezzo ai pin di scansione display, mi sembra che complichi un po'il software. Nel mio schema avevo pensato di comporre il valore ad 12 bit con questa formula (il punto decimale sarebbe stato il pin 7 del primo 595 e l'ordine dei display al contrario):

valore_out = ((codice_display | dpoint) << 4) | (1 << indice_display)

Le resistenze di pull-up/pull-down da 1k mi sembrano esageratamente basse, 5mA ciascuna, non essendo collegamenti lunghi metri (e visto che non ci si deve collegare contatti/pulsanti) delle 10k mi sembrano più che adeguate (le 1k le ho usate qualche volta per collegamenti di qualche decina di metri non optoisolati... anche se adesso non lo rifarei :stuck_out_tongue: ).

Claudio_F: Piccola dimenticanza, le resistenze sulle basi dei BC327.

Giusto, schema corretto e ricaricato

Qui volevi dire collettori immagino.

Giusto anche questo ... +1 :D

Trovo curiosa l'idea di mettere il comando punti in mezzo ai pin di scansione display

Come ho detto, questo e' solo uno dei modi possibili, si puo anche nusare l'ultima uscita del primo shift ed un solo BC337 verso massa, oppure pilotarlo in modo indipendente con un'altro pin, o cambiarne l'ordine ... il mio e' "uno" dei possibili modi, non certo l'unico ;)

Le resistenze di pull-up/pull-down da 1k mi sembrano esageratamente basse

Infatti il loro scopo principale non e' quello di fare da pullup/pulldown ;) ... in alcune delle mie realizzazioni, specie quando c'erano piu di 3 o 4 shift in serie, a volte notavo irregolarita' nel funzionamento o nel caricamento delle stringhe, che in teoria non avrebbero dovuto esserci ... dopo un paio di settimane di tentativi a vuoto per risolvere il problema, su un PCB che ne montava 6 in catena, ho scoperto che "caricando" i segnali con resistenze da 1K (inclusi i loop che dall'uscita di uno shift vanno all'ingresso del successivo) il problema spariva ... nei datasheet non sembra essere riportato nulla di specifico al proposito, e non so perche' senza metterle a volte non funzioni correttamente (perche' i livelli in teoria sono stabili e non ci sono ingressi volanti), pero' da quella volta le metto sempre, anche dove ci sono solo un paio di shift register, e di problemi non ne ho piu avuti ... come diceva la nonna, "meglio prevenire che curare" ;)

Etemenanki: tentativi a vuoto per risolvere il problema, su un PCB che ne montava 6 in catena, ho scoperto che "caricando" i segnali con resistenze da 1K (inclusi i loop che dall'uscita di uno shift vanno all'ingresso del successivo) il problema spariva ... nei datasheet non sembra essere riportato nulla di specifico al proposito, e non so perche' senza metterle a volte non funzioni correttamente (perche' i livelli in teoria sono stabili e non ci sono ingressi volanti), pero' da quella volta le metto sempre, anche dove ci sono solo un paio di shift register, e di problemi non ne ho piu avuti ... come diceva la nonna, "meglio prevenire che curare" ;)

Ok grazie, , mi ero giusto dimenticato di chiedere se la scelta derivava da osservazioni empiriche / esperienza personale. Ammetto che finora come shift register ho usato solo i CMOS CD4021 e CD4094, che anche in catene da dodici non hanno mai manifestato alcun problema.

Giusto per precisare, confermo che le resistenze in funzione di pull-up/down devono essere da 1k per le serie TTL 74, mentre vanno benissimo da 10k per le serie CMOS CD40, è proprio una questione di correnti necessarie al buon funzionamento dei transistor interni (o dei fet nel caso dei CMOS).

Se parliamo di strip ci sono i led con il chip ws2812. Con un solo piedino comandi tutto!

Per i consumi teniamo conto che ci sono strip da 30 led al metro ma anche da 144 led al metro. Meglio contare i led.

Rieccomi! Ciao a tutti, ho visto e letto con piacere tutti i vostri suggerimenti.
Domani dovrebbe arrivare la scheda è il kit per iniziare ad impostare il tutto (oggi hanno provato a consegnarla ma non ero a casa:( )
Inizierò a lavorarci presto e sicuramente avrò bisogno di suggerimenti passo passo…
Nel frattempo vi chiedo: posso impostare tutti i collegamenti e fare i primi test utilizzando solo l’alimentazione del cavo usb? Non ho ancora preso L’alimentatore…

Se per primi test intendi dire comandare un po' di LED si, basta la USB.