Sul blog di Elettronica Open Source puoi leggere non solo tutti gli articoli Premium riservati agli abbonati Platinum 2.0 e inseriti nella rivista Firmware 2.0 (insieme ad articoli tecnici, progetti, approfondimenti sulle tecnologie emergenti, news, tutorial a puntate, e molto altro) ma anche gli articoli della Rubrica Firmware Reload. In questa Rubrica del blog abbiamo raccolto gli articoli tecnici della vecchia rivista cartacea Firmware, che contengono argomenti e temi evergreen per Professionisti, Makers, Hobbisti e Appassionati di elettronica. L’impiego di alimentazione USB per ricaricare batterie LiPo (Lithium-Ion Polymer) è divenuto molto diffuso con le moderne apparecchiature portatili. Diversi produttori di circuiti integrati, tra cui Texas Instruments, mettono oggi a disposizione chip e soluzioni adeguate a svolgere in maniera intelligente questa funzione.
IL CONTROLLER ULTRA LOW POWER MSP430
L’MSP430 di Texas Instruments (Figura 1) è un controller a 16 bit, RISC, mixed-signal progettato per applicazioni a basso costo ultra-low-power, caratteristiche che lo rendono adatto per una molteplicità di applicazioni. Disponibilità di kit e ambienti di sviluppo (Figura 2) lo rendono di semplice approccio e impiego.
Per maggiori dettagli si rimanda alla consultazione delle informazioni riportate sul sito del costruttore (in particolare nella pagina www. ti.com/msp430) e nei documenti [1],[7] e [11].
DIAGNOSTICA DELLA BATTERIA: IL CHIP BQ27410
Il chip bq27410 viene pilotato dal controller per le operazioni di diagnostica della batteria (Figura 3).
Allo scopo, il chip è connesso direttamente alla batteria da un lato e al controllore dall’altro rispetto al quale fa da slave. Il controllore ne gestisce le funzioni attraverso procedure firmware e protocolli di comunicazione basati su bus I2C [4]. Per una migliore gestione dei consumi di energia i pin SDA e SCL dell'MSP430 e del bq27410 sono controllati attraverso i pin GPIO del controller MSP430 stesso e tenuti quindi in pull-up quando la comunicazione non è necessaria in modo da ottenere un ridotto consumo di energia. Il chip configurato e gestito dal microcontrollore su bus I2C, consente il monitoraggio di parametri quali capacità residua della batteria (mAh), livello di carica (%) e tensione (mV). I circuiti di carica di batterie di dispositivi portatili come smartphone, digital video camere, MP3 player o player multimediali possono quindi trarre grande utilità dalla disponibilità di questo tipo di chip. Si rimanda al documento [5] per l’analisi dettagliata dei singoli pin e delle relative funzioni. Il chip è configurabile attraverso comandi appositi appartenenti ad un set di comandi noto come standard command (Figura 5).
Si tratta di comandi di lunghezza pari a due byte. Attraverso questi il chip può essere pilotato in modo intelligente minimizzando il consumo di potenza. Per questo motivo sono previste diverse modalità di funzionamento (inizializzazione, normal, sleep, full-sleep e hibernate). Il comando “Control()” presenta a sua volta dei cosiddetti sottocomandi utili per lo più a ottenere la notifica di determinate informazioni di diagnostica (Figura 6).
MEMORIA FLASH, MEMORIA RAM E RELATIVE FUNZIONI
La flash dati del chip bq27410 contiene dati necessari a eseguire il corretto monitoraggio della batteria. Essi possono essere modificati cioè riscritti al fine di consentire la diagnosi del particolare tipo di batteria in esame. La RAM contiene invece i valori dei parametri rappresentativi dello stato della batteria come temperatura, tensione, capacità residua e corrente media. Si tratta di dati che vengono memorizzati in specifiche locazioni della stessa RAM in modo da poter poi essere letti dal controller mediante appositi comandi codificati opportunamente [4]. L’impiego di cecksum rende sicura la scrittura e la lettura dei dati. I dati della RAM possono essere letti singolarmente o a blocchi. Si rimanda al documento [5] e precisamente alla sezione “Standard Data Commands“ per maggiori dettagli. Di seguito accenniamo invece in maniera più diretta ad alcune specifiche funzionalità del chip.
RILEVAMENTO DELL’INSERIMENTO/RIMOZIONE DELLA BATTERIA
L‘applicazione utilizza la funzionalità CE del bq24230 e il polling del pin REG25 del chip bq27410 per verificare se la batteria è collegata o meno. Quando la batteria viene rimossa, il pin REG25 del bq27410 va a livello basso. Questo evento viene intercettato come interrupt sul pin GPIO del controller MSP430 cui è collegato; di conseguenza, l’operazione di carica non essendo più necessaria viene interrotta cioè disabilitata. Analogamente, quando la batteria viene inserita, lo stesso pin REG25 si porta a livello alto e questo evento viene interpretato come un interrupt che determina l’attivazione del processo di carica attraverso il battery charger. Ovviamente, va sempre tenuto in debito conto il fatto che, se l’alimentazione USB non è disponibile e quindi presente nel sistema, la rimozione della batteria equivale alla perdita totale di alimentazione. Rimuovere la batteria quando non vi è collegamento USB è quindi un’operazione poco sicura e pertanto da evitare. Se per esempio in quell’istante è in corso una comunicazione I2C tra i dispositivi, questo può comportarne un blocco e la necessità di reset.
RILEVAMENTO DELL’EVOLUZIONE DEL LIVELLO DI CARICA DELLA BATTERIA
Il pin GPOUT del bq27410 può essere utilizzato come interrupt di stato batteria in carica (SOC) o interrupt di batteria in scarica. Da un punto di vista operativo, la carica completa della batteria (da 0 a 100%) è suddivisa in x intervalli; ogni intervallo corrisponde pertanto ad una percentuale della carica totale pari a “100/x”%. Quando la carica della batteria raggiunge il limite di uno di questi intervalli, sul pin GPOUT viene generato un interrupt SOC che è intercettato dal controller MSP430. Questo può in tal modo tenere traccia dell’evoluzione dello stato di carica della batteria. Ovviamente, il processo se si limitasse a ciò, non funzionerebbe nel caso in cui si rimovesse e reinserisse successivamente la batteria stessa. Per questo motivo, un evento di inserimento della batteria comporta un aggiornamento del dato attraverso la lettura della RAM del chip bq27410. In questo modo il processo può nuovamente evolvere allineato al reale stato di carica della batteria. Dal punto di vista della connessione USB, il controller MSP430 può trovarsi in diversi stati:
• Disconnesso (Dispositivo non collegato all’host)
• Collegato, ma non ancora riconosciuto
• In fase di riconoscimento
• Attivo (dispositivo USB è attivo e pronto per la comunicazione)
• Sospensione ma riconosciuto (connesso ma in stand-by)
Per maggiori informazioni si rimanda alla Guida “MSP430 USB API Programmer’s Guide” che accompagna l’USB Developer’s Package (Guida per gli sviluppatori) [7]. Quando il circuito è posto in modalità di sospensione, la corrente assorbita da USB a 5 V (VBUS) è inferiore a 500 uA. Attraverso il pin EN1/EN2 comandati via USB è possibile disabilitare il caricamento della batteria; il circuito funziona in questo caso grazie alla batteria e l’unica corrente assorbita dall’USB è quella della linea VBUS cui è connesso il controller MSP430 (inferiore a 500 uA).
SCHEMA CIRCUITALE DI RIFERIMENTO E DEMO APPLICATION
In Figura 8 è riportato lo schema di riferimento completo che integra tutti i chip e le funzionalità fin qui descritte. Ovviamente, per un corretto funzionamento del tutto è anche necessario disporre di firmware opportuno. Appena il controller MSP430 viene alimentato, il dispositivo inizializza le periferiche, inizia il check della batteria se questa è connessa e legge la RAM del chip bq27410. Il dispositivo testa lo stato della connessione USB e invia via USB le informazioni e i dati inerenti la batteria al PC su cui viene fatta girare una COM virtuale che consente di stabilire una comunicazione UART tra PC e dispositivo. La Figura 9 riporta una schematizzazione ad alto livello dell’applicazione demo sotto forma di diagramma di flusso. Al centro della routine vi è la diagnostica eseguita attraverso il chip bq27410. La Figura 10 mostra invece le stesse informazioni offrendo un maggior grado di dettaglio. In particolare, si riconoscono le fasi di aggiornamento dello stato di carica della batteria (refresh bar). La Figura 11 mostra invece uno screenshot di HyperTerminal mentre l’applicazione demo è in esecuzione e la batteria è presente nel circuito. Nella finestra di HyperTerminal vengono visualizzati i valori diagnostici contenuti nella RAM del chip bq27410, aggiornati ogni cinque secondi. In questo modo è possibile monitorare tensione della batteria, capacità residua e livello di carica. Quando la batteria viene rimossa dal sistema queste informazioni perdono di significato, pertanto riconosciuta l’assenza di batteria viene visualizzata la notifica “No Battery Connected“. Come già accennato, applicazioni di questo tipo devono garantire non solo la funzionalità di carica e di diagnosi della batteria ma anche requisiti di basso assorbimento di potenza. In particolare, la potenza assorbita dalla sorgente USB per il funzionamento dei singoli chip deve essere quanto più contenuta possibile rispetto a quella accumulata nella batteria e a quella assorbita dal carico. La Tabella 1 riporta un dettaglio di tali consumi. Per maggiori dettagli, esempi e applicazioni demo è possibile fare diretto riferimento alla pagina web [11] (http://www.ti.com/tool/msp430ware).
CONCLUSIONI
La soluzione hardware e firmware per il controllo dei cicli di carica/scarica e la diagnostica di batterie ricaricabili LiPo, mostrata in questo articolo, può essere implementata con relativa semplicità grazie ai documenti e agli strumenti di sviluppo messi a disposizione da Texas Instruments. Come abbiamo potuto osservare, molte delle cose dette possono essere applicate non solo alle batterie LiPo ma anche a batterie Li-Ion ed in alcuni casi anche alle più datate batterie in tecnologia Ni-Cd e Ni-MH. Sul sito di Texas Instruments è possibile trovare ulteriori approfondimenti sull’argomento. Alla luce della sua importanza, al di là della specifica soluzione mostrata, è importante aver inquadrato e discusso correttamente gli aspetti generali del problema.