Prima di tutto, un Arduino non può pilotare direttamente 100 LED, poiché la corrente combinata che il dispositivo deve alimentare o affondare supererà di gran lunga sia il microcontrollore che il regolatore di tensione sulla scheda Arduino. Uno scudo Arduino personalizzato con una propria fonte di alimentazione e regolamento potrebbe adattarsi al conto, però.
Esistono diversi approcci facili, l'approccio più semplice è dettagliato di seguito:
Driver LED a corrente costante TLC5940 in configurazione a cascata:
TLC5940 aziona 16 LED per CI, controllati dall'ingresso seriale attraverso una leggera variante di un'interfaccia SPI. È possibile collegare in cascata fino a 40 dispositivi TLC5940, ma 7 di questi saranno sufficienti per pilotare i 100 LED nella domanda.
Esistono almeno un paio di librerie Arduino ( 1 , 2 ) per TLC5940.
Frequenze di clock suggerite da inviare da Arduino e frequenza di aggiornamento corrispondente:
- GSClk da 1 MHz usando il codice in questo thread .
- 330 KHz SCLK (orologio dati seriale)
- In tal modo, frequenza di aggiornamento dei dati LED 244 Hz
Questo si basa sulle formule del foglio dati:
f (GSCLK) = 4096 * f (aggiornamento)
f (SCLK) = 193 * f (aggiornamento) * n
dove:
f (GSCLK): frequenza minima necessaria per GSCLK
f (SCLK): frequenza minima necessaria per SCLK e SIN
f ( aggiornamento): frequenza di aggiornamento dell'intero sistema a cascata
n: numero in cascata dei dispositivi TLC5940
Il TLC5940 è un dissipatore di corrente costante , quindi gli anodi dei LED sarebbero legati a una tensione di un paio di volt maggiore del LED Vf, o circa 7 volt, a seconda di quale sia inferiore, alimentato indipendentemente dai pin di alimentazione dell'Arduino. Questa sorgente di tensione deve essere in grado di fornire 100 * (qualunque sia la corrente a cui si accendono i LED), ma può essere una sorgente non regolata.
I catodi LED vanno alle linee di trasmissione dei rispettivi circuiti integrati TLC5940.
Lo stesso TLC5940 consuma fino a Icc = 60 mA per dispositivo durante la scrittura dei dati, quindi l'alimentazione di 7 di questi dall'Arduino non funzionerà, richiederà un Vcc regolato indipendente da 3,3 a 5 volt da fornire, idealmente lo stesso valore del Vcc dell'Arduino in uso, e le tracce del terreno devono ricollegarsi al terreno dell'Arduino, ovviamente. L'uso delle parti TLC a una tensione diversa da quella dell'Arduino comporterebbe la necessità di una conversione di livello del segnale seriale, quindi è meglio evitarlo.
Diversi video di YouTube dimostrano l'utilizzo di Arduino con circuiti integrati TLC5940 in cascata.
Sebbene questi circuiti integrati siano stati progettati per pilotare display a LED numerici a 7 segmenti, forniscono un controllo LED individuale, quindi possono essere utilizzati per un massimo di 64 LED per circuito integrato. Due di questi possono essere collegati in cascata per pilotare i 100 LED richiesti. La pagina 13 del foglio dati mostra una configurazione a cascata.
I LED dovrebbero essere collegati elettricamente come gruppi di un massimo di 8 LED ciascuno condividendo una linea catodica (catodo comune), per questo progetto.
MAX7219 / 7221 sono driver LED multiplexing, quindi la luminosità massima dei LED sarà inferiore rispetto a un driver LED statico come la sezione precedente.
Ecco un'utile libreria e guida a matrice di LED che utilizza MAX7219.
Alcuni video pertinenti di YouTube ( 1 , 2 ) potrebbero essere di interesse.
Ancora una volta, questi circuiti integrati sono stati progettati per pilotare display LED numerici a 7 segmenti, forniscono un controllo LED individuale, quindi possono essere utilizzati per un massimo di 40/64 LED per circuito integrato. Due / tre di essi possono essere collegati su un bus SPI Arduino per pilotare i 100 LED richiesti.
Le note di progettazione rimangono le stesse della sezione precedente. Inoltre, la luminosità massima dei singoli LED sarebbe inferiore rispetto al design multiplex dritto del MAX7219.
Ci sono alcuni video di YouTube che potrebbero essere di interesse.
Design discreto dei componenti, registri a scorrimento, espansori IO, strisce LED tagliabili con controller individuali e molti altri ...
Questi sono tutti approcci che sono stati utilizzati con vari livelli di semplicità e successo. Sono implementazioni più complesse rispetto ai 3 approcci di cui sopra, quindi non dettagliate ulteriormente. La ricerca sul Web fornirebbe utili guide per questi approcci, se necessario.
Un fattore irritante chiave per tali progetti è la necessità di resistori di controllo attuali su ogni LED o stringa LED. I dispositivi appositamente progettati per la guida a LED in genere non ne hanno bisogno.
Non ho esperienza personale con quest'ultima serie di opzioni, quindi non posso fare molto.
Nota a piè di pagina: dopo aver risposto a questa domanda, ho trovato una domanda più vecchia , che ha le risposte che descrivono in dettaglio e discutono alcuni degli approcci nella mia ultima sezione. Quella discussione rende interessante "ulteriori letture come compiti a casa".