domenica 12 luglio 2009

Batteria portatile - CMB001B (approfondimento)

Chi la dura la vince. Dopo un infinità di tempo passato a "googlare" a causa della mia testardaggine che mi "impedisce" a volte di scegliere le domeniche per un più sano giro in bici, sono riuscito a decodificare i segnali della batteria in corso di analisi. Premetto che ora, sono molto più "preparato" in merito al funzionamento delle batterie al litio. Se vengono caricate con una corrente troppo alta che porta le celle ad un valore superiore a 4,8 volts, si produce ossigeno che essendo infiammabile può provocare esplosioni ed incendi. Se la tensione di cella scende sotto i 2,6 volts, si ha un degrado fisico dell'anodo, per cui la batteria si distrugge irreparabilmente. Il metodo di carica è multi-step. In una prima fase deve essere caricata con corrente regolata sino ad una certa soglia di tensione. Successivamente la carica è in tensione, sopra una soglia predefinita, con conseguente diminuzione della corrente assorbita. Il tutto va controllato con la temperatura, che deve rimanere entro limiti ben precisi in base al valore di resistenza del termistore che in questi casi è obbligatorio ed indispensabile. Si spiega così come mai le batterie al litio necessitano di uno specifico processore e di una memoria che memorizza i valori di soglia (specifici per le celle utilizzate). E' necessario inoltre memorizzare lo stato di carica totale e residua per poter riprendere in fase di ricarica il giusto step. Si spiega inoltre come mai a volte alcune batterie, di cellulari o portatili, esplodono o si incendiano. Una causa potrebbe essere la presenza di valori incongruenti o fuori specifica. La colpa viene quasi sempre addossata alle batterie "cinesi", comunque non originali cui segue sempre la raccomandazione di acquistare batterie originali. Ecco spiegato perchè quando accade, la casa madre richiede sempre il pezzo bruciato od esploso... controllano i dati. Ma se ai primi sintomi di decadimento provo a variare i parametri e far "esplodere" una batteria originale, è probabile che mi venga sostituita in garanzia con tanto di rimborso dei danni conseguenti. Basta solo distruggere l'eeprom e nessuno sarà mai in grado di dimostrare nulla.
Può però accadere che i valori memorizzati normalmente, calcolati a volte per approssimazione in base al firmware implementato e dipendenti dalla temperatura, presentino dei valori incongruenti con l'effettivo stato delle celle. Accade infatti che il portatile (quasi improvvisamente o nel giro di pochissimi giorni) si rifiuti di caricare le celle in quanto la lettura dei parametri suggerisce il contrario. Le celle a mio avviso non sono "guaste", forse presentano una piccola diminuzione di efficienza, ma possono ancora continuare a lavorare per un pò di tempo. Leggendo infatti la documentazione sulla chimica delle batterie al litio, non esiste in letteratura alcuna segnalazione che indichi o spieghi un progressivo e rapido degrado come quello che si riscontra nell'uso quotidiano delle batterie dei computer portatili. Forse c'è un "problema di firmware" e pertanto vorrei provare a modificare i valori di carica - scarica memorizzati nell'eeprom per sperimentare la "resuscitazione" di una batteria dichiarata prematuramente defunta.
Per procedere con la lettura e scrittura dei valori che mi interessano, avrei prima la necessità di decodificarli. Ho trovato nella schedina di controllo, un integrato prodotto dall'azienda Power Smart (purtroppo il sito non risponde), un PS331S il cui funzionamento di principio è visibile in figura, così come la sua piedinatura. E' un processore che controlla lo stato di 4 celle e regola la comunicazione con l'esterno e con l'eeprom. Ecco la descrizione dei pin, in inglese.
PIN # NAME DESCRIPTION
1 SWITCH (Input) Edge triggered input pin typically used for LED activation. May also be used for ‘Sleep Mode’ wake-up comparator input.
2 EE-SCK (Output) External serial EEPROM Clock. Connect to SCK pin on external serial EEPROM. 3 EE-CS (Output) External serial EEPROM Chip Select . Connect to CS pin on external serial EEPROM.
4 VREFT (Output) Reference voltage output for use with temperature measuring A/D circuit . This 150 mV output is the top leg of a voltage divider thermistor circuit.
5 VNTC (Input) Temperature measurement A/D input for use with temperature circuit. This is the mid-point connection of a voltage divider where the upper leg is a thermistor (103ETB-type) and the lower leg is a 3.65K ohm resistor . This input should not go above 150 mV.
6 VCELL1 (Input) Lowest level input for A/D measurement of cell voltages.
7 VASS1 Analog ground reference point.
8 VCELL2 (Input) Second to lowest level input for A/D measurement of cell voltages.
9 VCELL3 (Input) Second to highest level input for A/D measurement of cell voltages.
10 VCELL4 (Input) Highest level input for A/D measurement of cell voltages.
11 VADD (Input) Analog supply voltage input.
12 VSHP (Input) Current measurement A/D input from positive side of the current sense resistor.
13 VSHM (Input) Current measurement A/D input from negative side of the current sense resistor.
14 VASS2 Analog ground reference point.
15 VREG (Output) Used to control an external small signal MOSFET to provide a regulated voltage to the IC . Only required for battery packs with voltages greater than 3.6V.
16 OSCOUT (Output) Oscillator connection for an external low-power 32.768 kHz crystal which provides accurate timing for self-discharge and capacity calculations.
17 OSCIN (Input) Other oscillator connection . (See OSCOUT description.)
18 EE-SO (Output) External SPI serial EEPROM data input. Connect to the SO pin on external SPI serial EEPROM. 19 EE-SI (Input) External serial EEPROM data input. Connected to the SO pin on external serial EEPROM
20 VDDD (Input) Digital supply voltage input.
21 SAFEOUT (Output) Programmable over-voltage and/or over-temperature output. Default non-active output is low (0V)
22 LED4 (Output) Relative or Absolute State-Of-Charge visual display
23 LED3 (Output) Same as LED4 pin
24 LED2 (Output) Same as LED4 pin
25 LED1 (Output) Same as LED4 pin
26 SMB-DTA SMBus Data pin connection.
27 SMB-CLK SMBus Clock pin connection.
28 VDSS Digital ground reference point.
I pin che ci permettono il "dialogo" con la batteria, dall'esterno senza necessità di aprirla, sono il 26 ed il 27, collegati al pettine di connessione esterno assieme al positivo (P+), negativo (P-) e termistore (T), come mostrato nella foto. I pin 2, 18 e 19 invece offrono la possibilità di interfacciarsi via SPI all'eeprom, per operazioni di lettura e scrittura. Occorre programmare un micro o utilizzare un interfaccia compatibile con i protocolli previsti. Il bus-pirate che ho ordinato deve ancora arrivare, altrimenti sarebbe stato un gioco da ragazzi farlo immediatamente.
Per leggere i valori nell'eeprom, non ci sono grandi difficoltà, se non riuscire a saldare dei fili sottili (che non ho per ora) con un operazione chirurgica. Verso l'esterno, il connettore della batteria presenta i soliti segnali che abbiamo già visto con il primo post sulla batteria alla quale è stata fatta la radiografia. Oltre ai poli positivo e negativo, il terminale del termistore (per la misura e monitoraggio della temperatura, ed il segnale SMBUS (vedi foto). Per complicare la vita ai tecnici "faidate" (DIY do it yourself) il produttore ha sdoppiato il piedino di massa, mentre gli altri sono sempre i soliti (T,D,C). Nella prossima batteria che andrò ad analizzare, i punti di contatto sono 11 ma ho il sospetto che molti di essi siano sdoppiati solo per confondere (inutilmente) gli hackers. Bene. Ora manca solo l'organizzazione dei dati nell'eeprom per verificare se la mia teoria è esatta. Mi sa che avrò bisogno di tuffarmi in qualche forum specializzato per cercare qualche dritta utile. Alla prossima.

P.S. Piove dove serve. Ripeto: Piove dove serve.

Nessun commento: