Table des matières:

Encore un autre testeur de capacité de batterie : 6 étapes
Encore un autre testeur de capacité de batterie : 6 étapes

Vidéo: Encore un autre testeur de capacité de batterie : 6 étapes

Vidéo: Encore un autre testeur de capacité de batterie : 6 étapes
Vidéo: Vérifiez l'état REEL de la batterie de votre iPhone ! 2024, Juillet
Anonim
Encore un autre testeur de capacité de batterie
Encore un autre testeur de capacité de batterie
Encore un autre testeur de capacité de batterie
Encore un autre testeur de capacité de batterie

Pourquoi un autre testeur de capacité

J'ai lu beaucoup d'instructions de construction de testeurs différentes, mais aucune d'entre elles ne semble répondre à mes besoins. Je voulais aussi pouvoir tester plus que simplement des cellules NiCd/NiMH ou Lion. Je voulais pouvoir tester une batterie d'outil électrique sans la démonter au préalable. J'ai donc décidé d'examiner la question de plus près et d'en concevoir une moi-même. Une chose en amène une autre et j'ai finalement décidé d'écrire moi-même un instructable. J'ai également décidé de ne pas entrer dans tous les détails sur la façon de construire le testeur car tout le monde peut décider de certains choix comme la taille de la résistance à utiliser ou si un PCB est nécessaire ou est assez Veroboard et il y a aussi une tonne d'instructables comment installer eagle ou comment faire un PCB. En d'autres termes, je me concentrerai sur les schémas et le code et comment calibrer le testeur.

Étape 1: Historique - Version 1

Historique - Version 1
Historique - Version 1

Ci-dessus se trouve la première version avec la prise en charge d'entrée supérieure à 10 V mentionnée ci-dessous ajoutée (R12&R17&Q11&Q12).

La première version était plus ou moins tirée d'un instructable par deba168 (malheureusement, je ne trouve pas son instructable pour fournir un lien). Seuls quelques changements mineurs ont été apportés. Dans cette version, j'avais une résistance de charge de 10 ohms contrôlée par un mosfet. Cela a apporté quelques problèmes cependant. Lors du test d'une cellule NiCd ou NiMH, le temps nécessaire était facilement mesuré en heures, voire en jours. Une batterie de 1500 mAh a pris plus de 12 heures (le courant n'était que de 120 mA). En revanche, la première version ne pouvait tester que des batteries sous 10V. Et une batterie de 9,6 V complètement chargée peut en fait aller jusqu'à 11,2 V, ce qui n'a pas pu être testé en raison de la limite de 10 V. Il fallait faire quelque chose. Tout d'abord, je viens d'ajouter quelques mosfets et résistances pour que les diviseurs de tension puissent autoriser plus de 10V. Mais ceci d'un autre côté a soulevé un autre problème. Une batterie de 14,4 V à pleine charge peut avoir jusqu'à 16,8 V, ce qui avec une résistance de 10 ohms signifiait un courant de 1,68 A et bien sûr une dissipation de puissance de la résistance de charge de près de 30 W. Donc, avec une basse tension trop longue durée de test et avec une haute tension trop élevée. De toute évidence, ce n'était pas une solution adéquate et un développement supplémentaire était nécessaire.

Étape 2: Version 2

Je voulais une solution où le courant resterait dans certaines limites quelle que soit la tension de la batterie. Une solution aurait été d'utiliser un PWM et une seule résistance, mais j'ai préféré avoir une solution sans courant pulsé ou avoir besoin de dissiper la chaleur du mosfet. Ainsi, j'ai créé une solution avec 10 emplacements de tension, chacun de 2V de large, en utilisant 10 résistances de 3,3 ohms et un mosfet pour chaque résistance.

Étape 3: voici comment cela s'est passé

C'est comme ça que ça s'est passé
C'est comme ça que ça s'est passé

Commentaires sur le circuit On pourrait dire que la perte de tension sur le mosfet est négligeable car la résistance du mosfet est si faible, mais j'ai laissé le choix du mosfet au lecteur et donc la résistance peut aller même au-dessus de 1 ohm où elle commence à question. Dans la première version, le choix du mosfet correct éliminerait le besoin de mesurer le point inférieur, mais sur la version 2, j'ai décidé de mesurer la tension sur une seule résistance, ce qui rend alors important d'avoir deux points de mesure. Et la raison de ce choix était la simplicité de câblage du Veroboard. Cela ajoute une erreur de précision car la tension mesurée sur une résistance est nettement inférieure à celle mesurée sur toutes les résistances. Pour la sélection des composants, j'ai décidé d'utiliser ce que j'avais déjà sous la main ou ce que je pouvais facilement obtenir. Cela a conduit à la nomenclature suivante:

  • Arduino Pro Mini 5V ! IMPORTANT ! J'ai utilisé la version 5V et tout est basé dessus
  • Écran OLED 128x64 I2C
  • 10 résistances 5W 3,3 Ohm
  • 3 mosfets 2n7000
  • 10 mosfets IRFZ34N
  • 6 résistances de 10 kOhm
  • 2 résistances de 5 kOhm
  • Condensateur 16V 680uF
  • 1 ancien ventilateur CPU

Je n'ai pas ajouté ce qui suit dans les schémas

  • résistances pullup sur les lignes I2C, ce que j'ai remarqué rend l'affichage plus stable
  • les lignes électriques
  • condensateur en ligne 5V qui stabilise également l'affichage

Lors des tests, j'ai remarqué que les résistances de charge devenaient assez chaudes, surtout si elles étaient toutes utilisées. La température a augmenté à plus de 100 degrés Celsius (ce qui est supérieur à 212 degrés Fahrenheit) et si l'ensemble du système doit être fermé dans une boîte, il devrait y avoir une sorte de refroidissement. Les résistances que j'ai utilisées sont de 3,3 ohms / 5W et le courant maximum devrait se produire avec environ 2V par résistance donnant 2V / 3,3 = 0,61A, ce qui donne 1,21W. J'ai fini par ajouter un simple ventilateur dans la boîte. Principalement parce que j'avais un vieux ventilateur CPU dans les parages.

Fonctionnalité schématique

C'est assez simple et explicite. La batterie à tester est connectée à la série des résistances et à la masse. Les points de mesure de tension sont la connexion de la batterie et la première résistance. Les diviseurs de tension sont ensuite utilisés pour faire chuter la tension à un niveau qui convient mieux à Arduino. Une sortie numérique est utilisée pour sélectionner la plage 10V ou 20V des diviseurs. Chaque résistance de la charge peut être mise à la terre individuellement à l'aide des mosfets, qui sont pilotés directement par Arduino. Et enfin, l'écran est connecté aux broches Arduino I2C. Pas grand chose à dire sur le schéma J

Étape 4: le code

Le code
Le code

Ci-dessus, on peut voir la fonctionnalité approximative du code. Regardons alors de plus près le code (les fichiers arduino ino sont joints). Il y a un certain nombre de fonctions, puis la boucle principale.

Boucle principale

Lorsque la mesure est prête, les résultats sont affichés et l'exécution s'arrête là. Si la mesure n'est pas encore effectuée, le type de batterie sélectionné est d'abord vérifié, puis la tension aux bornes de l'entrée. Si la tension dépasse 0,1 V, il doit y avoir au moins une sorte de batterie connectée. Dans ce cas, un sous-programme est appelé pour essayer de déterminer le nombre de cellules dans la batterie pour décider comment tester. Le nombre de cellules est plus ou moins une information qui pourrait être mieux utilisée mais, dans cette version, il est signalé uniquement via l'interface série. Si tout va bien, le processus de décharge est lancé et à chaque tour de boucle principale, la capacité de la batterie est calculée. À la fin de la boucle principale, l'affichage est rempli de valeurs connues.

Procédure d'affichage des résultats

La fonction showResults définit simplement les lignes à afficher à l'écran ainsi que la chaîne à envoyer à l'interface série.

Procédure de mesure des tensions

Au début de la fonction, le Vcc d'Arduino est mesuré. Il est nécessaire de pouvoir calculer les tensions mesurées à l'aide d'entrées analogiques. Ensuite, la tension de la batterie est mesurée à l'aide d'une plage de 20 V pour pouvoir décider quelle plage utiliser. Ensuite, la tension de la batterie et la tension de la résistance sont calculées. Les mesures de tension de batterie tirent parti de la classe DividerInput qui a des méthodes de lecture et de tension pour donner la lecture brute ou la tension calculée de l'entrée analogique en question.

Procédure de sélection des valeurs utilisées

Dans la fonction selectUsedValues, le nombre de cellules est deviné et les limites haute et basse de la batterie sont définies pour être utilisées avec la procédure de décharge. La mesure est également marquée comme démarrée. Les limites de cette procédure sont définies au début des variables globales. Bien qu'ils puissent être constants, ils pourraient également être définis à l'intérieur de la procédure car ils ne sont pas utilisés globalement. Mais bon il y a toujours quelque chose à améliorer:)

Procédure de calcul de la capacité de la batterie

La fonction de décharge se charge de compter effectivement la capacité de la batterie. Il obtient les limites basse et haute des tensions de la batterie testée en tant que paramètres. La valeur haute n'est pas utilisée dans cette version, mais la valeur basse est utilisée pour décider quand arrêter le test. Au début de la fonction, le nombre de résistances à utiliser est déterminé en utilisant une fonction créée à cet effet. La fonction renvoie le nombre de résistances et en même temps démarre la décharge et réinitialise le compteur. Ensuite, les tensions sont mesurées et utilisées avec une valeur de résistance connue pour calculer le courant. Maintenant que nous connaissons la tension et le courant et le temps écoulé depuis la dernière mesure, nous pouvons calculer la capacité. À la fin du processus de décharge, la tension de la batterie est comparée à la limite basse et si elle est inférieure à la limite, la phase de décharge s'arrête, les mosfet sont fermés et la mesure est signalée comme prête.

Procédure pour trouver le nombre de résistances à utiliser

Dans la fonction selectNumOfResistors, une simple comparaison de la tension avec les valeurs prédéfinies est effectuée et, en fonction du résultat, le nombre de résistances à utiliser est décidé. Le mosfet approprié est ouvert pour sauter certaines des résistances. Les créneaux de tension sont sélectionnés de manière à ce que le courant maximum à tout moment pendant la décharge reste légèrement supérieur à 600mA (2V/3.3Ohm=606mA). La fonction renvoie le nombre de résistances utilisées. Parce que le ventilateur est entraîné par la même ligne que le premier mosfet, il doit toujours être ouvert lorsque la décharge est en cours.

Étape 5: Étalonnage du compteur

Étalonnage du compteur
Étalonnage du compteur

Pour calibrer le compteur, j'ai créé une autre application (ci-jointe). Il utilise le même matériel. Au début, les valeurs du diviseur de correction sont toutes réglées sur 1000.

const int divCorrectionB10V = 1000; // multiplicateur de correction du diviseur dans la plage 10V const int divCorrectionR10V = 1000; // multiplicateur de correction du diviseur dans la plage 10V const int divCorrectionB20V = 1000; // multiplicateur de correction du diviseur dans la plage 20V const int divCorrectionR20V = 1000; // multiplicateur de correction du diviseur dans la plage 20V

dans la fonction readVcc(), la tension Vcc résultante dépend de la définition de la valeur sur la dernière ligne de la fonction avant le retour. Habituellement, vous pouvez trouver sur Internet une valeur de 1126400L à utiliser dans le calcul. J'ai remarqué que le résultat n'était pas correct.

Processus d'étalonnage:

  1. Chargez l'application de mesure sur Arduino.
  2. Vous pouvez voir dans l'Arduino (et dans la sortie série et si le ventilateur tourne) si la charge est activée. Si c'est le cas, tournez le commutateur de sélection du type de batterie.
  3. Ajustez la valeur dans readuVCC() pour avoir un résultat correct. Prenez la valeur donnée par la fonction (qui est en millivolts) et divisez la valeur longue avec. Vous obtiendrez la valeur brute de la référence interne. Mesurez maintenant la tension d'alimentation réelle en millivolts avec un multimètre et multipliez-la par la valeur calculée précédemment et vous obtenez la nouvelle valeur longue corrigée. Dans mon cas, la fonction a renvoyé 5288mV alors que le Vcc réel était de 5,14V. Calcul de 1126400/5288*5140=1094874 que j'ai affiné par essai. Mettez la nouvelle valeur dans le code et téléchargez-la à nouveau sur Arduino.
  4. Le réglage des valeurs de correction du diviseur de résistance d'entrée analogique se fait en utilisant une source d'alimentation réglable qui est utilisée pour alimenter l'entrée du compteur. Le plus simple est d'utiliser des tensions de 1V à 20V avec des pas de 1V et d'enregistrer les résultats dans un tableur. Dans la feuille de calcul, la moyenne est prise. Les valeurs corrigées sont calculées avec la formule suivante: « raw_value*range*Vcc/Vin » où raw_value est la valeur en 10VdivB, 10VdivR, 20VdivB ou 20VdivR selon la correction à calculer.

Voir la feuille de calcul à quoi cela ressemblait pour moi. Les moyennes sont calculées uniquement à partir des valeurs qui doivent être sur la plage et ces valeurs sont ensuite définies dans l'application du compteur réelle.

Comme ça

const int divCorrectionB10V = 998; // correction du diviseur diviseur dans la plage 10V const int divCorrectionR10V = 1022; // correction du diviseur diviseur dans la plage 10V const int divCorrectionB20V = 1044; // correction du diviseur diviseur dans la plage 20V const int divCorrectionR20V = 1045; // diviseur de correction diviseur dans la plage 20V

Le réglage de la valeur de la résistance peut être effectué en fournissant une tension à l'entrée (c'est-à-dire 2 V), en commutant le commutateur de type chauve-souris (pour mettre la charge en marche) et en mesurant le courant entrant et la tension aux bornes de la première résistance et en divisant la tension avec le courant. Pour moi, 2V a donné 607mA, ce qui donne 2/0,607 = 3,2948 ohms que j'ai arrondi à 3,295 ohms. Alors maintenant, le calibrage est fait.

Étape 6: dernière REMARQUE

Une remarque importante ici. Il est impératif d'avoir toutes les connexions en parfait état de la batterie aux résistances. J'avais une mauvaise connexion et je me demandais pourquoi j'avais 0,3 V de moins de volts dans la grille de résistance que sur la batterie. Cela signifiait que le processus de mesure s'est terminé presque immédiatement avec des cellules NiCd de 1,2 V car la limite inférieure de 0,95 V a été atteinte rapidement.

Conseillé: