Verifica capacità batterie con Arduino: controllo temperatura e selezione della tipologia


Scoprire la veridicità della capacità di una batteria è come svelare il cuore che alimenta i nostri gadget moderni. In un’era in cui il mercato è inondato di batterie che vantano capacità enormi, avere un tester affidabile per la capacità delle batterie è come possedere la bacchetta della verità.

Ho ripristinato questo vecchio articolo, mai pubblicato, perché penso possa interessare molte persone.

Verificatore di batteria Arduino con temperatura e selezione della batteria
Verificatore di batteria Arduino con temperatura e selezione della batteria

Soprattutto per gli appassionati delle batterie 18650, delle batterie ad acido e di altri tipi vari, avere una misura precisa della capacità è fondamentale. La batteria più grande che ho testato con questo dispositivo è una batteria ad acido da 6V con una capacità di 4.2A. I risultati del test sono meticolosamente resi in milliampere-ora, fornendo un’idea chiara sulla vera potenza della batteria.

La creazioe di questo dispositivo è stato alimentato da una necessità: un bisogno impellente di discernere l’autenticità delle capacità delle batterie, in particolare quelle provenienti dalla Cina che spesso presentano specifiche dubbie.

La sicurezza è un fattore importante, quindi mi a spinto a incorporare un termistore per monitorare la temperatura della resistenza di alimentazione e della batteria sotto test. Questa aggiunta previene qualsiasi problema di surriscaldamento, garantendo un ambiente di test sicuro anche per le batterie all’acido da 6 V.

Il design interrompe ciclicamente il ciclo di scarica quando la temperatura della resistenza di potenza raggiunge il valore superiore, attendendo un prudente intervallo di 20 secondi per far diminuire le temperature prima di riprendere il test.

Il cuore di questo tester è un microcontrollore compatto, specificamente un Nano compatibile con Atmega328 acquistato da AliExpress, che orchestra le operazioni senza intoppi.

Acquista l'Arduino Pro Mini da qui Arduino UNO - Arduino MEGA 2560 R3 - Arduino Nano - Arduino Pro Mini

Il codice completo che alimenta questo dispositivo è condiviso qui.

Miglioramenti Progressivi: Evoluzione della Scheda

Con il tempo, sono stati fatti affinamenti alla scheda, con ogni iterazione che introduceva una serie di funzionalità, avvicinandola a un sistema più generalizzato e facile da usare. Di seguito è una cronaca dell’evoluzione della scheda, contrassegnata da due versioni significative: v0.1 e v0.2.

v0.1: Gettare le Fondamenta

  • Calcolo Automatico: Il VCC dell’Arduino è ora calcolato autonomamente, eliminando i calcoli manuali.
  • Gestione Migliorata delle Impostazioni: Introdotta una variabile per modificare le impostazioni con facilità.
  • Monitoraggio della Scarica: Implementata una funzionalità per visualizzare la percentuale di scarica, offrendo un’intuizione in tempo reale sullo stato della batteria.
  • Monitoraggio Termico: Incorporato il monitoraggio della temperatura sia per la batteria che per la resistenza di potenza, garantendo un funzionamento sicuro.

v0.2: Avanzare Verso un Design Modulare

  • Funzionalità di Selezione della Batteria: Una nuova aggiunta che facilita la selezione di diversi tipi di batterie.
  • Creazione di una Scheda Prototipo: Realizzata una scheda prototipo (schema disponibile), spostando lo schermo, il pulsante e l’altoparlante fuori dalla scheda. Questo approccio modulare getta le basi per una futura soluzione pacchettizzata.
  • Gestione del Limite di Temperatura: Introdotta una meccanismo per interrompere il processo se la temperatura della resistenza di potenza supera i 70°C, prevenendo il derating e garantendo la sicurezza operativa.

Con ogni iterazione, la scheda è progettata non solo per testare accuratamente le capacità delle batterie, ma anche per offrire un ambiente utente-friendly, sicuro e adattabile per tutte le esigenze di test. Il passaggio da v0.1 a v0.2 rispecchia una ricerca per un’esperienza utente fluida, rispettando gli alti standard di sicurezza e funzionalità.

Scheda V0.2

Adattare la Scheda per Accogliere Batterie Diverse

L’evoluzione dalla versione 0.1 alla 0.2 ha segnato un notevole salto verso l’accomodamento di un ampio spettro di batterie. Questo è stato orchestrato creando una struttura che racchiude il nome della batteria insieme alle sue soglie di tensione minima e massima. Di seguito un frammento che illustra questo miglioramento:

// Struttura del tipo di batteria
struct BatteryType {
	char name[10];
	float maxVolt;
	float minVolt;
};
#define BATTERY_TYPE_NUMBER 4
BatteryType batteryTypes[BATTERY_TYPE_NUMBER] = { 
		{ "18650", 4.3, 2.9 }, 
		{ "17550", 4.3, 2.9 }, 
		{ "14500", 4.3, 2.75 }, 
		{ "6v Acid", 6.50, 5.91  } 
};

Per misurare con precisione la temperatura, è stato utilizzato un divisore di tensione composto da un set di resistori da 10k, raddoppiando la lettura della temperatura sull’ingresso analogico. Per regolare il supporto di tensione si modificano questi valori come illustrato di seguito:

// Resistenza di tensione della batteria
#define BAT_RES_VALUE_GND 10.0
#define BAT_RES_VALUE_VCC 10.0
// Resistenza di tensione del resistore di potenza
#define RES_RES_VALUE_GND 10.0
#define RES_RES_VALUE_VCC 10.0

L’implementazione offre flessibilità, consentendo il distacco del termistore se non in uso, come mostrato di seguito:

#define USING_BATTERY_TERMISTOR true
#define USING_RESISTO_TERMISTOR true

Per coloro che utilizzano un display i2c diverso, è necessaria una riscrittura del metodo per garantire la compatibilità:

void draw(void)

Il repository del progetto è un tesoro di risorse, contenente schemi Fritzing, fotografie e una moltitudine di informazioni aggiuntive, utili per comprendere e potenzialmente estendere la funzionalità di questo tester di capacità della batteria versatile.

Breadboard: Controller di Visualizzazione Caratteri I2c Espanso

Ho usato un display a caratteri generico, e ho costruito il controller i2c e l’ho usato con la mia libreria personalizzata.

Ma se vuoi, puoi prendere un normale controller i2c (meno di 1€) con una libreria standard, e il codice rimane lo stesso. Tutto il codice del display è nella funzione draw quindi puoi cambiarlo senza modificare altre cose.

Puoi trovare maggiori informazioni qui:

Breadboard: Display a Caratteri Con I2c Integrato

Lo stesso schema senza i2c controllato espanso.

Realizzazione

Per misurare la tensione utilizziamo il principio di un divisore di tensione.

Affinamento delle Misure di Tensione e Corrente: Approfondimento nel Codice

L’essenza della misurazione accurata della capacità di una batteria risiede nella misurazione meticolosa della tensione e della corrente. Questo segmento delinea i frammenti di codice e la logica dietro ai calcoli coinvolti nella misurazione della tensione della batteria e nella deduzione della corrente, assicurando una valutazione precisa della capacità della batteria.

  1. Moltiplicatore di Misurazione della Tensione: La formula batResValueGnd / (batResValueVolt + batResValueGnd) funge da fattore moltiplicatore cruciale per la misurazione della tensione. Qui, batResValueGnd e batResValueVolt sono i valori delle resistenze incorporate prima e dopo il filo di lettura analogico rispettivamente.
float multiplier = batResValueGnd / (batResValueVolt + batResValueGnd);
  1. Misurazione della Tensione: La tensione attraverso la batteria è calcolata con la formula fornita di seguito, dove sample1 rappresenta la media delle letture analogiche, vcc è la tensione di riferimento di Arduino, e 1023.0 indica il valore massimo che una lettura analogica di Arduino può raggiungere.
float batVolt = (sample1 / (1023.0 - ((BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)) * 1023.0))) * vcc;
  1. Misurazione della Corrente: Per determinare la corrente, sono indispensabili le misurazioni della tensione prima e dopo il resistore di potenza. Una volta misurate queste tensioni, la corrente (in milliampere) consumata dalla batteria può essere calcolata utilizzando la legge di Ohm.
  2. Utilizzo del MOSFET: Un MOSFET è impiegato per avviare o interrompere il drenaggio della batteria dal resistore di potenza, controllando così il processo di scarica e aiutando nella misurazione accurata della capacità.
  3. Monitoraggio Termico: Per un ulteriore strato di sicurezza, due termistori sono incorporati per monitorare attentamente le temperature sia della batteria che del resistore di potenza. Questa precauzione assicura che l’ambiente di test rimanga entro limiti termici sicuri, evitando potenziali pericoli.

I frammenti di codice illustrati sopra racchiudono l’essenza di come le misurazioni di tensione e corrente siano intrinsecamente collegate alla valutazione accurata della capacità della batteria, enfatizzando anche la sicurezza attraverso il monitoraggio termico.

Abbracciando l’Estensibilità

Al cuore di questa scheda prototipo risiede l’essenza dell’estensibilità, sebbene attualmente sfrutti solo un set minimo di pin. L’orizzonte prevede l’integrazione di LED e pulsanti aggiuntivi per aumentarne la funzionalità.

Questa formula è fondamentale quando si regola lo schema per la tensione del resistore di potenza, delineato come:

(BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND) 

nello schema della tensione del resistore di potenza

Tensione del resistore di potenza GND 1/2 / (Tensione del resistore di potenza 2/2 + Tensione del resistore di potenza GND 1/2)

Questa articolazione nei valori dei resistori assicura che la scheda possa misurare e gestire accuratamente le tensioni più elevate, estendendo così il suo dominio di applicabilità. Il percorso verso l’estensibilità è segnato da queste modifiche calcolate, tracciando una traiettoria verso una scheda più versatile e adattabile.

Il rosa indica la saldatura verso il basso

Lista dei Materiali

Quantità | Descrizione del Componente | Specifiche

  • 2x Morsetto a Vite | Passo 5mm, Montaggio PCB, 8A 250V, LW SZUS

Morsetto a Vite Terminal sh1.0 jst1.25 zh1.5 ph2.0 xh2.54 - 2.54mm PCB Screw Terminal Blocks

  • 1x Microcontrollore | Clone di Arduino Pro Mini (Compatibile con Nano)

Pro Mini Arduino UNO - Arduino MEGA 2560 R3 - Arduino Nano - Arduino Pro Mini

  • 1x MOSFET P-Channel | IRF744N o IRLZ44N

Mosfet IRFZ44 - IRLZ34N IRLZ44N - IRF744N

  • 11x Resistori | 10kΩ, Tolleranza Standard
  • 2x Termistori | Sensore di Temperatura, 10kΩ

Termistore NTC MF58 3950 B 5% 1% 5K 10K 20K 50K 100K

  • Connettori | Header Maschi Generici (♂)
  • Connettori | Header Femmine Generici (♀)
  • 1x Scheda Prototipale | PerfBoard, 24×18 cm

Scheda Prototipale PCB 5x7 Perfored

  • 1x Resistore di Potenza | 10Ω, 10W, recuperato da una vecchia TV CRT

Resistore di Potenza Power resistor

Componenti Aggiuntivi:

  • Interfaccia di Controllo | Pulsanti per:
    • Selezionare il Tipo di Batteria
    • Avviare lo Scarico della Batteria
    • Pulsante di reset per riavviare il sistema e attivare nuove operazioni
  • Indicatori e interfacce | La scheda include pulsanti di reset, terra e selezione, con il buzzer situato sul lato sinistro dei pin.

Tutti i pin sono già tirati verso il basso, quindi è necessario attivarli con VCC.

Il reset viene attivato con GND.

Dettagli della scheda

Pin I2C e di alimentazione

Nella parte inferiore, puoi vedere i pin VCC, GND e SDA, SCL per il display (e altri in futuro).

Termistore e misurazione della tensione

A destra, ci sono pin per leggere il valore del termistore, uno per il termistore della resistenza di alimentazione e l’altro per il termistore della batteria (maschio/femmina).

Poi ci sono pin analogici che misurano la tensione differenziale prima e dopo la resistenza di alimentazione.

Resistore per la misurazione della tensione

Qui puoi vedere il resistore che consente di supportare una tensione doppia rispetto al pin Arduino (10V). È necessario cambiarlo per supportare una tensione maggiore.

Step per la saldatura

Ora tutti i step necessari per la saldatura e l’assemblaggio.

Tutti i pin

Prima ho aggiunto tutti i pin e li ho saldati.

Resistori di pull-down e termistori

Poi ho aggiunto tutti i resistori di pull-down (per i pulsanti) e i connettori I2C (display).

Poi il termistore della resistenza di alimentazione è molto importante, con la batteria al piombo che si surriscalda.

MOSFET, resistenza per verificare la tensione

Ora dobbiamo inserire il MOSFET per attivare lo scaricamento e la resistenza per verificare la tensione.

2 resistori per la tensione prima del resistore di alimentazione 2 resistori per la tensione dopo il resistore di alimentazione. Quando hai questa tensione, puoi calcolare il consumo in milliampere.

Istruzioni per la Configurazione del Microcontrollore:

  1. Configura il tuo IDE: Il microcontrollore utilizzato è un clone compatibile con Arduino Pro Mini Nano. Per caricare gli sketch, imposta il tuo IDE per riconoscere la scheda come un Arduino Nano.
  2. Acquisizione del Codice: Il codice necessario può essere ottenuto dal mio repository GitHub. Assicurati di scaricare l’ultima versione per un corretto funzionamento.
  3. Integrazione delle Librerie: Dovrai incorporare tre librerie specifiche per il progetto:a. Libreria Wire: Questa è una libreria standard disponibile nell’IDE di Arduino, utilizzata per la comunicazione I2C.b. Libreria Termistore: Non utilizzare la versione predefinita trovata nell’IDE di Arduino. Invece, utilizza la mia versione personalizzata, che può essere scaricata dal link fornito.c. Libreria LiquidCrystal_i2c: Per coloro che utilizzano un adattatore I2C non standard o personalizzato, dovrebbe essere utilizzata la mia versione di questa libreria. È disponibile tramite un link separato. Se il tuo componente è standard, la libreria integrata nell’IDE di Arduino sarà sufficiente. Istruzioni dettagliate e differenze sono spiegate ulteriormente al link specificato.
  4. Nota sulla Compatibilità dell’LCD: Il funzionamento dell’LCD con la libreria standard non è stato testato. Si consiglia di seguire attentamente le istruzioni per una corretta integrazione delle librerie personalizzate fornite.

Iniziare ad utilizzarlo

Nella foto è presente la basetta, quindi possiamo procedere al test. Ecco un video dimostrativo.

Ecco i collegamenti.

Infine, assemblato e funzionante.

Prima Seleziona il Tipo di Batteria

Come descritto, abbiamo una mappatura dei valori con la configurazione della batteria.

// Struttura del tipo di batteria<br>struct BatteryType {
	char name[10];
	float maxVolt;
	float minVolt;
};
#define BATTERY_TYPE_NUMBER 4
BatteryType batteryTypes[BATTERY_TYPE_NUMBER] = { 
		{ "18650", 4.3, 2.9 }, 
		{ "17550", 4.3, 2.9 }, 
		{ "14500", 4.3, 2.75 }, 
		{ "6v Acid", 6.50, 5.91  } 
};

Avvia la Scarica

Fai clic sul secondo pulsante per avviare la scarica.

Nel display, puoi vedere il milliampere corrente, i milliampere/ora, la percentuale di scarica, la tensione della batteria e la temperatura della resistenza di alimentazione e della batteria.

Eccezioni: Batteria Rimossa

Se rimuovi la batteria, il processo di scarica si metterà in pausa quando la reinserisci. Riprenderà all’ultimo valore.

Ecco il risultato sullo schermo.

Eccezioni: Allarme Temperatura

Se la temperatura (della batteria o della resistenza di alimentazione) sta per diventare alta, il processo di scarica va in pausa.

#define BATTERY_MAX_TEMP 50
#define RESISTANCE_MAX_TEMP 69 // 70° on datasheet (Derating resistors)
#define TEMP_TO_REMOVE_ON_MAX_TEMP 20

Il valore predefinito per la temperatura massima è di 50° per la batteria e 69 per la resistenza di alimentazione.

Come puoi vedere nel commento, la resistenza di alimentazione è influenzata dal declassamento quando supera i 70°.

Se viene generato un allarme, inizia TEMP_TO_REMOVE_ON_MAX_TEMP secondi di pausa per abbassare la temperatura.

Test Amperaggio

Il risultato del test di amperaggio è buono.

Packaging Ottimizzato con Componenti Separati

La strategia di utilizzare componenti separati semplifica significativamente il processo di confezionamento, portando a una realizzazione più semplice del prodotto finito.

L’involucro previsto è progettato per comprendere una serie di caratteristiche:

  1. Un rettangolo designato per il display LCD assicura una visibilità chiara e un facile accesso.
  2. Fori posizionati strategicamente per i pulsanti di spinta, facilitando l’interazione dell’utente.
  3. Un connettore barrel femmina esterno consente un’alimentazione di tensione senza problemi da una fonte di alimentazione esterna.

La presenza di una resistenza pull-down sulla scheda elimina la necessità di una resistenza aggiuntiva accanto al pulsante di spinta. Questa aggiunta intelligente semplifica la configurazione e migliora la facilità di assemblaggio.

La manifestazione di questa configurazione è all’orizzonte. Quando il tempo lo permette, l’intero assemblaggio sarà realizzato e condiviso, incarnando una perfetta fusione di funzionalità e design user-friendly.

Grazie

Per semplificare il processo, creerò una scheda PCB semplice. Rimanete sintonizzati.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *