Taula de continguts:

Un altre provador de capacitat de la bateria: 6 passos
Un altre provador de capacitat de la bateria: 6 passos

Vídeo: Un altre provador de capacitat de la bateria: 6 passos

Vídeo: Un altre provador de capacitat de la bateria: 6 passos
Vídeo: Încărcător, reparator și tester de baterii - Topdon TB6000Pro 2024, Juliol
Anonim
Un altre provador de capacitat de bateria
Un altre provador de capacitat de bateria
Un altre provador de capacitat de bateria
Un altre provador de capacitat de bateria

Per què un provador de capacitat més?

He llegit moltes instruccions de construcció del provador, però sembla que cap d’elles s’ajusta a les meves necessitats. Volia poder provar també alguna cosa més que només cèl·lules NiCd / NiMH o Lion. Volia poder provar la bateria d’una eina elèctrica sense haver-la de separar abans. Per tant, vaig decidir aprofundir en la qüestió i dissenyar-ne un de propi. Una cosa en porta a una altra i finalment vaig decidir escriure un instructiu jo mateix. També vaig decidir no entrar en tots els detalls de com construir el provador perquè tothom pot decidir algunes opcions com la mida de la resistència a utilitzar o si es necessita un PCB o és suficient amb Veroboard i també hi ha un munt d’instructibles instal·lar l'àguila o com fer un PCB. Dit d’una altra manera, em centraré en els esquemes i el codi i com calibrar el provador.

Pas 1: historial: versió 1

Història - Versió 1
Història - Versió 1

A la part superior es mostra la primera versió amb més d’esmentada compatibilitat d’entrada de 10V (R12 i R17 i Q11 i Q12).

La primera versió va ser més o menys extreta d’un instructable de de1616 (per desgràcia no puc trobar el seu instructable per proporcionar un enllaç). Només es van fer alguns canvis menors. En aquesta versió tenia una resistència de càrrega de 10 ohm controlada per un mosfet. Això va comportar alguns problemes. En provar una cèl·lula NiCd o NiMH, el temps necessari es mesurava fàcilment en hores, si no en dies. Una bateria de 1500 mAh va trigar més de 12 hores (l’actual només era de 120 mA). D'altra banda, la primera versió només podia provar bateries de menys de 10V. I una bateria de 9,6 V totalment carregada pot arribar fins a 11,2 V, que no s’ha pogut provar a causa del límit de 10 V. Calia fer alguna cosa. En primer lloc, acabo d’afegir un parell de mosquetes i resistències per fer que els divisors de tensió puguin permetre més de 10V. Però, per altra banda, això va plantejar un altre problema. Una bateria de 14,4 V completament carregada pot tenir fins a 16,8 V de tp, que amb una resistència de 10 ohm significava 1,68 A de corrent i, per descomptat, una dissipació de potència de la resistència de càrrega de gairebé 30 W. Per tant, amb un temps de prova de baixa tensió massa llarg i amb un corrent d’alt voltatge massa alt. És evident que no era una solució adequada i calia desenvolupar-lo més.

Pas 2: versió 2

Volia una solució on el corrent es mantingués en determinats límits independentment del voltatge de la bateria. Una solució hauria estat utilitzar PWM i només una resistència, però vaig preferir tenir una solució sense corrent pulsant o tenir la necessitat de dissipar la calor del mosfet. Per tant, vaig crear una solució amb 10 ranures de tensió, cadascuna de 2V d’amplada, amb 10 resistències de 3,3ohm i un mosfet per a cada resistència.

Pas 3: així ha resultat

Així va resultar
Així va resultar

Es podria argumentar que la pèrdua de tensió del mosfet és insignificant perquè la resistència del mosfet és molt baixa, però he deixat l’elecció del mosfet al lector i, per tant, la resistència pot arribar fins i tot a superar els 1 ohm on comença a importa. En la primera versió, si escolliu un mosfet correcte, eliminaria la necessitat de mesurar un punt inferior, però a la versió 2 vaig decidir mesurar el voltatge només en una resistència, cosa que fa que sigui important tenir dos punts de mesura. I el motiu de l’elecció va ser la senzillesa de connectar el Veroboard. Això afegeix cert error de precisió, ja que el voltatge mesurat en una resistència és significativament menor que el de totes les resistències. En la selecció de components, vaig decidir utilitzar el que ja tenia a mà o el que podia obtenir fàcilment. Això va provocar el següent BOM:

  • Arduino Pro Mini 5V! IMPORTANT! He utilitzat la versió 5V i tot es basa en ella
  • Pantalla OLED I2C de 128x64
  • Resistències de 10 x 5W de 3,3 Ohm
  • 3 mosquetes 2n7000
  • 10 mosquetes IRFZ34N
  • Resistències de 6 x 10 kOhm
  • 2 resistències de 5 kOhm
  • Condensador de 16V 680uF
  • 1 ventilador de CPU antic

No he afegit el següent als esquemes

  • Les resistències de tracció a les línies I2C, que vaig notar, feien que la pantalla fos més estable
  • línies elèctriques
  • condensador en línia de 5V que també estabilitzava la pantalla

Durant les proves, vaig notar que les resistències de càrrega s’escalfarien força, sobretot si estiguessin en ús. La temperatura augmenta a més de 100 graus centígrads (que supera els 212 graus Fahrenheit) i, si s’ha de tancar tot el sistema en una caixa, s’hauria de proporcionar algun tipus de refrigeració. Les resistències que he fet servir són de 3,3 ohm / 5W i el corrent màxim hauria de produir-se amb uns 2V per resistència donant 2V / 3,3 = 0,61A, cosa que resulta en 1,21W. Vaig acabar afegint un simple ventilador al quadre. Sobretot perquè, per casualitat, tenia algun ventilador de CPU antic.

Funcionalitat esquemàtica

És bastant senzill i s’explica per si mateix. La bateria a provar està connectada a la sèrie de resistències i a terra. Els punts de mesura de tensió són la connexió de la bateria i la primera resistència. Els divisors de tensió s'utilitzen per baixar el voltatge a un nivell que millor s'adapti a Arduino. Una sortida digital s’utilitza per seleccionar el rang de separadors de 10V o 20V. Cada resistència de la càrrega es pot connectar a terra individualment mitjançant els mosfets, que són impulsats directament per Arduino. I, finalment, la pantalla està connectada als pins Arduino I2C. No hi ha molt a dir sobre l’esquema J

Pas 4: el codi

El codi
El codi

A sobre es pot veure la funcionalitat aproximada del codi. Vegem de prop el codi (els fitxers arduino ino s’adjunten). Hi ha diverses funcions i després el bucle principal.

Bucle principal

Quan la mesura està a punt, es mostren els resultats i l'execució acaba aquí. Si encara no es fa la mesura, primer es comprova quin tipus de bateria està seleccionat i, a continuació, el voltatge a l’entrada. Si el voltatge supera els 0,1 V, hi ha d’haver almenys algun tipus de bateria connectada. En aquest cas, es fa una subrutina per intentar esbrinar quantes cel·les hi ha a la bateria per decidir com provar. El nombre de cel·les és més o menys informació que es podria utilitzar millor, però, en aquesta versió, s’informa només a través de la interfície sèrie. Si tot és bo, s'inicia el procés de descàrrega i es calcula la capacitat de la bateria en cada ronda del bucle principal. Al final del bucle principal, la pantalla s'omple de valors coneguts.

Procediment per mostrar els resultats

La funció showResults simplement defineix les línies que es mostraran a la pantalla i també la cadena que s’enviarà a la interfície sèrie.

Procediment per mesurar tensions

Al començament de la funció es mesura el Vcc d'Arduino. Cal calcular les tensions mesurades mitjançant entrades analògiques. A continuació, es mesura el voltatge de la bateria mitjançant un rang de 20V per poder decidir quin rang utilitzar. Llavors es calcula tant el voltatge de la bateria com el voltatge de la resistència. Les mesures de voltatge de la bateria aprofiten la classe DividerInput, que té mètodes de lectura i tensió per donar la lectura bruta o la tensió calculada de l’entrada analògica en qüestió.

Procediment per seleccionar els valors utilitzats

A la funció selectUsedValues es calcula el nombre de cel·les i es defineixen els límits alt i baix de la bateria per utilitzar-los amb el procediment de descàrrega. A més, la mesura es marca com a iniciada. Els límits d’aquest procediment s’estableixen al principi de com a variables globals. Tot i que podrien ser constants i també es podrien definir dins del procediment, ja que no s’utilitzen globalment. Però bé, sempre hi ha alguna cosa a millorar:)

Procediment per calcular la capacitat de la bateria

La funció de descàrrega s'encarrega de comptar realment la capacitat de la bateria. Aconsegueix els límits baix i alt dels voltatges de la bateria com a paràmetres. En aquesta versió no s’utilitza el valor alt, però el valor baix s’utilitza per decidir quan s’aturarà la prova. Al començament de la funció, es coneix el nombre de resistències a utilitzar mitjançant una funció creada amb aquest propòsit. La funció retorna el nombre de resistències i, al mateix temps, inicia la descàrrega i restableix el comptador. A continuació, es mesuren les tensions i s’utilitzen juntament amb el valor de resistència conegut per calcular el corrent. Ara que ja sabem el voltatge i el corrent i el temps transcorregut des de l’última mesura, podem calcular la capacitat. Al final del procés de descàrrega, la tensió de la bateria es compara amb el límit baix i, si ha passat per sota del límit, la fase de descàrrega s’atura, els mosfets es tanquen i la mesura es marca com a llesta.

Procediment per trobar el nombre de resistències a utilitzar

A la funció selectNumOfResistors es fa una simple comparació de la tensió amb els valors predefinits i, en resultar, es decideix el nombre de resistències que s’utilitzaran. S'obre el mosfet adequat per saltar algunes de les resistències. Les ranures de tensió es seleccionen de manera que el corrent màxim en qualsevol moment durant la descàrrega es mantingui lleugerament per sobre dels 600 mA (2 V / 3,3 Ohm = 606 mA). La funció retorna el nombre de resistències utilitzades. Com que el ventilador es condueix des de la mateixa línia que el primer mosfet, s’ha d’obrir sempre quan es produeix la descàrrega.

Pas 5: Calibració del comptador

Calibració del comptador
Calibració del comptador

Per calibrar el mesurador he creat una altra aplicació (adjunta). Utilitza el mateix maquinari. Al principi, els valors del divisor de correcció estan definits a 1000.

const int divCorrectionB10V = 1000; // multiplicador de correcció divisor en el rang 10V const int divCorrectionR10V = 1000; // multiplicador de correcció divisor en el rang 10V const int divCorrectionB20V = 1000; // multiplicador de correcció divisor en el rang 20V const int divCorrectionR20V = 1000; // multiplicador de correcció divisor en el rang de 20V

a la funció readVcc (), la tensió Vcc resultant depèn de configurar el valor a l'última línia de la funció abans de tornar. Normalment, podeu trobar a Internet un valor de 1126400L per utilitzar-lo en el càlcul. Em vaig adonar que el resultat no era correcte.

Procés de calibració:

  1. Carregueu l'aplicació de mesura a Arduino.
  2. Podeu veure a l’Arduino (i a la sortida sèrie i si el ventilador gira) si la càrrega està activada. Si és així, gireu l'interruptor de selecció del tipus de bateria.
  3. Ajusteu el valor a readuVCC () per obtenir un resultat correcte. Agafeu el valor que dóna la funció (que és en milivolts) i dividiu-ne el valor llarg. Obtindreu el valor brut de la referència interna. Ara mesureu la tensió real d'alimentació en milivolts amb un multímetre i multipliqueu-la pel valor calculat anteriorment i obtindreu el nou valor llarg corregit. En el meu cas, la funció va retornar 5288 mV quan el Vcc real era de 5,14 V. Càlcul de 1126400/5288 * 5140 = 1094874 que he acabat de sintonitzar per prova. Introduïu el valor nou al codi i torneu-lo a penjar a Arduino.
  4. L'ajust dels valors de correcció del divisor de la resistència d'entrada analògica es fa mitjançant una font d'alimentació ajustable que s'utilitza per alimentar l'entrada del mesurador. El més senzill és utilitzar tensions d’1V a 20V amb passos d’1V i enregistrar els resultats en un full de càlcul. Al full de càlcul es pren la mitjana. Els valors corregits es calculen amb la fórmula següent: "raw_value * range * Vcc / Vin" on raw_value és el valor de 10VdivB, 10VdivR, 20VdivB o 20VdivR en funció de la correcció que es vulgui calcular.

Vegeu el full de càlcul com em semblava. Les mitjanes només es calculen a partir dels valors que s'han de situar a l'interval i aquests valors es defineixen a l'aplicació de comptador real.

Com això

const int divCorrectionB10V = 998; // divisor correcció divisor en el rang 10V const int divCorrectionR10V = 1022; // divisor correcció divisor en el rang 10V const int divCorrectionB20V = 1044; // divisor correcció divisor en el rang 20V const int divCorrectionR20V = 1045; // divisor de correcció divisor en el rang de 20V

L'ajust del valor de la resistència es pot fer proporcionant una mica de tensió a l'entrada (és a dir, 2V), canviant l'interruptor de tipus bat (per carregar) i mesurant el corrent que entra i el voltatge a la primera resistència i dividint el voltatge amb el corrent. Per a mi el 2V va donar 607mA, cosa que dóna 2 / 0,607 = 3,2948 ohms que vaig arrodonir a 3,295 ohms. Per tant, ara s’ha acabat el calibratge.

Pas 6: Última NOTA

Una nota important aquí. És imprescindible tenir totes les connexions en condicions excel·lents, des de la bateria fins a les resistències. Tenia una mala connexió i em preguntava per què aconseguia 0,3V menys de volts a la xarxa de resistència que a la bateria. Això significava que el procés de mesura va acabar gairebé immediatament amb cèl·lules NiCd de 1,2 V perquè el límit inferior de 0,95 V es va assolir ràpidament.

Recomanat: