- Perché abbiamo bisogno di un tester della capacità della batteria?
- Componenti richiesti
- Schema del circuito del tester della capacità della batteria Arduino
- Programma Arduino per misurare la capacità della batteria
- Miglioramenti della precisione
- Costruzione e prova del circuito
Con l'avvento della tecnologia, i nostri gadget ed elettrodomestici elettronici stanno diventando sempre più piccoli con applicazioni più funzionali e complesse. Con questo aumento della complessità, anche il fabbisogno di potenza del circuito è aumentato e nella nostra ricerca di rendere il dispositivo il più piccolo e portatile possibile, abbiamo bisogno di una batteria che possa fornire corrente elevata per un lungo periodo di tempo e allo stesso tempo tempo, pesano molto meno in modo che il dispositivo rimanga portatile. Se vuoi saperne di più sulle batterie, puoi anche leggere questo articolo sulle terminologie di base della batteria.
Tra molti diversi tipi di batterie disponibili, le batterie al piombo, le batterie Ni-Cd e le batterie Ni-MH non sono adatte in quanto pesano di più o non possono fornire la corrente richiesta per la nostra applicazione, questo ci lascia con le batterie agli ioni di litio che può fornire corrente elevata mantenendo il peso basso e le dimensioni compatte. In precedenza abbiamo anche costruito un caricabatterie 18650 e un modulo booster e un sistema di monitoraggio della batteria basato su IoT, puoi verificarli se interessati.
Perché abbiamo bisogno di un tester della capacità della batteria?
Ci sono molti venditori di batterie sul mercato che vendono le versioni knock-off economiche di batterie agli ioni di litio che rivendicano specifiche bizzarre con un prezzo molto basso che è troppo bello per essere vero. Quando si acquistano queste celle o non funzionano affatto o se lo fanno, la capacità di carica o il flusso di corrente è così basso che non possono funzionare con l'applicazione. Quindi come testare una batteria al litio se la cella non è una di queste imitazioni economiche? Uno dei metodi è misurare la tensione a circuito aperto senza carico e carico, ma questo non è affatto affidabile.
Quindi costruiremo un tester di capacità della batteria 18650 per una cella 18650 agli ioni di litio che scaricherà una cella 18650 completamente carica attraverso un resistore mentre si misura la corrente che scorre attraverso il resistore per calcolare la sua capacità. Se non si ottiene la capacità dichiarata della batteria mentre la tensione della cella è entro i limiti specificati, allora quella cella è difettosa e non è necessario utilizzarla poiché lo stato di carica della cella si esaurirà molto rapidamente sotto carico, creando un circuito di corrente locale se utilizzato in un pacco batteria con conseguente riscaldamento e possibilmente incendio. Quindi saltiamo subito dentro.
Componenti richiesti
- Arduino Nano
- LCD 16 × 2 caratteri
- LM741 OPAMP IC
- Resistenza da 2,2Ω, 5Watt
- 7805 IC regolatore di tensione positiva
- Alimentazione 12V
- Potenziometro trimmer 10kΩ
- Condensatore 0.47uF
- Resistenza da 33kΩ
- Connettore jack a barilotto di alimentazione CC
- Terminali a vite per PCB
- IC Mosfet IRF540N a canale N
- Perfboard
- Kit di saldatura
- Dissipatori di calore
Schema del circuito del tester della capacità della batteria Arduino
Di seguito è mostrato lo schema del circuito completo per il tester di capacità della batteria 18650. La spiegazione del circuito è la seguente:
Unità di calcolo e visualizzazione:
Questo circuito è ulteriormente diviso in due parti, la prima è un'alimentazione a 5V bassa per Arduino Nano e uno schermo LCD alfanumerico 16 × 2 e le loro connessioni per visualizzare i risultati delle misurazioni di corrente e tensione in tempo reale. Il circuito è alimentato dall'alimentazione 12V tramite SMPS oppure è possibile utilizzare una batteria da 12V e la corrente massima sarà di circa 60-70mA per alimentare lo schermo Arduino e LCD.
Per ridurre la tensione fino a 5 V, utilizzeremo un regolatore di tensione lineare che può richiedere fino a 35 V e necessita di almeno 7,5 V di alimentazione in ingresso per fornire un'alimentazione regolata a 5 V e la tensione in eccesso viene dissipata come calore, quindi se il tuo ingresso tensione LM7805 regolatore di tensione IC è superiore a 12V, quindi considerare l'aggiunta di un dissipatore di calore in modo che non venga danneggiato. L'LCD è alimentato con un'alimentazione a 5V dal 7805 ed è collegato ad Arduino e funziona in modalità a 4 bit. Abbiamo anche aggiunto un potenziometro tergicristallo da 10k Ω per controllare il contrasto del display LCD.
Circuito di corrente a carico costante:
Il secondo è il circuito di carico a corrente costante basato su PWM per rendere la corrente di carico che scorre attraverso il resistore controllabile da noi e costante in modo che non vi sia alcun errore che si insinua a causa della variazione di corrente nel tempo quando la tensione della cella scende. Consiste di LM741 OPAMP IC e IRF540N N-Channel MOSFET, che controlla la corrente che scorre attraverso il MOSFET accendendo e spegnendo il MOSFET in base al livello di tensione da noi impostato.
L'amplificatore operazionale funziona in modalità comparatore,quindi in questa modalità. l'uscita dell'amplificatore operazionale sarà alta ogni volta che la tensione del pin non invertente dell'amplificatore operazionale è maggiore del pin invertente. Allo stesso modo, se la tensione sul pin invertente dell'amplificatore operazionale è superiore al pin non invertente, l'uscita dell'amplificatore operazionale verrà abbassata. Nel circuito dato, il livello di tensione del pin non invertente è controllato dal pin PWM D9 di Arduino NANO, che commuta a una frequenza di 500Hz che viene quindi fatta passare attraverso il filtro del circuito RC passa basso con valore di resistenza 33kΩ e condensatore avente una capacità di 0,47 uF, per fornire un segnale CC quasi costante al pin non invertente. Il pin invertente è collegato al resistore di carico, che legge la tensione attraverso il resistore e il GND comune. Il pin di uscita dell'OPAMP è collegato al terminale di gate del MOSFET per accenderlo o spegnerlo.L'OPAMP cercherà di rendere uguali le tensioni su entrambi i suoi terminali commutando il MOSFET collegato in modo che la corrente che scorre attraverso il resistore sarà proporzionale al valore PWM che hai impostato al pin D9 del NANO. In questo progetto, la corrente massima, ho limitato il mio circuito a 1,3 A, il che è ragionevole in quanto la cella che ho è 10 A come sua corrente nominale massima
Misura della tensione:
La tensione massima di una tipica cella agli ioni di litio completamente carica è compresa tra 4,1 V e 4,3 V, che è inferiore al limite di tensione di 5 V dei pin di ingresso analogico di Arduino Nano che ha una resistenza interna superiore a 10 kΩ in modo da poter collegare direttamente il Passa a uno qualsiasi dei pin di ingresso analogico senza preoccuparti della corrente che scorre attraverso di essi. Quindi, in questo progetto, dobbiamo misurare la tensione della cella in modo da poter determinare se la cella è nell'intervallo operativo di tensione corretto e se è completamente scarica o meno.
Dobbiamo misurare anche la corrente che scorre attraverso il resistore perché non possiamo usare lo shunt di corrente poiché la complessità del circuito aumenterà e l'aumento della resistenza nel percorso di carico diminuirà la velocità di scarica della cella. L'utilizzo di resistori shunt più piccoli richiederà un circuito amplificatore aggiuntivo per rendere la lettura della tensione proveniente da esso, leggibile su Arduino.
Quindi leggiamo direttamente la tensione attraverso il resistore di carico e quindi usando la legge di Ohm divide la tensione ottenuta dal valore del resistore di carico per far fluire la corrente attraverso di esso. Il terminale negativo del resistore è collegato direttamente al GND, quindi possiamo tranquillamente presumere che la tensione che stiamo leggendo sul resistore sia la caduta di tensione nel resistore.
Programma Arduino per misurare la capacità della batteria
Ora dopo aver finalizzato il circuito hardware, passiamo alla programmazione di Arduino. Ora, se non hai l'IDE di Arduino installato sul tuo PC, cosa ci fai qui! Vai al sito Web ufficiale di Arduino e scarica e installa l'IDE di Arduino o puoi codificare anche in qualsiasi altro editor, ma questo è un argomento per un altro giorno per ora ci atteniamo all'IDE di Arduino. Ora stiamo usando Arduino Nano, quindi assicurati di aver selezionato la scheda Arduino Nano andando su STRUMENTI> SCHEDE e selezionando ARDUINO NANO lì, ora seleziona il processore corretto del tuo nano andando su STRUMENTI> PROCESSOREe già che ci sei seleziona anche la porta a cui è connesso Arduino sul tuo PC. Stiamo usando Arduino per pilotare l'LCD alfanumerico 16 × 2 ad esso collegato e per misurare la tensione della cella e la corrente che scorre attraverso il resistore di carico come spiegato nella sezione precedente iniziamo il nostro codice dichiarando i file di intestazione per pilotare 16 × 2 Schermo LCD alfanumerico. Puoi saltare questa sezione per ottenere il codice completamente preparato e servito alla fine della pagina, ma pazienta mentre dividiamo il codice in piccole sezioni e proviamo a spiegare.
Ora che il file di intestazione è definito, passiamo alla dichiarazione delle variabili, che utilizzeremo nel codice per calcolare la tensione e la corrente. Inoltre, dobbiamo definire i pin che stiamo usando per pilotare l'LCD e i pin che useremo per fornire l'uscita PWM e leggere anche le tensioni analogiche provenienti dalla cella e dal resistore in questa sezione.
#includere
Venendo ora alla parte di configurazione, se vuoi mantenere il tuo Arduino connesso al tuo PC per tutto il tempo e monitorare l'avanzamento usando Serial Monitor e inizializza lo schermo LCD qui. Verrà inoltre visualizzato un messaggio di benvenuto "Circuito del tester capacità batteria" sullo schermo per 3 secondi.
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Imposta il cursore sulla prima colonna e sulla prima riga. lcd.print ("Capacità batteria"); lcd.setCursor (0,1); lcd.print ("Tester Circuit"); ritardo (3000); lcd.clear (); }
Ora non abbiamo bisogno di dichiarare il pin PWM di Arduino come Output poiché la funzione AnalogWrite che useremo nel nostro loop principale si occupa di questa parte. È necessario definire il valore PWM da scrivere su quel pin nel codice. Selezionare attentamente il valore PWM in base alla corrente di scarica richiesta nella propria applicazione. Un valore PWM eccessivo si tradurrà in una corrente elevata con un'elevata caduta di tensione nella cella agli ioni di litio e un valore PWM troppo basso comporterà un tempo di scarica elevato della cella. Nella funzione loop principale, leggeremo le tensioni sui pin A0 e A1 poiché Arduino ha un ADC a 10 bit a bordo, quindi dovremmo ottenere valori di uscita digitale compresi tra 0-1023 che dovremo ridimensionare al Intervallo 0-5 V moltiplicandolo per 5,0 / 1023,0. Assicurati di misurare correttamente la tensione tra i pin 5V e GND di Arduino Nano usando un voltmetro o un multimetro calibrato poiché la maggior parte delle volte la tensione regolata non è esattamente 5.0V e anche una piccola differenza in questa tensione di riferimento comporterebbe errori striscianti nelle letture della tensione, quindi misurare la tensione corretta e sostituire il 5.0 nel moltiplicatore sopra indicato.
Ora per spiegare la logica del codice, misuriamo continuamente la tensione della cella e se la tensione della cella è superiore al limite superiore specificato da noi nel codice, viene visualizzato il messaggio di errore sul display LCD per farti sapere se la cella è sovraccarico o c'è qualcosa di sbagliato nel collegamento e l'alimentazione al pin del gate del MOSFET viene interrotta in modo che nessuna corrente possa fluire attraverso il resistore di carico. È fondamentale caricare completamente la cella prima di collegarla alla scheda del tester di capacità in modo da poter calcolare la sua capacità di carica totale.
analogWrite (MOSFET_Pin, PWM_VALUE); // legge l'ingresso sul pin analogico 0: int sensorValue_voltage_Cell = analogRead (A0); // Converte la lettura analogica (che va da 0 - 1023) a una tensione (0 - 5V): float voltage = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("VOLTAGE:"); Serial.println (tensione); // Qui la tensione viene stampata su Serial Monitor lcd.setCursor (0, 0); // Imposta il cursore sulla prima colonna e sulla prima riga. lcd.print ("Voltaggio:"); // Stampa la lettura della tensione sullo schermo lcd.print (voltaggio); ritardo (100); int sensorValue_Shunt_Resistor = analogRead (A1); float voltage1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); corrente flottante = tensione1 / resistenza; Serial.print ("Current:"); Serial.println (corrente); lcd.setCursor (0, 1);// Imposta il cursore sulla prima colonna e sulla seconda riga (il conteggio inizia da 0!). lcd.print ("Current:"); lcd.print (current);
Ora, se la tensione della cella è entro i limiti di tensione superiore e inferiore da noi specificati, il Nano leggerà il valore di corrente con il metodo specificato sopra e lo moltiplicherà per il tempo trascorso durante le misurazioni e lo memorizzerà nella variabile di capacità che abbiamo definito in precedenza in unità mAh. Durante tutto questo tempo, i valori di corrente e tensione in tempo reale vengono visualizzati sullo schermo LCD collegato e, se lo desideri, puoi anche vederli sul monitor seriale. Il processo di scarica della cella continuerà fino a quando la tensione della cella non raggiungerà il limite inferiore specificato da noi nel programma, quindi la capacità totale della cella verrà visualizzata sullo schermo LCD e il flusso di corrente attraverso il resistore verrà interrotto tirando il gate del MOSFET pin basso.
else if (voltaggio> BAT_LOW && voltaggio <BAT_HIGH) {// Controlla se la tensione della batteria è entro il limite di sicurezza millisPassed = millis () - previousMillis; mA = corrente * 1000,0; Capacità = Capacità + (mA * (millisPassed / 3600000.0)); // 1 ora = 3600000 ms per convertirlo in unità mAh previousMillis = millis (); ritardo (1000); lcd.clear (); }
Miglioramenti della precisione
È, in ogni caso, un modo abbastanza buono per leggere la tensione e la corrente, ma non è perfetto. La relazione tra la tensione effettiva e la tensione ADC misurata non è lineare e ciò equivarrà a qualche errore nelle misurazioni delle tensioni e delle correnti.
Se si desidera aumentare la precisione del risultato, è necessario tracciare i valori ADC ottenuti applicando varie sorgenti di tensione note su un grafico e quindi determinare l'equazione del moltiplicatore utilizzando qualsiasi metodo si desideri. In questo modo, la precisione sarà migliorata e ti avvicinerai molto ai risultati effettivi.
Inoltre, il MOSFET che abbiamo usato non è un MOSFET a livello logico, quindi ha bisogno di più di 7 V per accendere completamente il canale corrente e se applicassimo 5 V direttamente ad esso, le letture correnti sarebbero imprecise. Ma puoi usare un MOSFET a canale N IRL520N a livello logico per eliminare l'uso di un'alimentazione a 12V e lavorare direttamente con i livelli logici a 5V che hai con il tuo Arduino.
Costruzione e prova del circuito
Ora, poiché abbiamo progettato e testato diverse sezioni del nostro circuito su una breadboard e dopo esserci assicurati che funzionino tutte come previsto, utilizziamo una Perfboard per saldare tutti i componenti insieme poiché è un metodo molto più professionale e affidabile per testare il circuito. Se lo desideri, puoi progettare il tuo PCB su AutoCAD Eagle, EasyEDA o Proteus ARES o qualsiasi altro software che ti piace. Arduino Nano, LCD alfanumerico 16 × 2 e OPAMP LM741 sono montati su Bergstik femmina in modo che possano essere riutilizzati in seguito.
Ho fornito un'alimentazione a 12V attraverso un connettore DC Barrel Jack per il circuito di corrente a carico costante e quindi con l'aiuto di LM7805, viene fornito il 5V per lo schermo Nano e LCD. Ora accendi il circuito e regola il potenziometro per impostare il livello di contrasto dello schermo LCD, dovresti vedere il messaggio di benvenuto sullo schermo LCD a questo punto, quindi se il livello di tensione della cella è nell'intervallo di lavoro, allora la corrente -Verrà visualizzata la tensione e la corrente dalla batteria.
Questo è un test molto semplice per calcolare la capacità della cella che stai utilizzando e può essere migliorato prendendo i dati e archiviandoli in un file Excel per eseguire l'elaborazione e la visualizzazione dei dati con metodi grafici. Nel mondo di oggi basato sui dati, questa curva di scarica della cella può essere utilizzata per costruire modelli predittivi accurati della batteria per simulare e vedere la risposta della batteria in condizioni di carico senza test nel mondo reale utilizzando software come NI LabVIEW, MATLAB Simulink, ecc. e molte altre applicazioni ti aspettano. Potete trovare il funzionamento completo di questo progetto nel video qui sotto. Se hai domande su questo progetto, scrivile nella sezione commenti qui sotto o usa i nostri forum. Andateci e divertitevi e se volete, possiamo guidarvi nella sezione commenti qui sotto su come procedere ulteriormente da qui. Fino ad allora Adios !!!