Sommario:

Ancora un altro tester di capacità della batteria: 6 passaggi
Ancora un altro tester di capacità della batteria: 6 passaggi

Video: Ancora un altro tester di capacità della batteria: 6 passaggi

Video: Ancora un altro tester di capacità della batteria: 6 passaggi
Video: Come testare le capacità delle batterie 2024, Dicembre
Anonim
Ancora un altro tester di capacità della batteria
Ancora un altro tester di capacità della batteria
Ancora un altro tester di capacità della batteria
Ancora un altro tester di capacità della batteria

Perché un altro tester di capacità?

Ho letto molte istruzioni per la compilazione del tester, ma nessuna di esse sembra soddisfare le mie esigenze. Volevo essere in grado di testare anche più di singole celle NiCd/NiMH o Lion. Volevo essere in grado di testare una batteria per elettroutensili senza prima smontarla. Così, ho deciso di dare un'occhiata più da vicino alla questione e di progettarne uno tutto mio. Una cosa tira l'altra e alla fine ho deciso di scrivere io stesso un istruibile. Ho anche deciso di non entrare in tutti i dettagli su come costruire effettivamente il tester perché tutti possono decidere su determinate scelte come la dimensione del resistore da usare o se è necessario un PCB o è sufficiente Veroboard e c'è anche un sacco di istruzioni su come installa eagle o come realizzare un PCB. In altre parole, mi concentrerò sugli schemi e sul codice e su come calibrare il tester.

Passaggio 1: Cronologia - Versione 1

Storia - Versione 1
Storia - Versione 1

Sopra è la prima versione con il supporto di ingresso oltre 10V menzionato di seguito aggiunto (R12&R17&Q11&Q12).

La prima versione è stata più o meno presa da un istruibile di deba168 (purtroppo non riesco a trovare il suo istruibile per fornire un link). Sono state apportate solo alcune piccole modifiche. In questa versione avevo un resistore di carico da 10 ohm controllato da un mosfet. Questo però ha portato alcuni problemi. Durante il test di una cella NiCd o NiMH il tempo necessario è stato facilmente misurato in ore se non in giorni. Una batteria da 1500 mAh ha impiegato più di 12 ore (la corrente era solo 120 mA). D'altra parte, la prima versione poteva testare solo batterie sotto i 10V. E una batteria da 9,6 V completamente carica può effettivamente arrivare fino a 11,2 V che non è stato possibile testare a causa del limite di 10 V. Bisognava fare qualcosa. Innanzitutto, ho appena aggiunto un paio di mosfet e resistori per rendere i divisori di tensione in grado di consentire più di 10 V. Ma questo d'altra parte ha sollevato un altro problema. Una batteria da 14,4 V completamente carica può avere fino a 16,8 V che con un resistore da 10 ohm significava una corrente di 1,68 A e, naturalmente, una dissipazione di potenza dal resistore di carico di quasi 30 W. Quindi, con un tempo di prova troppo lungo a bassa tensione e con una corrente troppo alta ad alta tensione. Chiaramente non era una soluzione adeguata ed era necessario un ulteriore sviluppo.

Passaggio 2: versione 2

Volevo una soluzione in cui la corrente rimanesse entro certi limiti indipendentemente dalla tensione della batteria. Una soluzione sarebbe stata quella di utilizzare il PWM e un solo resistore, ma ho preferito avere una soluzione senza corrente pulsante o avere la necessità di dissipare il calore del mosfet. Pertanto, ho creato una soluzione con 10 slot di tensione, ciascuno largo 2 V, utilizzando 10 resistori da 3,3 ohm e un mosfet per ciascun resistore.

Passaggio 3: ecco come è andata a finire

Ecco come è andata a finire
Ecco come è andata a finire

Commenti sul circuito Si potrebbe obiettare che la perdita di tensione sul mosfet è trascurabile perché la resistenza del mosfet è così bassa, ma ho lasciato al lettore la scelta del mosfet e quindi la resistenza può andare anche oltre 1 ohm dove inizia a questione. Nella versione uno, la scelta del mosfet corretto eliminerebbe la necessità di misurare il punto inferiore, ma nella versione 2 ho deciso di misurare la tensione su un solo resistore, il che rende quindi importante avere effettivamente due punti di misurazione. E il motivo alla base della scelta è stata la semplicità nel cablaggio della Veroboard. Ciò aggiunge un certo errore di precisione poiché la tensione misurata su un resistore è significativamente inferiore rispetto alla misurazione su tutti i resistori. Nella scelta dei componenti ho deciso di utilizzare quello che avevo già a portata di mano o quello che potevo facilmente ottenere. Ciò ha portato alla seguente distinta base:

  • Arduino Pro Mini 5V !IMPORTANTE! Ho usato la versione 5V e tutto si basa su di essa
  • Display OLED 128x64 I2C
  • 10 x 5W 3,3 Ohm resistori
  • 3 x 2n7000 mosfet
  • 10 x IRFZ34N mosfet
  • 6 x 10 kOhm resistori
  • 2 x 5 kOhm resistori
  • Condensatore 16V 680uF
  • 1 vecchia ventola della CPU

Non ho aggiunto quanto segue negli schemi

  • resistori di pullup sulle linee I2C, che ho notato hanno reso il display più stabile
  • linee elettriche
  • condensatore in linea 5V che stabilizzava anche il display

Durante i test ho notato che i resistori di carico si surriscaldavano, specialmente se fossero tutti in uso. La temperatura è salita a oltre 100 gradi Celsius (che è oltre 212 gradi Fahrenheit) e se l'intero sistema deve essere chiuso in una scatola, dovrebbe essere previsto un qualche tipo di raffreddamento. I resistori che ho usato sono 3,3 ohm / 5 W e la corrente massima dovrebbe verificarsi con circa 2 V per resistore dando 2 V / 3,3 = 0,61 A che risulta in 1,21 W. Alla fine ho aggiunto un semplice ventilatore nella scatola. Principalmente perché mi è capitato di avere qualche vecchia ventola della CPU in giro.

Funzionalità schematica

È abbastanza semplice e autoesplicativo. La batteria da testare è collegata alla serie delle resistenze e alla massa. I punti di misurazione della tensione sono il collegamento della batteria e la prima resistenza. I divisori di tensione vengono quindi utilizzati per abbassare la tensione a un livello che si adatta meglio ad Arduino. Un'uscita digitale viene utilizzata per selezionare la gamma 10V o 20V dei divisori. Ogni resistore nel carico può essere messo a terra individualmente usando i mosfet, che sono pilotati direttamente da Arduino. E infine, il display è collegato ai pin I2C di Arduino. Non c'è molto da dire sullo schema J

Passaggio 4: il codice

Il codice
Il codice

Sopra si può vedere la funzionalità approssimativa del codice. Diamo un'occhiata più da vicino al codice quindi (i file ino di arduino sono allegati). Ci sono una serie di funzioni e poi il ciclo principale.

Ciclo principale

Quando la misurazione è pronta, vengono visualizzati i risultati e l'esecuzione termina lì. Se la misurazione non è ancora stata eseguita, viene prima verificato quale tipo di batteria è stato selezionato e quindi la tensione ai capi dell'ingresso. Se la tensione supera 0,1V, deve essere collegata almeno un qualche tipo di batteria. In questo caso viene chiamata una subroutine per cercare di capire quante celle ci sono nella batteria per decidere come eseguire il test. Il numero di celle è più o meno un'informazione che potrebbe essere meglio utilizzata ma, in questa versione, è riportata solo tramite interfaccia seriale. Se tutto va bene, viene avviato il processo di scarica e ad ogni giro del circuito principale viene calcolata la capacità della batteria. Al termine del ciclo principale il display viene popolato con valori noti.

Procedura per mostrare i risultati

La funzione showResults imposta semplicemente le righe da visualizzare sul display e anche la stringa da inviare all'interfaccia seriale.

Procedura per la misurazione delle tensioni

All'inizio della funzione viene misurato il Vcc di Arduino. È necessario essere in grado di calcolare le tensioni misurate utilizzando gli ingressi analogici. Quindi la tensione della batteria viene misurata utilizzando un intervallo di 20 V per poter decidere quale intervallo utilizzare. Quindi viene calcolata sia la tensione della batteria che la tensione della resistenza. Le misurazioni della tensione della batteria sfruttano la classe DividerInput che ha metodi di lettura e tensione per fornire la lettura grezza o la tensione calcolata dell'ingresso analogico in questione.

Procedura per la selezione dei valori utilizzati

Nella funzione selectUsedValues viene indovinato il numero di celle e vengono impostati i limiti alto e basso per la batteria da utilizzare con la procedura di scarica. Anche la misurazione è contrassegnata come avviata. I limiti per questa procedura sono impostati all'inizio delle variabili globali. Anche se potrebbero essere costanti, e potrebbero anche essere definiti all'interno della procedura poiché non sono utilizzati a livello globale. Ma ehi, c'è sempre qualcosa da migliorare:)

Procedura per il calcolo della capacità della batteria

La funzione di scarica si occupa di contare effettivamente la capacità della batteria. Ottiene i limiti basso e alto delle tensioni per la batteria in prova come parametri. Il valore alto non viene utilizzato in questa versione, ma il valore basso viene utilizzato per decidere quando interrompere il test. All'inizio della funzione viene rilevato il numero di resistori da utilizzare utilizzando una funzione creata appositamente. La funzione restituisce il numero di resistori e contemporaneamente avvia la scarica e azzera il contatore. Quindi le tensioni vengono misurate e utilizzate insieme al valore noto del resistore per calcolare la corrente. Ora che conosciamo la tensione e la corrente e il tempo trascorso dall'ultima misurazione, possiamo calcolare la capacità. Al termine del processo di scarica la tensione della batteria viene confrontata con il limite inferiore e se è scesa al di sotto del limite la fase di scarica si interrompe, i mosfet vengono chiusi e la misurazione viene contrassegnata come pronta.

Procedura per trovare il numero di resistori da utilizzare

Nella funzione selectNumOfResitors viene eseguito un semplice confronto della tensione con i valori preimpostati e in base al risultato viene deciso il numero di resistori da utilizzare. Il mosfet appropriato viene aperto per saltare alcuni dei resistori. Gli slot di tensione sono selezionati in modo che la corrente massima in qualsiasi momento durante la scarica rimanga leggermente superiore a 600 mA (2 V/3,3 Ohm = 606 mA). La funzione restituisce il numero di resistori utilizzati. Poiché la ventola viene azionata dalla stessa linea del primo mosfet, deve essere sempre aperta quando è in corso lo scarico.

Passaggio 5: calibrazione del misuratore

Calibrazione del misuratore
Calibrazione del misuratore

Per far calibrare lo strumento ho creato un'altra app (in allegato). Utilizza lo stesso hardware. All'inizio i valori del divisore di correzione sono tutti impostati su 1000.

const int divCorrectionB10V = 1000; // moltiplicatore di correzione del divisore nell'intervallo 10V const int divCorrectionR10V = 1000; // moltiplicatore di correzione del divisore nell'intervallo 10V const int divCorrectionB20V = 1000; // moltiplicatore di correzione del divisore nell'intervallo 20V const int divCorrectionR20V = 1000; // moltiplicatore di correzione del divisore nel range 20V

nella funzione readVcc() la tensione Vcc risultante dipende dall'impostazione del valore sull'ultima riga della funzione prima del ritorno. Solitamente in internet si trova un valore di 1126400L da utilizzare nel calcolo. Ho notato che il risultato non era corretto.

Processo di calibrazione:

  1. Carica l'app di misurazione su Arduino.
  2. Puoi vedere in Arduino (e nell'uscita seriale e se la ventola sta ruotando) se il carico è attivo. In caso affermativo, ruotare l'interruttore di selezione del tipo di batteria.
  3. Regola il valore in readuVCC() per avere un risultato corretto. Prendi il valore fornito dalla funzione (che è in millivolt) e dividi con esso il valore lungo. Otterrai il valore grezzo del riferimento interno. Ora misura la tensione di alimentazione effettiva in millivolt con un multimetro e moltiplicala per il valore calcolato in precedenza e ottieni il nuovo valore lungo corretto. Nel mio caso la funzione ha restituito 5288 mV quando il Vcc effettivo era 5,14 V. Calcolando 1126400/5288*5140=1094874 che ho perfezionato per prova. Inserisci il nuovo valore nel codice e caricalo di nuovo su Arduino.
  4. La regolazione dei valori di correzione del divisore del resistore di ingresso analogico avviene utilizzando una fonte di alimentazione regolabile che viene utilizzata per alimentare l'ingresso del misuratore. Il più semplice è utilizzare tensioni da 1V a 20V con incrementi di 1V e registrare i risultati su un foglio di calcolo. Nel foglio di calcolo viene presa la media. I valori corretti sono calcolati con la seguente formula: “raw_value*range*Vcc/Vin” dove raw_value è il valore in 10VdivB, 10VdivR, 20VdivB o 20VdivR a seconda di quale correzione si vuole calcolare.

Guarda il foglio di calcolo come mi è sembrato. Le medie vengono calcolate solo dai valori che devono trovarsi nell'intervallo e tali valori vengono quindi impostati nell'app del misuratore effettivo.

Come questo

const int divCorrectionB10V = 998; // divisore correzione divisore nell'intervallo 10V const int divCorrectionR10V = 1022; // divisore correzione divisore nell'intervallo 10V const int divCorrectionB20V = 1044; // divisore correzione divisore nell'intervallo 20V const int divCorrectionR20V = 1045; // divisore correzione divisore nel range 20V

La regolazione del valore del resistore può essere eseguita fornendo un po' di tensione all'ingresso (cioè 2V), commutando l'interruttore di tipo bat (per caricare il carico) e misurando la corrente che entra e la tensione attraverso il primo resistore e dividendo la tensione con la corrente. Per me 2V hanno dato 607 mA che danno 2/0.607 = 3,2948 ohm che ho arrotondato a 3,295 ohm. Quindi ora la calibrazione è fatta.

Passaggio 6: ultima NOTA

Una nota importante qui. È indispensabile che tutti i collegamenti dalla batteria alle resistenze siano in ottime condizioni. Ho avuto una cattiva connessione e mi chiedevo perché ho ottenuto 0,3 V in meno di volt nella griglia del resistore rispetto alla batteria. Ciò significava che il processo di misurazione si è concluso quasi immediatamente con celle NiCd da 1,2 V perché il limite inferiore di 0,95 V è stato raggiunto rapidamente.

Consigliato: