Go Down

Topic: multiplexing leds (Read 3272 times) previous topic - next topic

Subsea

Ciao a tutti! Avete già fatto l'albero? Restando in tema natalizio, vorrei realizzare delle decorazioni luminose per la finestra della mia cameretta multiplexando dei led. Praticamente faccio un quadrato di 7*7 led e, multiplexandoli, ho 14 uscite da connettere
all'Arduino. utilizzerei dei NPN per i catodi dei led, ma per gli anodi? non penso che l'arduino mi regga 49 led quando sono tutti accesi. devo fare un NPN che controlla un PNP? Ci sono metodi più convenienti? grazie!

uwefed

Come puoi alimentare 49 LED se li multiplexi 7x7?
Al massimo alimenti 7 LED contemporaneamente.
Se tieni la corrente sui led sui 10mA puoi collegarli direttamente sui pin di Arduino. Se colleghi i Anodi su Arduino puoi usare un ULN2003 per i catodi comuni.

Ciao Uwe

Subsea

Quindi basta il transistor  sul catodo dei leds? Non rischio di bruciare l Arduino? Pensavo che ci volessero dei BJT anche sul positivo...

uwefed

Sulle uscite del Arduino devi mettere le resistenze per limitare la corrente.
Ciao Uwe

Subsea

Ok grazie mille. E se anziché led fossero lampadine? Come dovrei fare?

uwefed

Lampadine consumano molto piú corrente rispetto ai LED e sono piú costose.
In quel caso Ti serve Un pilotaggio tramite transistori.

Ciao Uwe

Subsea

Quindi quello che avevo proposto io all'inizio? NPN collegato poi ad un PNP?
p.s. So che le lampadine sono sconvenienti, ma è solo per capire meglio!

leo72

Ma il multiplexing sfrutta appunto l'accensione sequenziale dei led.
Avendo un quadrato 7x7, come ti ha detto Uwe nel peggiore dei casi hai 7 led accesi.
Il multiplexing funziona proprio così.

Se vuoi stare assolutamente tranquillo, metti uno shift register, come il 74595, per pilotare gli anodi dei led (con 7 resistenze, una per ogni uscita, calcolata però per alimentare 1 singolo LED per volta). Sui catodi hai 2 soluzioni: o 7 transistor PNP oppure metti un ULN2803 (un array di darlingthon). Io opterei per il secondo, meno componenti da usare: considera che per i 7 transistor ti servono poi anche 7 resistenze per pilotare le basi e 7 resistenze di pull-down tra base ed emettitore.

Quindi, come operi? Con l'ULN2803 metti a massa la prima fila di LED, poi con lo shift register dai corrente ai LED che devi accendere. Tieni acceso per qualche istante, poi passi alla seconda fila e così via. Per pilotare il 595 usi 3 pin. Per pilotare l'ULN2803 ne usi 7. Ma puoi ridurre il consumo di pin a 3 soli se piloti l'ULN2803 interponendo un 74238 (un decoder 3-a-8), così impieghi anche in questo caso solo 3 pin.

uwefed

#8
Dec 08, 2012, 09:09 pm Last Edit: Dec 08, 2012, 09:44 pm by uwefed Reason: 1
Leo non hai parlato delle resistenze per limitare la corrente dei LED. Quelli vanno tra catodo e il transistore o ULN2803.
Il ULN2803 puó essere pilotato da un altro shift register come il 74HC595. Il vantaggio del  74HC238 é che sempre solo una uscita é H e percui una sicurezza per non accendere piú file di catodi.

Ciao Uwe

leo72


Leo non hai parlato delle resistenze per limitare la corrente dei LED. Quelli vanno tra catodo e il transistore o ULN2803.

Ho consigliato di metterle sulle uscite del 595, in ingresso agli anodi dei led.

Quote

Il ULN2803 puó essere pilotato da un altro shift register come il 74HC595 Il vantaggio del  74HC238 é che sempre solo una uscita é H e percui una sicurezza per non accendere piú file di catodi.

Esatto, così siamo sicuri di non avere mai più di 7 led accesi insieme neanche per sbaglio.

uwefed



Leo non hai parlato delle resistenze per limitare la corrente dei LED. Quelli vanno tra catodo e il transistore o ULN2803.

Ho consigliato di metterle sulle uscite del 595, in ingresso agli anodi dei led.

Hai ragione. Ho fatto il l'errore.
Ciao Leo

Subsea

#11
Dec 09, 2012, 10:18 am Last Edit: Dec 09, 2012, 10:21 am by SUBSEA Reason: 1
Ma questi shift register come funzionano? Io una volta ho usato un 4511 per un display 7 segmenti, è simile? cioè, ho quattro pin, se ne metto high il primo e il secondo e low il terzo mi si accendono determinati pin dell'integrato?

leo72

I 74595 sono shift register del tipo serial in/parallel out, cioè che ricevono i dati serialmente ed attivano le uscite in base allo stato del bit corrispondente al pin.
Quindi tu spedisci un byte, es. 0b10101010 e lui mette su HIGH i pin 7/5/3/1 mentre lascia su LOW i pin 6/4/2/0.
http://www.arduino.cc/en/Tutorial/ShiftOut

Se vuoi invece fare come dici tu, puoi usare un 7447 che è un driver BCD per display a segmenti. Quindi spedisci una tripletta di bit ed attivi il segmento corrispondente:
000->uscita 0; 001->uscita 1; 010->uscita 2 ecc..

Subsea

ok, penso di aver capito, anche se non ho mai lavorato sui byte. Li devo inviare via seriale?

leo72


ok, penso di aver capito, anche se non ho mai lavorato sui byte. Li devo inviare via seriale?

NO.
Se usi il 74595 li spedisci con la funzione shiftOut usando 3 pin a tua scelta.
Hai letto la pagina che ti ho linkato?  ]:D

Go Up