POV 2.0: Il Led Controller TLC5940 in breve


16-Channel LED Driver w/EEprom DOT Correction & Grayscale PWM Control - TLC5940

Questo chip prodotto dalla Texas Instruments, che ci ha gentilmente inviato alcuni “samples”, viene adoperato nel POV 2.0. Si tratta di un integrato capace di pilotare  16 LED   e che permette di regolare la luminosità di ogni LED con 4096 livelli di intensità differenti. Il TLC5940 si interfaccia ad un µcontrollore via SPI (Serial Peripheral Interface).

Le sue Modalità di Funzionamento

Il TCL5940 ha tre modi di funzionamento:

  • Grayscale PWM Mode.
  • Dot Correction Data Input Mode.
  • EEPROM Programming Mode.

Di seguito si prende in esame il funzionamento in sola modalità GrayScale.

La Regolazione della Luminosità (Grayscale PWM Mode)

In questa modalità, come detto, è possibile impostare la luminosità di ognuno dei 16 led connessi al chip. Per programmare l’ intensità luminosa dei 16 led occorre inviare al chip un blocco dati di 192 bit.

IL Blocco Dati (192-bit Data Block)

Il blocco di dati seguente contiene tutte le informazioni necessarie per programmare la luminosità di tutti e 16 i LED ( canali ) contemporaneamente.

Il blocco dati da 192 bit  è suddiviso in 16 blocchi  da 12 bit cadauno. Ognuno dei blocchi da 12 bit consente di inviare un numero compreso tra 0 e 4095, per determinare, all’ interno del chip la regolazione della luminosità di ogni LED con la tecnica PWM (modulazione a larghezza di impulso). I 16 blocchi sono ordinati da OUT15 a OUT0.

Ogni blocco viene inviato al TLC5940 a partire dal  bit più significativo (MSB first or big endian).
Il valore decimale 500 corrisponde:

  • in esadecimale a:  1        F        4
  • in binario a:         0001 1111 0100.

Per inviare a tutti i 16 LED lo stesso  valore di luminosità pari a 500, occorre trasmettere il seguente data block composto da 24 byte = 24*8 bit=192 bit:

0x1F, 0x41, 0xF4, 0x1F, 0x41, 0xF4, 0x1F, 0x41, 0xF4, 0x1F, 0x41, 0xF4
0x1F, 0x41, 0xF4, 0x1F, 0x41, 0xF4, 0x1F, 0x41, 0xF4, 0x1F, 0x41, 0xF4

Invece, il pattern seguente, composto da 16 parole di 12 bit ognuna, può essre usato in fase di test per accendere i 16 LED ( canali ) collegati al TLC5940 con intensità dimezzata da un led all’  altro (i canali 13,14,15 risultano spenti):

// MSB                              LSB

0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, // Canale 15   (0)

0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, // Canale 14   (0)

0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, // Canale 13   (0)

0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 1, // Canale 12    (1)

0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 1, 0, // Canale 11   (2)

0, 0, 0, 0, 0, 0, 0, 0,   0, 1, 0, 0, // Canale 10    (4)

0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, // Canale 9      (8)

0, 0, 0, 0, 0, 0, 0, 1,   0, 0, 0, 0, // Canale 8     (16)

0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, // Canale 7    (32)

0, 0, 0, 0, 0, 1, 0, 0,   0, 0, 0, 0, // Canale 6    (64)

0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, // Canale 5    (128)

0, 0, 0, 1, 0, 0, 0, 0,   0, 0, 0, 0, // Canale 4   (256)

0, 0, 1, 0, 0, 0, 0, 0,   0, 0, 0, 0, // Canale 3   (512)

0, 1, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, // Canale 2   (1024)

1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // Canale 1   ( 2048)

1, 1, 1, 1, 1, 1, 1, 1,   1, 1, 1, 1.  // Canale 0   (4095)  luminoità max

Lo stesso pattern sotto forma di 24 byte idoneo per essere inviato via SPI:

0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001, 0b00000000, 0b00100000, 0b00000100, 0b00000000, 0b10000000, 0b00010000, 0b00000010, 0b00000000, 0b01000000, 0b00001000, 0b00000001, 0b00000000, 0b00100000, 0b00000100, 0b00000000, 0b10000000, 0b00001111, 0b11111111.

Come Inviare il Data Block tramite l’ interfaccia SPI del µControllore

Il data block, una volta che è stato organizzato nel formato spiegato, è pronto per essere spedito al TLC5940 attraverso l’ interfaccia SPI. Al pin SCLK va connessa l’ uscita del clock SPI del µcontrollore. Il pin GSCLK può essere connesso al pin SCLK o ad un pin a parte del µcontrollore. Al pin SIN va invece collegata l’ uscita MOSI ( Master Out Slave In ) del µcontrollore. Per il suo funzionamento il TL5940 richiede altri due pin che non fanno parte dell’ interfaccia SPI e sono indicati come: BLANK e XLAT. Il pin BLANK controlla l’ accensione di tutti i LED. Il pin XLAT funge da impulso di scrittura del data block nel latch interno del TLC5940. I pin DCPRG e VPRG vanno connessi a massa se non si intende usare le altre due modalità di funzionamento possibili del TLC 5940.

Il data block deve essere inviato al chip seguendo i  6  passi seguenti:

  • Settare BLANK
  • Inviare l’ intero data block via SPI
  • Resettare BLANK
  • Settare XLAT
  • Generare un ritardo di almeno 2us
  • Resettare XLAT

Per ulteriori dettagli sulle modalità, timing, dasy chaining  e quant’ altro va consultato il data-sheet del TLC5940.

Per la corretta programmazione del chip consultare anche il TLC5940 Programming Flow Chart messo a disposizione dalla TI.