Come posso controllare diverse centinaia di singoli led con Arduino (s)?


10

Sto lavorando a un progetto di elettronica che coinvolge centinaia di LED. (Parlando verso l'alto di 6-700 LED ... molto, lo so.) Esiste un modo per controllare così tanti LED con uno o un paio di Arduinos? Vorrei poter accedere / controllare ogni LED singolarmente poiché quello che voglio fare è tracciare i LED su una mappa murale del mondo. Interfacciamo quindi Arduino con Google Analytics e quando qualcuno accede al mio sito da un determinato luogo nel mondo, il LED più vicino alla sua regione si accenderà quasi in tempo reale.

Qualsiasi aiuto sarebbe apprezzato. Grazie! Ho provato a ricercare alcuni e leggere su multiplexing e charlie-plexing, ma quelli sembrano raggiungere il massimo a circa 100? Suppongo che avrei bisogno di hardware / componenti esterni per poter controllare così tanti LED, ma di cosa avrei bisogno esattamente per farlo accadere? Qualcun altro ha mai creato una matrice LED così grande?

Risposte:


9

Quando si esegue il multiplexing di un gran numero di LED singolarmente, il modo comune è utilizzare una matrice N x M. Il tempo è diviso in N passaggi, in ogni passaggio si attiva una delle N righe e le righe della colonna che corrispondono ai LED che si desidera abilitare. Notare che ciascuna riga può portare M volte la corrente del LED, che richiede un buffering. Ogni LED è acceso solo 1 / N del tempo, quindi per mantenere la luminosità normale è necessario aumentare l'attuale N-fold. Alla maggior parte dei LED non piace questo. Il charlieplexing non è pratico in questa situazione a causa delle grandi correnti coinvolte.

Dalla tua domanda capisco che vuoi abilitare solo 1 LED alla volta? In tal caso non c'è nulla di sbagliato nel Charlieplexing. Un uC con 31 pin I / O può pilotare 900 LED. Sembra che la costruzione sarà un incubo ...


Aggiornamento 5 anni dopo: il multiplexing normale o il charlieplexing sono utili quando hai troppo tempo a disposizione, ma quando dovessi controllare centinaia di LED ora comprerei una lunga striscia di LED WS2801.


Penso di avere qualcosa da aggiungere. Bene, se il problema è l'alta corrente, usa l'alta tensione. come 9v ma per un tempo molto breve di 10mS e ciclo di lavoro calcolato correttamente. Come usa anche aumentare la durata delle lampade a LED.
Standard Sandun,

La tensione caduta da un LED è fissa, così come la tensione di uscita di un Arduino (probabilmente 5 V, per alcuni tipi 3,3 V). L'uso di una corrente più elevata con un ciclo di lavoro più piccolo generalmente riduce la durata del LED.
Wouter van Ooijen,

9

È possibile utilizzare un registro a scorrimento 74HC595 (o simile) economico e facilmente reperibile per controllare facilmente centinaia di LED utilizzando solo pochi pin dell'Arduino.

C'è anche un tutorial su questo sul sito di Arduino!

Serial to Parallel Shifting-Out con un 74HC595

Shifting Out e il chip 595

Prima o poi potresti esaurire i pin sulla tua scheda Arduino e devi estenderla con i registri a scorrimento. Questo esempio si basa sul 74HC595. Il foglio dati fa riferimento al 74HC595 come "registro a scorrimento a 8 bit in ingresso seriale, seriale o parallelo con chiavistelli di uscita; 3 stati". In altre parole, puoi usarlo per controllare 8 uscite alla volta, occupando solo pochi pin sul tuo microcontrollore. È possibile collegare più registri insieme per estendere ulteriormente l'output.


Sarebbe un sacco di registri a turni, ma funzionerebbe :) Avresti bisogno di circa 88 (700 led / 8 led per chip) e solo 1 mcu.
Johan

1
Non dimenticare i driver logici aggiuntivi, poiché 88 input sono abbastanza numerosi da gestire.
Ignacio Vazquez-Abrams,

2

Lo costruirò in modo modulare. Il 6960 di Maxim guiderà 64 LED per te, anche se è un po 'costoso. Sono guidati da un'interfaccia seriale e puoi collegarne fino a 256 insieme.

Anche il 7218/7221 funzionerebbe.


2

Un po 'in ritardo per rispondere a questa domanda, ma qui ci sono 528 LED Charlieplexed su un singolo PICAXE 40X2. Sarebbe fino a 930 LED se tutti i pin fossero dedicati al lavoro.

La build: http://www.picaxeforum.co.uk/entry.php?25-The-PICaxe-orrery

Un video: http://www.youtube.com/watch?v=82LvqiaH-iA

L'architettura PICAXE è piuttosto lenta, quindi il numero massimo di LED che possono essere accesi contemporaneamente è limitato a circa 15 prima che lo sfarfallio diventi un problema. Un processore più veloce e una programmazione più intelligente aumenterebbero significativamente questo numero.


1

Non sono sicuro che la mia risposta sia buona o no ... ma perché non parlare delle strisce LED indirizzabili WS2811 ??

Vogliamo fare una matrice LED per mostrare il testo. C'è un progetto qui ( https://www.pjrc.com/teensy/td_libs_OctoWS2811.html ), realizzato su un Teensy, che è quasi la stessa cosa di un Arduino.

Penso che utilizzi il concetto di PWM (Pulse Width Modulation), consentendo quindi di inviare dati complessi alle strisce LED con un solo filo.

Ma ancora una volta, non sono sicuro che la mia risposta sia buona ...


Il problema è che i tempi richiesti limitano il numero di LED che è possibile concatenare e diffonderli su più catene aumenta il tempo complessivo di elaborazione.
Ignacio Vazquez-Abrams,

0

Abbiamo avuto un bel po 'di discussione riguardo al pilotaggio di molti LED in una recente domanda qui. La mia risposta sembra essere direttamente applicabile al tuo problema qui. Vedi la risposta qui:

Guida di LED a lunga distanza


4
Riesci a riportare le informazioni applicabili e ad adattarle a questa domanda, se la tua risposta funziona perfettamente per entrambi è un segno di un duplicato esatto.
Kortuk,

0

Sulla base delle informazioni su http://bildr.org/?s=shift+register sul registro a scorrimento 74H595 con un Arduino Uno, che diceva "se ne hai 1000 di questi concatenati insieme" è stato avviato un progetto su un display a LED con 320 LED. Quando ho superato i 100 LED, lo sfarfallio è scaduto e alla fine ho frustato l'Arduino.

Quindi ho parlato con il supporto tecnico di Sparkfun che mi ha venduto le schede breakout per il 74H595. Ha detto che puoi avere solo cinque o sei LED alla volta. Quindi sono tornato indietro e ho riletto l'articolo su BLDR e mi sono reso conto che puoi controllare migliaia di LED usando 74H595 / Arduino ma puoi averne solo una dozzina alla volta. (Questo ha senso perché Arduino consentirà 200 mA attraverso l'uscita 5 volt e ogni LED assorbe 20 mA, quindi circa dieci è tutto ciò che si alimenterà in modo sicuro)

Sono stati visti transistor che possono essere accesi con 1 mA di corrente. Se questo è vero se si potesse progettare un circuito che controlla transistor che hanno un collettore di tensione / corrente molto più elevato al flusso dell'emettitore. Quindi si potrebbe usare la combinazione Arduino / 74H595 per controllare i transistor che in un circuito con corrente più elevata.

Allen a Dallas

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.