- Pourquoi avons-nous besoin d'un testeur de capacité de batterie?
- Composants requis
- Schéma du circuit du testeur de capacité de batterie Arduino
- Programme Arduino pour mesurer la capacité de la batterie
- Améliorations de la précision
- Construction et test du circuit
Avec l'avènement de la technologie, nos gadgets et appareils électroniques deviennent de plus en plus petits avec des applications plus fonctionnelles et complexes. Avec cette augmentation de la complexité, la puissance requise du circuit a également augmenté et dans notre quête pour rendre l'appareil aussi petit et portable que possible, nous avons besoin d'une batterie capable de fournir un courant élevé pendant une longue période de temps et en même temps. temps, pesez beaucoup moins pour que l'appareil reste portable. Si vous souhaitez en savoir plus sur les batteries, vous pouvez également lire cet article sur les terminologies de base des batteries.
Parmi les nombreux types de batteries disponibles, les batteries au plomb, les batteries Ni-Cd et les batteries Ni-MH ne conviennent pas car elles pèsent plus ou ne peuvent pas fournir le courant requis pour notre application, cela nous laisse avec les batteries lithium-ion qui peut fournir un courant élevé tout en gardant le poids bas et la taille compacte. Auparavant, nous avons également construit un module de chargeur et de rappel de batterie 18650 et un système de surveillance de batterie basé sur l'IoT, vous pouvez les vérifier si vous êtes intéressé.
Pourquoi avons-nous besoin d'un testeur de capacité de batterie?
Il existe de nombreux vendeurs de batteries sur le marché qui vendent des versions bon marché de batteries Li-ion revendiquant des spécifications bizarres avec un prix très bas, ce qui est trop beau pour être vrai. Lorsque vous achetez ces cellules, soit elles ne fonctionnent pas du tout, soit elles le font, la capacité de charge ou le débit de courant est si faible qu'elles ne peuvent pas du tout fonctionner avec l'application. Alors, comment tester une batterie au lithium si la cellule ne fait pas partie de ces imitations bon marché? L'une des méthodes consiste à mesurer la tension en circuit ouvert sans charge ni charge, mais ce n'est pas du tout fiable.
Nous allons donc construire un testeur de capacité de batterie 18650 pour une cellule Li-Ion 18650 qui déchargera une cellule 18650 entièrement chargée à travers une résistance tout en mesurant le courant circulant à travers la résistance pour calculer sa capacité. Si vous n'obtenez pas la capacité de batterie revendiquée alors que la tension de la cellule est dans les limites spécifiées, alors cette cellule est défectueuse et vous ne devriez pas l'utiliser car l'état de charge de la cellule s'épuisera à un rythme très rapide sous charge, créant un boucle de courant locale si elle est utilisée dans une batterie, ce qui entraîne un échauffement et éventuellement un incendie. Alors, allons droit au but.
Composants requis
- Arduino Nano
- LCD 16 × 2 caractères
- LM741 OPAMP IC
- 2.2Ω, résistance 5Watt
- 7805 CI régulateur de tension positive
- Alimentation 12V
- Potentiomètre de trimmer 10kΩ
- Condensateur 0.47uF
- Résistance 33kΩ
- Connecteur jack d'alimentation CC
- Bornes à vis PCB
- CI Mosfet IRF540N N-Channel
- Perfboard
- Kit de soudure
- Dissipateurs de chaleur
Schéma du circuit du testeur de capacité de batterie Arduino
Le schéma de circuit complet du testeur de capacité de batterie 18650 est illustré ci-dessous. L'explication du circuit est la suivante:
Unité de calcul et d'affichage:
Ce circuit est divisé en deux parties, la première est une faible alimentation 5V pour Arduino Nano et un écran LCD alphanumérique 16 × 2 et leurs connexions pour afficher les résultats des mesures de courant et de tension en temps réel. Le circuit est alimenté par l'alimentation 12V utilisant SMPS ou vous pouvez utiliser une batterie 12V ainsi que le courant maximin sera d'environ 60-70mA pour alimenter l'Arduino et l'écran LCD.
Pour abaisser la tension à 5 V, nous utiliserons un régulateur de tension linéaire pouvant prendre jusqu'à 35 V et nécessitant une alimentation d'entrée d'au moins 7,5 V pour fournir une alimentation régulée de 5 V et l'excès de tension est dissipé sous forme de chaleur, donc si votre entrée Le circuit intégré du régulateur de tension LM7805 est supérieur à 12 V, puis envisagez d'ajouter un dissipateur thermique afin qu'il ne soit pas endommagé. L'écran LCD est alimenté par une alimentation 5V du 7805 et est connecté à Arduino et fonctionne en mode 4 bits. Nous avons également ajouté un potentiomètre d'essuie-glace de 10k Ω pour contrôler le contraste de l'écran LCD.
Circuit de courant de charge constant:
Le deuxième est le circuit de charge à courant constant basé sur PWM pour rendre le courant de charge traversant la résistance contrôlable par nous et constant afin qu'il n'y ait pas d'erreur en raison de la variation du courant avec le temps lorsque la tension de la cellule diminue. Il se compose de LM741 OPAMP IC et IRF540N N-Channel MOSFET, qui contrôle le courant circulant à travers le MOSFET en allumant et éteignant le MOSFET en fonction du niveau de tension défini par nous.
L'ampli opérationnel fonctionne en mode comparateur,donc dans ce mode. la sortie de l'ampli opérationnel sera élevée chaque fois que la tension de la broche non inverseuse de l'amplificateur opérationnel est supérieure à la broche inverseuse. De même, si la tension à la broche inverseuse de l'ampli opérationnel est supérieure à la broche non inverseuse, la sortie de l'amplificateur opérationnel sera abaissée. Dans le circuit donné, le niveau de tension de la broche non inverseuse est contrôlé par la broche D9 PWM de l'Arduino NANO, qui commute à une fréquence de 500 Hz qui est ensuite passée à travers un filtre de circuit RC passe-bas avec une valeur de résistance 33 kΩ et un condensateur ayant une capacité de 0,47 uF, pour fournir un signal CC presque constant au niveau de la broche non inverseuse. La broche inverseuse est connectée à la résistance de charge, qui lit la tension aux bornes de la résistance et du GND commun. La broche de sortie de l'OPAMP est connectée à la borne de porte du MOSFET pour l'activer ou la désactiver.L'OPAMP essaiera de rendre les tensions sur ses deux bornes égales en commutant le MOSFET connecté afin que le courant traversant la résistance soit proportionnel à la valeur PWM que vous avez définie sur la broche D9 du NANO. Dans ce projet, le courant maximum auquel j'ai limité mon circuit est de 1,3 A, ce qui est raisonnable car la cellule que j'ai est de 10 A comme courant nominal maximum
Mesure de tension:
La tension maximale d'une cellule Li-Ion entièrement chargée typique est de 4,1 V à 4,3 V, ce qui est inférieur à la limite de tension de 5 V des broches d'entrée analogique de l'Arduino Nano qui a une résistance interne supérieure à 10 kΩ afin que nous puissions connecter directement le Cellule à l'une des broches d'entrée analogiques sans se soucier du courant qui les traverse. Donc, dans ce projet, nous devons mesurer la tension de la cellule afin de pouvoir déterminer si la cellule est dans la plage de tension de fonctionnement correcte et si elle est complètement déchargée ou non.
Nous devons également mesurer le courant traversant la résistance pour cela, nous ne pouvons pas utiliser le shunt de courant car la complexité du circuit augmentera et l'augmentation de la résistance dans le chemin de charge diminuera le taux de décharge de la cellule. L'utilisation de résistances shunt plus petites nécessitera un circuit amplificateur supplémentaire pour rendre la lecture de tension qui en provient, lisible par l'Arduino.
Nous lisons donc directement la tension aux bornes de la résistance de charge, puis en utilisant la loi d'Ohm, nous divisons la tension obtenue par la valeur de la résistance de charge pour obtenir le courant qui la traverse. La borne négative de la résistance est connectée directement au GND, nous pouvons donc supposer en toute sécurité que la tension que nous lisons sur la résistance est la chute de tension dans la résistance.
Programme Arduino pour mesurer la capacité de la batterie
Maintenant, après avoir finalisé le circuit matériel, nous passons à la programmation Arduino. Maintenant, si vous n'avez pas Arduino IDE installé sur votre PC, que faites-vous ici! Accédez au site Web officiel Arduino et téléchargez et installez l'IDE Arduino ou vous pouvez également coder dans n'importe quel autre éditeur, mais c'est un sujet pour un autre jour pour le moment, nous nous en tenons à l'IDE Arduino. Maintenant, nous utilisons Arduino Nano, alors assurez-vous d'avoir sélectionné la carte Arduino Nano en allant dans OUTILS> CARTES et en sélectionnant ARDUINO NANO là-bas, sélectionnez maintenant le processeur correct de votre nano en allant à OUTILS> PROCESSEURet pendant que vous y êtes, sélectionnez également le port auquel votre Arduino est connecté sur votre PC. Nous utilisons Arduino pour piloter l'écran LCD alphanumérique 16 × 2 qui y est connecté et pour mesurer la tension de la cellule et le courant traversant la résistance de charge comme expliqué dans la section précédente, nous commençons notre code en déclarant les fichiers d'en-tête pour conduire 16 × 2 Écran LCD alphanumérique. Vous pouvez sauter cette section pour obtenir le code entièrement préparé et servi à la fin de la page, mais restez avec nous pendant que nous divisons le code en petites sections et essayons d'expliquer.
Maintenant que le fichier d'en-tête est défini, nous passons à la déclaration des variables, nous allons utiliser dans le code pour calculer la tension et le courant. En outre, nous devons définir les broches que nous utilisons pour piloter l'écran LCD et les broches que nous utiliserons pour donner une sortie PWM et lire les tensions analogiques provenant de la cellule et de la résistance également dans cette section.
#comprendre
Arrivant maintenant à la partie configuration, si vous souhaitez garder votre Arduino connecté à votre PC tout le temps et surveiller la progression à l'aide du moniteur série et initialiser l'écran LCD ici. Il affichera également un message de bienvenue «Circuit du testeur de capacité de batterie» sur l'écran pendant 3 secondes.
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Positionne le curseur sur la première colonne et la première ligne. lcd.print ("Capacité de la batterie"); lcd.setCursor (0,1); lcd.print ("Circuit de testeur"); retard (3000); lcd.clear (); }
Maintenant, nous n'avons pas besoin de déclarer la broche Arduino PWM comme sortie car la fonction AnalogWrite que nous allons utiliser dans notre boucle principale s'occupe de cette partie. Vous devez définir la valeur PWM à écrire sur cette broche dans le code. Sélectionnez soigneusement la valeur PWM en fonction du courant de décharge requis dans votre application. Une valeur PWM trop élevée entraînera un courant élevé avec une chute de tension élevée dans la cellule Li-Ion et une valeur PWM trop faible entraînera un temps de décharge élevé de la cellule. Dans la fonction de boucle principale, nous lirons les tensions sur les broches A0 et A1 car l'Arduino a un ADC 10 bits à bord, nous devrions donc obtenir des valeurs de sortie numérique allant de 0 à 1023 dont nous aurons besoin pour revenir au Gamme 0-5V en la multipliant par 5,0 / 1023,0. Assurez-vous de mesurer correctement la tension entre les broches 5V et GND de l'Arduino Nano à l'aide d'un voltmètre ou d'un multimètre calibré, car la plupart du temps, la tension régulée n'est pas exactement 5,0V et même une petite différence dans cette tension de référence entraînerait des erreurs rampantes dans les lectures de tension afin de mesurer la tension correcte et de remplacer le 5,0 dans le multiplicateur indiqué ci-dessus.
Maintenant, pour expliquer la logique du code, nous mesurons en continu la tension de la cellule et si la tension de la cellule est supérieure à la limite supérieure spécifiée par nous dans le code, le message d'erreur s'affiche sur l'écran LCD pour vous faire savoir si la cellule est surchargé ou il y a un problème avec la connexion et l'alimentation de la broche de porte du MOSFET est arrêtée de sorte qu'aucun courant ne puisse traverser la résistance de charge. Il est essentiel de charger complètement votre cellule avant de la connecter à la carte du testeur de capacité afin de pouvoir calculer sa capacité de charge totale.
analogWrite (MOSFET_Pin, PWM_VALUE); // lire l'entrée sur la broche analogique 0: int sensorValue_voltage_Cell = analogRead (A0); // Convertit la lecture analogique (qui va de 0 - 1023) en une tension (0 - 5V): float voltage = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("VOLTAGE:"); Serial.println (tension); // Ici, la tension est imprimée sur le moniteur série lcd.setCursor (0, 0); // Positionne le curseur sur la première colonne et la première ligne. lcd.print ("Tension:"); // Imprime la lecture de tension sur l'écran lcd.print (voltage); retard (100); int sensorValue_Shunt_Resistor = analogRead (A1); float voltage1 = sensorValue_Shunt_Resistor * (5,08 / 1023,0); courant flottant = tension1 / résistance; Serial.print ("Current:"); Serial.println (actuel); lcd.setCursor (0, 1);// Positionne le curseur sur la première colonne et la deuxième ligne (le comptage commence à 0!). lcd.print ("Actuel:"); lcd.print (actuel);
Maintenant, si la tension de la cellule est dans les limites de tension supérieure et inférieure spécifiées par nous, le Nano lira la valeur actuelle par la méthode spécifiée ci-dessus et la multipliera par le temps écoulé pendant les mesures et la stockera dans la variable de capacité que nous avons définie précédemment. en unités mAh. Pendant tout ce temps, les valeurs de courant et de tension en temps réel sont affichées sur l'écran LCD connecté, et si vous le souhaitez, vous pouvez également les voir sur le moniteur série. Le processus de décharge de la cellule se poursuivra jusqu'à ce que la tension de la cellule atteigne en dessous de la limite inférieure spécifiée par nous dans le programme, puis la capacité totale de la cellule est affichée sur l'écran LCD et le flux de courant à travers la résistance est arrêté en tirant sur la porte MOSFET broche basse.
else if (voltage> BAT_LOW && voltage <BAT_HIGH) {// Vérifie si la tension de la batterie est dans la limite de sécurité millisPassed = millis () - previousMillis; mA = courant * 1000,0; Capacité = Capacité + (mA * (millisPassed / 3600000.0)); // 1 heure = 3600000ms pour le convertir en unités mAh previousMillis = millis (); retard (1000); lcd.clear (); }
Améliorations de la précision
C'est, par tous les moyens, un moyen suffisant de lire la tension et le courant, mais ce n'est pas parfait. La relation entre la tension réelle et la tension ADC mesurée n'est pas linéaire et cela entraînera une certaine erreur dans les mesures des tensions et des courants.
Si vous souhaitez augmenter la précision du résultat, vous devez tracer les valeurs ADC que vous obtenez en appliquant diverses sources de tension connues sur un graphique, puis en déterminer l'équation de multiplicateur en utilisant la méthode de votre choix. De cette façon, la précision sera améliorée et vous serez très proche des résultats réels.
De plus, le MOSFET que nous avons utilisé n'est pas un MOSFET de niveau logique, il a donc besoin de plus de 7V pour allumer complètement le canal actuel et si nous lui appliquons 5V directement, les lectures actuelles seraient inexactes. Mais vous pouvez utiliser un MOSFET à canal N IRL520N de niveau logique pour éliminer l'utilisation d'une alimentation 12V et travailler directement avec les niveaux logiques 5V que vous avez avec votre Arduino.
Construction et test du circuit
Maintenant que nous avons conçu et testé différentes sections de notre circuit sur une maquette et après nous être assurés que toutes fonctionnent comme prévu, nous utilisons un Perfboard pour souder tous les composants ensemble, car c'est une méthode beaucoup plus professionnelle et fiable pour tester le circuit.. Si vous le souhaitez, vous pouvez concevoir votre propre PCB sur AutoCAD Eagle, EasyEDA ou Proteus ARES ou tout autre logiciel de votre choix. L'Arduino Nano, l'écran LCD alphanumérique 16 × 2 et l'OPAMP LM741 sont montés sur Female Bergstik afin qu'ils puissent être réutilisés plus tard.
J'ai fourni une alimentation 12V via un connecteur DC Barrel Jack pour circuit de courant de charge constant, puis avec l'aide du LM7805, le 5V pour l'écran Nano et LCD est fourni. Maintenant, alimentez le circuit et ajustez le potentiomètre pour régler le niveau de contraste de l'écran LCD, vous devriez voir le message de bienvenue sur l'écran LCD maintenant, puis si le niveau de tension de la cellule est dans la plage de travail, alors le courant -la tension et le courant de la batterie y seront affichés.
Il s'agit d'un test très basique pour calculer la capacité de la cellule que vous utilisez et il peut être amélioré en prenant les données et en les stockant dans un fichier Excel pour effectuer le post-traitement des données et la visualisation par des méthodes graphiques. Dans le monde actuel axé sur les données, cette courbe de décharge de cellule peut être utilisée pour créer des modèles prédictifs précis de la batterie afin de simuler et de voir la réponse de la batterie en condition de charge sans test dans le monde réel à l'aide de logiciels tels que NI LabVIEW, MATLAB Simulink, etc.. et bien d'autres applications vous attendent. Vous pouvez retrouver le fonctionnement complet de ce projet dans la vidéo ci-dessous. Si vous avez des questions sur ce projet, veuillez les écrire dans la section commentaires ci-dessous ou utiliser nos forums. Allez-y et amusez-vous et si vous le souhaitez, nous pouvons vous guider dans la section commentaires ci-dessous sur la façon de procéder plus loin d'ici. Jusque-là Adios !!!