luminosità led e display su shift register

Ciao!
Sto lavorando su un progetto arduino in cui ho uno shift register che comanda 8 led.
Mi servirebbe di poter comandare la luminosità degli stessi tramite un potenziometro, ma chiaramente se uso solo quello l'intensità varia a seconda del numero di led accesi.
Poichè con un altro shift register devo anche comandare un display sette segmenti, vorrei un sistema che permettesse di variare la luminosità anche di questo tramite lo stesso potenziometro.
I led dovranno essere due per pin, quindi l'idea che mi è venuta (non trovando niente circa la possibilità di impostare l'usicta direttamente dagli sr) è quella di usare 8 bjt come interruttori collegando i due led con la loro resistenza, usare un sette segmenti ad anodo comune e un amplificatore operazionale come buffer, con tensione di ingresso comandata tramite potenziometro, per avere una tensione fissa in uscita ma una corrente tale da evitare le variazioni di luminosità con l'aumento degli elementi accesi...spero di essermi spiegato... XD
Potrebbe funzionare come idea o sono del tutto fori strada?!

Esistono degli "shift/drivers", che integrano uno shift register (in genere a 16 uscite) ed una serie di regolatori di corrente, uno per uscita, la cui corrente e' controllabile tramite una resistenza ... potresti usare uno di quelli ... ce ne sono di piu tipi, ad esempio i piu comuni sono il CAT4016 della ON_Semi http://www.onsemi.com/pub_link/Collateral/CAT4016-D.PDF e l'STP16DP05 della ST http://datasheets.picprojects.org/stp16dp05.pdf, ma ce ne sono altri ...

EDIT: se proprio servono solo 8 canali, il CAT4008 http://www.onsemi.com/pub/Collateral/CAT4008-D.PDF ha giusto quelli :wink:

potrebbe funzionare ma é troppo complicato.
Usa la libreria shiftPWM http://www.elcojacobs.com/shiftpwm/
Ciao Uwe

Che dire, grazie!!
Mi avete fornito sia la soluzione hardware che software!
In questo particolare circostanza probabilmente è più utile la soluzione di Etemenanki, se la integro con quella che avevo pensato io posso anche usare due trimmer per gestire la luminosità distinta di led e display ed il potenziometro per gestirli entrambi!
L'unico problema è che i componenti mi sembra di capire ci siano solo in formato smd il che mi complicherebbe non poco la vita, anche solo per fare i test su bradboard! Che voi sappiate esistono anche in formato dip?

Purtroppo temo di no, o almeno io non ne ho trovati presso nessuno dei miei fornitori ... ormai i costruttori tendono sempre piu a "snobbare" i formati DIP in favore di quelli SMD, anche componenti che prima erano comuni in DIP ora si fatica a trovarli ...

Ci sono le schedine adattatrici, da SOP o SOIC a DIP, ma e' un po una rottura ...

Artal, la soluzione più semplice è usare 1 solo transistor sul comune del display (NPN se katodo comune , PNP se anodo comune) pilotato da un pwm (hardware o software)

icio:
Artal, la soluzione più semplice è usare 1 solo transistor sul comune del display (NPN se katodo comune , PNP se anodo comune) pilotato da un pwm (hardware o software)

Non ha molto senso pilotare in PWM un transistor, se a lui serve di usare un potenziometro ... se mette una resistenza per ogni led e segmento, la soluzione piu semplice e' di usare un regolatore di tensione variabile, tipo LM317, per cambiare l'alimentazione del positivo in comune ai led (che se pilotati da uno shift, dovrebbero essere tutti collegati ad anodo comune) e cambiare la luminosita' variando quella ...

Sì, Etemenanki lo sò che Artal vorrebbe usare un potenz.. ma io gli propongo un enhancement, la luminosità la regoli con i pulsanti che sicuramente ha a bordo e il valore lo memorizzi in eerom, così elimini il pot, la manopola, l'ingresso analogico, il 317 etc.. un transistor + 1 resistenza costano 5 centesimi di euro e sono piccoli piccoli.

Oddio certo in questo modo la cosa sarebbe sicuramente più "elegante" però dovrei usare un pin (pwm) che altrimenti avrei sostituito con un semplice potenziometro...ci penserò anche perchè per il progetto l'interfaccia con i display è collegata ad arduino via cavi e non direttamente sullo stessa scatola, ma uno più uno meno non farò certo differenza!

Quindi ricapitolando: alla fine ho 16 led e 1 display sette segmenti (ad anodo comune), se volessi usare ad esempio un CAT4016 per i primi e un CAT4008 per il secondo, così da regolare l'intensità di ognuno dei due elementi distintamente con due trimmer, e poi regolare l'intensità globale in pwm potrei usare semplicemente un pnp?
Cioè il pin pwm collegato con una resistenza da 1k alla base, 5v al collettore e l'emettitore collegato agli anodi dei led e del display dovrebbe funzionare giusto?

Per il momento ho dei bc337, ho visto che supportano al massimo 1A, anche esagerando e considerando 20mA a led e segmento ho comunque una corrente inferiore a 500mA quindi dovrebbe andare no?

I BC337 NON sopportano 1A ! ... non basatevi mai sul riquadro "absolute maximum ratings" (o "maximum ratings" a volte) dei datasheets, perche' quelli sono i valori massimi assoluti a cui i componenti possono resistere, ma solo per tempi brevissimi, normalmente picchi compresi fra 2 e 5 NANOsecondi :stuck_out_tongue: ... se c'e' il valore che cercate nei riquadri dei parametri operativi standard ("operating parameters" oppure "electrical characteristics"), basatevi su quelli (preferibilmente le colonne "TYP" o "Typical"), altrimenti considerate "sicuri" valori che non superino la meta' di quelli "maximum", o anche meno se non si tratta di componenti di potenza, e considerateli tutti ... se ad esempio c'e' scritto, come nel datasheet del BC337 "collector current 800mA" e "collector-emitter voltage 50V", c'e' anche scritto "power dissipation 625mW at 25C" ... il che significa che il transistor NON puo sopportare 800mA a 50V, magari usato come regolatore di tensione, perche' la potenza da dissipare sarebbe molto piu alta, con conseguente "inca**atura esplosiva" del transistor in questione :fearful: :grin:

Ovviamente poi dipende da come lo si usa, ma anche usandolo semplicemente come interruttore a collettore aperto, e' sempre meglio non superare i 500 / 600 mA, se si vuole garantirgli una vita lunga e felice :grin:

Per quell'uso suggerirei il classico, vecchio, robusto TIP120, che per scassarlo dovete pigliarlo a mazzate ]:smiley: :wink:

Ecco perchè chiedo qui sul forum, come mi muovo pesto una cacca! XD
Piano piano imparerò!
Un'ultima info Etemenanki, mi sapresti consigliare dove acquistare gli shift register che mi hai indicato e le schedine adattatrici sul web?
Poi io ho un semplice saldatore "standard" di quelli da 15 euro, la punta è abbastanza grandina, non so se è adatta per saldare i componenti smd, anche in vista della mia inesperienza totale con questi componenti. E' una cosa fattibile o comunque è meglio che prima mi procuri dell'attrezzatura più adeguata?

Farnell li ha a catalogo entrambi sui due euro circa, ma al momento il 4008 lo da come non disponibile ... RS non li tiene neppure ... Mouser li ha entrambi a prezzo minore di Farnell ... sono siti che garantiscono una certa velocita' di spedizione, ma ovviamente si fanno pagare il servizio , caricandoti "spese di spedizione" extra ... gli adattatori li trovi piu facilmente su ebay, credo, oppure in negozi online che hanno materiale per robotica e prototipi ... come ad esempio questi http://www.ebay.com/itm/1-Pcs-SSOP16-TSSOP16-SOIC16-to-DIP-16-PIN-Adapter-PCB-Board-Converter-2-Sides-/360660873863?pt=LH_DefaultDomain_0&hash=item53f9103287 per il 4008, che e' in formato SOIC16 ... per il 4016 devi vedere il formato che prendi, perche' ci sono 4 diversi packages, ma ti consiglio di prendere quelli in SOIC24, o al massimo quelli in TSSOP24, perche' gli altri sono piu piccoli e piu difficili da saldare.

Per l'attrezzatura, dipende piu che altro dalla tua abilita' con il saldatore, ma fondamentalmente un saldatore con una punta fine e di buona qualita' e' meglio ... non e' necessario che sia costoso, solo che sia decente, e possibilmente non uno di quelli con i "vitoni" di fianco che tengono la punta :stuck_out_tongue_winking_eye: XD

rieccomi a cercare di implementare finalmente il progetto.
Per questioni di praticità mi farebbe comodo usare solo driver da 8bit, in ordine devo controllare 8 led, un display e altri 8 led, e quindi è più facile semplicemente posizionarne uno per ogni 8 led-segmenti. I led però devono essere collegati in serie, e devono avere lo stesso grado di luminosità, ma usando due driver dovrei usare anche due potenziometri.
Se collego i due pin per controllare la corrente in uscita ad un solo potenziometro per calcolare la corrente in uscita devo considerare la resistenza a metà?
Cioè, usando il cat4008 nel datasheet c'è scritto che a 3,09K in uscita ho sui 20mA, collegandone due dovrei averne 10 giusto? Di conseguenza se ne voglio 20 la resistenza dovrebbe essere di circa 1,54K?