Quante luci individuali può controllare un arduino


19

Voglio usare una normale scheda Arduino per controllare i LED: qual è il maggior numero di luci che posso controllare individualmente dalla scheda?

Esiste un tutorial su come collegarlo?


3
Devi specificare se vuoi controllare uno o più led. Inoltre, aggiungerei "evitando il controllo seriale e circuiti integrati aggiuntivi". La risposta tende all'infinito se la frequenza di aggiornamento o le parti hardware non sono vincoli.
ppvi,

Risposte:


26

Credo che usando le linee N Charlie-plexing controlli i LED N * (N-1). C'è un buon articolo su Wikipedia.

Una mia amica, Jimmie P. Rodgers, monta 126 LED su uno scudo Arduino. Usa il charlie-plexing per controllare i LED. Alcune informazioni sulla sua bacheca sono disponibili all'indirizzo - jimmieprodgers.com/2009/12/my-development-process/ (copia di archive.org)


All'ultimo incontro del gruppo di utenti Arduino di Boston, Jimmie P. Rodgers ha disegnato un diagramma di plexing Charlie come una matrice con reti etichettate. Gli schemi disegnati in questo modo sembravano fare un buon lavoro nel comunicare il concetto. Ho creato un paio di schemi simili - Vedi http://wiblocks.luciani.org/FAQ/faq-charlie-plex.html


ho imparato qualcosa di nuovo oggi; hai il mio voto :-)
JonathanD,

4
Ricorda che con questo metodo è possibile solo accendere i LED N-1 alla volta.
AngryEE,

2
Il jimmieprodgers.comcollegamento in questa risposta è caricato con virus.
Vivek Maharajh,

1
@vivekmaharajh: ho sostituito il link con un link a una copia di archive.org della pagina originale.
Dave Tweed

13

È possibile utilizzare Shift Registers ( http://en.wikipedia.org/wiki/Shift_register ) per ottenere tutte le uscite parallele da un singolo flusso seriale che si desidera.

Dovrai preoccuparti dei tuoi limiti di potenza. In realtà non ho mai usato un Arduino da solo, ma presumo che abbia un limite attuale proprio come fanno i PIC. Inoltre, i registri a turno avranno un limite attuale. Se ti imbatti in questo, dovrai guardare usando qualcosa come un MOSFET per permetterti di controllare i LED senza dover trarre molta energia direttamente dal tuo micro controller.


7

Ogni dato pin del microcontrollore AVR può essere alimentato fino a 40 mA e l'alimentazione totale fornita o affondata dal chip (ovvero, a terra e pin Vcc) deve essere inferiore a 200 mA.

Il charlieplexing è un'ottima soluzione per le situazioni in cui sono necessari molti LED, ma può cavarsela con un solo LED acceso alla volta. Una scheda Arduino standard (come una Duemilanove) fornisce 17 pin I / O "liberi", senza contare TX, RX, Reset o pin 13. Quindi, è possibile collegare 17 * 16 = 272 LED. Questo può funzionare bene, soprattutto se si tiene acceso un LED o si esegue rapidamente la scansione tra pochi. Ma se stai provando a illuminare l'intera matrice con uno schema, scoprirai che ognuno è acceso (leggermente inferiore a) 1/272 del tempo, quindi se la corrente del tuo drive era di 30 mA in un dato momento, ogni LED la corrente media sarebbe di circa 0,1 mA, piuttosto debole.

Se non hai bisogno di molti LED ma invece hai bisogno di più luminosità, il multiplexing tradizionale potrebbe essere un'opzione migliore. In questo caso, usi alcune delle tue linee come righe e altre come colonne in una matrice. Se si utilizza una corrente LED da 10 mA, è possibile definire una matrice di 4 colonne e 13 righe, in cui tutti e 4 i LED di una riga possono essere accesi alla volta e si esegue la scansione delle righe. Quindi ogni riga è attiva 1/13 del tempo con una corrente di 10 mA, quindi la corrente media dei LED può arrivare a 0,76 mA, ma ottieni solo 4 * 13 = 104 LED. (Decisamente più luminoso per LED rispetto al charlieplexing.)

Il limite nell'ultimo esempio è 40 mA per pin sull'AVR, poiché ogni riga che guida i pin genera 4x10 = 40 mA. Se si consente ai transistor esterni (che possono essere economici e di piccole dimensioni) di essere aggiunti alle uscite di riga, è possibile evitare quel limite particolare e diventare più luminosi. Ad esempio, è possibile creare un array 8x9, con 8 righe e 9 colonne, 72 LED in totale. Una delle 8 file è accesa alla volta, selezionata attraverso il transistor. È possibile accendere contemporaneamente fino a tutti e 9 i LED in una determinata riga, pilotati a 20 mA, quindi 180 mA provengono dal transistor e si mantengono i limiti attuali dell'AVR. La corrente media per LED è ora di 20 mA / 8 = 2,5 mA, generalmente ragionevolmente luminosa.


6

C'è una bella, tutorial dettagliato qui che include una sezione utilizzando un Arduino per eseguire un cubo di 8x8x8 LED. (Non perdere il film di YouTube che hanno)

inserisci qui la descrizione dell'immagine


Sembra qualcosa che ho visto alla mostra UFO a Minneapolis intorno al 1979 o giù di lì, ma ricordo che si tratta di qualcosa intorno ai 4096 lampadine in miniatura. Qualcun altro ricorda di aver visto qualcosa del genere?
supercat

4

Esistono molti espansori I / O che utilizzano bus SPI o I2C. Con un singolo modulo MSSP puoi controllare quasi una quantità infinita di uscite digitali come i LED.

Vedere i fogli dati Microchip o le note applicative per le seguenti parti:
SPI - MCP23S08
I2C - MCP23008


1

Con 17 pin I / O, diciassette transistor NPN (follower di emettitori per aumentare la corrente) non dovrebbero esserci problemi particolari che mostrano 272 LED in combinazioni arbitrarie a ciclo di lavoro 1/17, con corrente media o 0,7 mA (200 mA / 272), limitato da la capacità del chip di abbattere 200mA alla volta. L'aggiunta di un diodo per ottenere una caduta di 0,7 volt consentirà l'aggiunta di altri 17 LED (riducendo il ciclo di lavoro a 1/18), sebbene la luminosità non corrisponda abbastanza agli altri.


Puoi chiarire che tipo di circuito stai suggerendo qui? Il follower dell'emettitore è una topologia BJT.
Kevin Vermeer

@reemrevnivek: vedi modifica sopra. Avevo lanciato mentalmente alcune variazioni e si erano confusi insieme. Se si stanno aggiungendo transistor per potenziare l'unità high-side ma non quella low-side, devono essere BJT. Se uno utilizzava transistor per entrambi, i mosfet potrebbero essere migliori.
supercat

0

Mentre Windell Oskay sostiene che 104 LED sono i massimi senza aggiungere più transistor, Tom Igoe ha pubblicato le foto di una matrice di 128 LED controllata direttamente da un singolo Arduino Mega - nessun transistor extra, discreto o integrato.

Tom Igoe "tradisce" superando brevemente la "massima corrente assoluta per pin" indicata nella scheda tecnica?


2
No, sta barando usando un mega arduino. :) Il mega ha molti più pin IO di un normale arduino.
Christopher Biggs

@unixbigot - Triste, avevo sperato di vedere un fantastico hack che comportava il riutilizzo del pin di reset per la guida a LED o l'uso della caduta di diodi ..
Kevin Vermeer

1
Il tuo link è morto e dovresti probabilmente collegarti alla risposta di Windell Oskay . Potrebbe non sembrare importante quando pubblichi un post, ma man mano che vengono visualizzate più risposte, il tuo post diventa distante dall'altro.
Kevin Vermeer,

@KevinVermeer: ​​collegamento corretto puntando alla copia di archive.org della pagina originale.
Dave Tweed
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.