Pages: [1] 2 3 4   Go Down
Author Topic: multiplexing leds  (Read 2768 times)
0 Members and 1 Guest are viewing this topic.
Bologna
Offline Offline
God Member
*****
Karma: 6
Posts: 547
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Bologna
Offline Offline
God Member
*****
Karma: 6
Posts: 547
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Bologna
Offline Offline
God Member
*****
Karma: 6
Posts: 547
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Ciao Uwe
Logged

Bologna
Offline Offline
God Member
*****
Karma: 6
Posts: 547
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: December 08, 2012, 03:44:16 pm by uwefed » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Bologna
Offline Offline
God Member
*****
Karma: 6
Posts: 547
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
« Last Edit: December 09, 2012, 04:21:21 am by SUBSEA » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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..
Logged


Bologna
Offline Offline
God Member
*****
Karma: 6
Posts: 547
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?  smiley-twist
Logged


Pages: [1] 2 3 4   Go Up
Jump to: