Applicazioni Pratiche del Driver LED MAX7219

0

Di Stefano Lovati

Il progetto presentato in questo articolo permette la realizzazione di un utile e moderno VU meter, in grado di visualizzare su un display composto da una matrice d 32×8 led, le componenti di frequenza di un segnale audio campionato con la scheda Arduino Uno. Il progetto rappresenta inoltre l’occasione per studiare e apprendere il funzionamento del MAX7219, un driver led programmabile utilizzabile in numerose applicazioni pratiche.

 

 

In questo articolo analizzeremo le caratteristiche tecniche, il funzionamento e le principali applicazioni di un componente che, per versatilità, basso costo e semplicità di utilizzo deve necessariamente fare parte del bagaglio tecnico di ogni maker: il MAX7219/MAX7221 prodotto da Maxim Integrated. Il settore di riferimento è quello optoelettronico, in particolare il pilotaggio tramite interfaccia digitale di diverse tipologie di display: dai classici display a 7 segmenti, fino ai più moderni display con matrici di led. Il display, indipendentemente dalla tecnologia utilizzata per la sua fabbricazione (LCD, LED, OLED, a matrice di led o altro ancora), rappresenta un componente fondamentale per ogni appassionato di elettronica, uno strumento indispensabile per molti progetti embedded dove l’interfaccia uomo macchina, per ragioni legate alla disponibilità limitata di risorse hardware oppure al budget, è ridotta ai minimi termini. Come applicazione pratica del MAX7219 presenteremo un progetto che, utilizzando Arduino e un display realizzato con una matrice di 32×8 led, visualizza lo spettro a 32 bande relativo a un segnale audio acquisito in tempo reale.
Cercheremo quindi di unire l’utile al dilettevole, integrando le nozioni teoriche con un’utile applicazione dove si potranno mettere a frutto e comprendere meglio i concetti assimilati.

Il MAX 7219/MAX 72121

Partiamo dunque con l’analisi di questo componente di Maxim, un driver per display led fino a 8 cifre e interfaccia di comunicazione seriale. Quest’ultimo aspetto, l’interfaccia di comunicazione e configurazione di tipo seriale, lascia presagire come il driver sia stato concepito sin dalle origini per essere controllato da un dispositivo logico evoluto, sia esso un microprocessore oppure un normale microcontrollore.
Come già anticipato in precedenza, in questo articolo proporremo l’utilizzo del driver in ambiente Arduino ma, a condizione di disporre o di eseguire manualmente il “porting” della relativa libreria di gestione in altro ambiente, il driver led può essere utilizzato anche con il Raspberry Pi o con un qualunque microcontrollore equipaggiato con interfaccia seriale “SPI-like”.
Il MAX7219/MAX7221 può quindi essere definito come un driver per display led a catodo comune in grado di interfacciare una CPU con display led a 7 segmenti, display a barra per applicazioni grafiche oppure matrici composte ciascuna da 64 led. Ogni singolo driver può gestire fino a 8 display led a singola cifra, oppure fino a 8 matrici di 64 led ciascuna.
Come vedremo tra poco, questa caratteristica consente di realizzare facilmente (sia a livello hardware che a livello software) dei pannelli luminosi composti da più moduli, ognuno formato da una matrice di 8×8 led, collegati in cascata. Nel caso si volessero realizzare pannelli composti da un maggiore numero di cifre o di moduli di 8×8 led, sarà sufficiente aggiungere al progetto un secondo chip dello stesso tipo, modificando opportunamente il relativo firmware di gestione. L’integrato include un decodificatore BCD-7 segmenti (attivabile a livello software), un multiplexer, circuiti driver per il pilotaggio dei segmenti led e una memoria RAM statica in grado di contenere le informazioni relative a ciascuna cifra (oppure “pattern” nel caso di una matrice di led) visualizzata.
Per il pilotaggio dei led o dei segmenti è richiesta una sola resistenza esterna, semplificando notevolmente il circuito di pilotaggio. Rispetto alla versione base, il modello MAX7221 offre il supporto per un numero maggiore di interfacce, tra cui QSPI e MICROWIRE. Inoltre, la velocità di aggiornamento dei segmenti (slew rate) è stata limitata per migliorare l’immunità alle interferenze di tipo elettromagnetico. Per entrambe le versioni, la massima velocità sopportabile dall’interfaccia seriale è pari a 10 MHz. In Figura 1 è visibile il pinout del driver, disponibile nei package DIP e SO a 24 pin.

 

 

Figura 1: Pinout del MAX7219/MAX7221 con package DIP 24

Tramite l’interfaccia di comunicazione è possibile indirizzare i singoli elementi del display senza doverne riscrivere interamente il contenuto.
Non mancano le funzionalità per il risparmio energetico e per la diagnostica, come la modalità “shutdown” (con mantenimento della memoria) caratterizzata da un assorbimento di soli 150μA, la regolazione della luminosità sia a livello digitale che analogico, la forzatura allo stato OFF di tutti i led durante l’accensione e una modalità di test che forza automaticamente l’accensione di tutti i led.

Descrizione dei pin

I pin di alimentazione sono rappresentati da V+, al quale va fornita un’alimentazione continua stabilizzata di +5V, e GND.
Il pin ISET, come dice il nome stesso, serve ad impostare la corrente utilizzata per pilotare il display. Più precisamente, occorre collegare una resistenza RSET tra questo pin e la sorgente utilizzata per alimentare il modulo (la stessa a cui fa capo V+). Il valore di RSET, che determina la luminosità del display, può essere fisso oppure variabile, consentendo dunque una regolazione fine della luminosità dei led tramite un controllo esterno. Il valore minimo di RSET non deve essere inferiore a 9,53 kΩ, valore a cui corrisponde una corrente di pilotaggio dei segmenti pari a 40 mA. Come regola generale, si tenga presente che la corrente di picco utilizzata per il pilotaggio del display è pari a circa 100 volte la corrente che percorre il pin ISET. Oltre a una regolazione di tipo analogico, il driver consente di effettuare una regolazione dell’intensità luminosa di tipo digitale, impostando opportunamente via software il contenuto di un registro. Il controllo digitale è attuato da un circuito PWM interno, con 16 step differenti di luminosità corrispondenti al contenuto del nibble meno significativo del registro.
Le intensità luminose massima e minima, nella modalità digitale, corrispondono rispettivamente a 31/32 e 1/32 della corrente di picco impostata tramite RSET. I sette pin da SEG A a SEG F servono per fornire corrente alle uscite corrispondenti ai sette segmenti, mentre il pin SEG DP pilota la corrente per il punto decimale. Nel caso di una matrice di led 8×8, le uscite sono tipicamente associate alle otto colonne (o righe) della matrice. Nel MAX7219, quando si vuole tenere spento un segmento il corrispondente segnale di uscita viene tirato verso massa, mentre nel MAX7221 viene posto nello stato di alta impedenza. I pin DIG 0 – DIG 7 ricevono corrente dal catodo comune del display.
Quando un segmento è spento, il pin viene portato alla tensione V+ nel MAX7219 e nello stato di alta impedenza nel caso del MAX7221. Nel prossimo paragrafo, parlando del modulo matrice di led 8×8 utilizzato per il progetto, vedremo più in dettaglio come i pin SEGx e DIGx debbano essere collegati al display. I pin che non abbiamo ancora citato, utilizzati per il controllo del led driver tramite interfaccia seriale e per il collegamento di più led driver in cascata (daisy-chain), possono essere meglio compresi osservando lo schema funzionale di Figura 2.

This content has been restricted to logged-in users only. Please login to view this content.

Informazioni sull'autore

Sono Stefano, nato a Milano nel 1963. Dopo aver conseguito la laurea in Ingegneria Elettronica al Politecnico di Milano, ho iniziato la mia attività lavorativa come sviluppatore firmware e software. Nel corso degli anni ho vissuto e "cavalcato" la progressiva trasformazione del mondo embedded, dai primi microprocessori a 8 bit programmabili esclusivamente in assembler ai più recenti Soc, FPGA, DSP e logiche programmabili con prestazioni e caratteristiche di assoluto rilievo. Mi interesso di tecnologia ed elettronica a 360°, dedicando parte del mio tempo libero allo studio di nuovi componenti e alla realizzazione di piccoli progetti.

Nessun commento su "Applicazioni Pratiche del Driver LED MAX7219"

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.