Analyseur de Charge/décharge de batterie

(traduit de l'article de David Gaddis de Circuit CELLAR INK #71 Juin 1996)

 

 

Ici, vous trouverez un circuit et un logiciel d'un instrument de test portable permettant d'évaluer la charge et la décharge de batteries. Il transforme des mesures fastidieuses basées sur le temps en de simples opérations réalisées par un automate.

La dernière fois que j'ai conçu un produit alimenté par batterie, je me suis promis à moi-même que je concevrai un instrument de test autonome aussi tôt que possible.

J'en avais besoin pour m'aider à évaluer les performances de charge et de décharge de batteries.

Le 7ème Circuit Cellar Design Contest se présentait juste comme un opportunité.

Laissez moi vous décrire l'instrument que j'ai réalisé.

BESOINS DE CONCEPTION

Dans le passé, la méthode que j'utilisais le plus souvent pour recueillir les données de performance d'une batterie demandait plusieurs VOMs connectés pour des mesure de courant et de tension. Enregistrer les lectures à intervalle régulier et surveiller toute lecture anormale demandait du temps.

J'ai aussi utilisé un PC avec une carte de conversion Analogique/Numérique. Mais, bien que je puisse réaliser les mesures voulues, ce n'était pas universel ou portable. De plus j'aurai préféré ne pas monopoliser mon PC à collecter des données.

J'imaginais un instrument de test qui connecté, ressemblait à un VOM numérique standard et avait un fonctionnement identique. Il aurait fourni des mesures de base de courant et de tension transformant ainsi de fastidieuses mesures se situant dans la durée en une opération automatique.

J'avais besoin de mesurer des milliampères et des milliwatts heure, des temps de charge et de décharge, des tensions crêtes, moyennes, minimum et maximum, des courants et des puissances.

La Figure1 catalogue ces mesures et calculs.

Je voulais que cet instrument soit seul , puisse faire des tests répétitifs, enregistrer des mesures si nécessaire et se connecter entre la batterie, la charge et le chargeur.

J'avais besoin de faire passer la batterie par des cycles de charge et de décharge. Il fonctionnerait avec n'importe quel chimie de batterie et arrêterait ou signalerait par alarme quand une charge ou une décharge dépasserait son temps limite.

Si besoin, cet instrument pourvoirait aux besoins d'une interface de PC pour une enregistrement de données en temps réel. Il serait capable de choisir le nombre d'élément, de spécifier les mAh, ainsi que la chimie de la batterie et programmer des tests cycliques.

J'ai appelé cet instrument un "Battey Charge/Discharge Analyzer" (BCDA)

La figure 2 liste les principales spécifications hardware.

BATTERIES

Les batteries sont des composants qui convertissent l'énergie, par le moyen de réactions chimiques ou physiques, en courant électrique. La Figure 3 montre le dépliant de classifications des différents types de batterie.

Le groupe des batteries chimiques est composé de trois catégories : Les batteries primaires sont les batteries dont l'énergie s'épuise quand le composé actif est consumé. Les batteries secondaire ou de stockage utilisent des composants qui se regénèrent au moment de la charge. Les batteries combustibles sont les batteries qui reçoivent des matériels actifs de sources externes et qui le convertissent en énergie électrique.

Des exemples de batterie primaire sont le carbon-zinc, l'alkalin, le lithium, l'oxyde d'argent et le mercure. Le carbone-zinc, l'alkalin et l'oxyde d'argent ont une tension nominale de 1,5V par élément. Le lithium a une tension nominale de 3V par élément et a de loin la meilleur capacité de décharge, de durée de vie et de caractéristiques de température.

Le mercure a une tension nominale de 1,4V par élément. Le carbone-zinc et l'alkalin sont les plus utilisés dans les applications courantes. L'oxyde d'argent et le mercure sont utilisés pour des applications où une tension constante à faible courant pendant de longues périodes est requise.

Des exemples de batteries secondaires ou de stockage sont le Nickel-Cadmium (NiCd), l'acide de Plomb, le lithium et même une nouveau alkalin. Le NiCd a une tension nominale de 1,2V par élément alors que l'acide de Plomb a une tension nominale de 2V par élément. La Table 1 résume les spécifications de tension de plusieurs types de batteries.

La capacité d'une batterie est le pouvoir d'énergie électrique qu'elle peut délivrer dans des conditions de décharge spécifiées. La valeur de capacité spécifiée en Ah ou en mAh est le produit du courant de charge et du temps. La valeur capacitive C varie en fonction du taux de décharge.

Par exemple, un élément de NiCd pourait avoir un taux de 660 mAh à C/5 mais seulement 600mAh à 1C.

La plupart des fabricants de batteries rechargeables spécifient la capacité minimum standard basée sur un taux 5-h à 0,2 C de courant de décharge.

Le minimum et le maximum de la tension de la batterie, du courant et de la puissance sont très importants pendant la charge et la décharge. Beaucoup de produits ne s'allumeraient pas si la tension de la batterie était trop basse. Si elle est trop haute (par exemple après une charge) l'entrée de filtrage peut être endommagée. Les hauts courants peuvent indiquer des choses anormales, alors que de faibles courants peuvent signifier que l'alimentation n'a pas été appliquée à tous les circuits.

DESCRIPTION DU CIRCUIT

La figure 4 donne le schéma du BCDA. Comme vous pouvez le voir, il est conçu autour du MC68HC705C8 de Motorola, microcontrôleur 8 bit avec un convertisseur A/N 12 bits pour digitaliser la tension de la batterie et le courant de charge et de "load".


Les coefficients des calibration et de configuration sont sauvegardés dans une EEPROM avec des données temporaires.

L'utilisateur contrôle le BCDA avec 4 touches et peut avoir un feedback grâce à un afficheur LCD16 caractères. Le contrôle de la charge et de la décharge est assuré par deux relais normalement ouvert e 5A. Un PC peut être connecté par une liaison 3 fils TX,RX,GND de type RS232.

La charge et la décharge est échantillonnée à travers la résistance R6 , une résistance de puissance de 0,1ohm/5W. La tension développée à travers R6 est mémorisée à travers un ampli différentiel, U7a. U7 est un quadruple amplificateur , monotension rail-to-rail.

Pour garder les tensions d'entrées au niveau des ampli-op à l'intérieur des rails d'alimentation, l'amplificateur différentiel atténue l'entrée de tension par un facteur 13. Un amplificateur construit avec U7c donne un gain de 51, Ainsi le gain continu et alternatif basse fréquence de la tension développée à travers R6 vers le ADC est de 3,9.

Le courant différentiel et le gain des amplificateurs sont "biaised" à la moitié de Vref soit à 2,33V fournit par le buffer U7b.

Avec un courant d'entrée de +/-5A, la tension varie dans le ADC de +/- 1,956V centrée autour de 2,33V. Chaque gain en tension des amplificateurs est de 6dB à à peu près 300 Hz .Les résultats d'atténuation des filtres passe-bas dans la contre-réaction qui est crée par les combinaisons parallèles de R18 et C22 avec U7a et R7 et C19 avec U7c.

La tension de la batterie est surveillée au niveau de la connexion de la batterie à R6. Le diviseur de tension de R19 et R20 atténue la tension de la batterie par un facteur 4,4 avant d'être bufferisée par U7d. L'entrée du convertisseur ADC a un niveau de tension compris entre 0 et Vref pour des batteries allant jusqu'à 20,5V. La tension de la batterie est toujours connectée à l'ADC quelque soit l'état des relais K1 et K2. Cette caractéristique permet au soft de détection la connexion de la batterie.

Notez que U7 a besoin d'une très grande CMRR de 80 dB ou plus avec une entrée rail to rail de mode commun et des capacités de sorties Rail to Rail.

Vref est issue de D2, une tension de référence programmable par TL431 à 4,66V. La référence est filtrée afin de minimiser le bruit du système affectant la conversion Analogique/numérique.

U8 est un LTC1293 de LINEAR TECHNOLOGY et contient un multiplexer sample - and hold et à 6 entrées. Il effectue des conversions unipolaires sur 12 bits sur les tensions voulues et les entrées de courant. Le LTC1293 se connecte via une interface 4 fils au port SPI de U6, le 68HC705C8 de MOTOROLA. La Table 2 donne la tension d'entrée, l'excursion en courant, et la résolution résultante.

Le microcontrôleur s'interface au LCD par le port B et trois sorties sur le port C . Le software contrôle la direction du Port B afin d'accéder aux fonctions de l'afficheur. La direction du port B est changée afin de lire l'indicateur BUSY de telle façon que les boucles d'attentes ne sont pas nécessaires. Les 4 switches en entrée utilisateur s'interfacent au 4 entrées du port A.

Les Relais K1 et K2 contrôlent les courant de charge et de load, respectivement. Les bobines des relais demandent 40 mA à 5V pour s'activer, de telle façon qu'elles sont contrôlées par le microcontrôleur à travers Q2 et Q3 qui sont des transistors JFET 2N7000. Les résistances de rappel à la masse R4 et R5 permettent de garder les relais éteint pendant les transition de power-up et power-down.

L'alimentation digitale et analogique est assurée par le régulateur U4, un LM2931-5A0.

Le régulateur U5, aussi un LM2931-5A0, fournit une alimentation séparée aux relais et au beeper puisque les trois peuvent être activés simultanément.

L'EEPROM série U1, une 93LC66, est interfaçée à 4 signaux du port C du microcontrôleur. U1 a 256x16 mots de mémoire non volatile pour des données des coefficients, de configuration et temporaires.

Les niveaux de l'entrée Série RS232 et de la sortie sont assurés par U3 un circuit MAXIM MAX202 alimenté en +5V. U3 se connecte au port SCI de U6.

L'autre driver et receveur qui peut être utilisé pour le contrôle auxiliaire ou le debuggage, se connecte aux ports non utilisé de U6, mais reste non connecté du coté de la RS-232.

La Photo 1 montre l'implémentation Hardware du BCDA. Une boîte plastique facilite l'assemblage, mais un emballage métallique permet une meilleure protection. J'ai installé des composants sur les deux cotés du circuit imprimé. Les touches, le LCD, le beeper, et le bouton de contraste sont sur le coté composant alors que les autres sont sur l'autre coté.

Ajuster le niveau de R7 et R8 change le gain de U7c, altérant ainsi le range du courant d'entrée. Fixer le range à +/- 2A permet une résolution légèrement inférieure à 1 mA par bit. Une entrée de courant plus sensible serait plus appréciable pour des applications à faible courant.

Le diviseur construit par R19 et R20 fixe la tension du range de la tension d'entrée. Presque n'importe quelle tension d'entrée est possible si les limites d'entrées de U7 sont respectées. Cette contrainte ne devrait pas être un problème compte tenu du fait que R15, R16 , R17 et R18 son fixées.

Les routines correspondantes qui fabriquent les valeurs des courants et tensions incluant la calibration et les fonction de linéarisation, demandent d'être changées en conséquence.

CALCULS

Toute les valeurs pertinentes sont calculées et amassées deux fois par seconde.

Les valeurs de la tension de l'ADC (Vraw) et du courant (Iraw) sont les résultats d'une moyenne de 500 échantillons. L'opération d'addition est assurée par la routine d'interruption fonctionnant à 1kHz, alors que les calculs de moyenne sont effectuées dans la routine interface utilisateur de premier plan.

Vraw se calcule par: Vraw=SUM(v[x])/500 où v[x] est la tension individuelle de l'ADC échantillonnée pour les variations de x allant de 0 à 499.

Iraw se calcule par Iraw=SUM(i[x])/500 ou i[x] est le courant individuel de l'ADC échantillonné pour les variations de x allant de 0 à 499.

Chaque valeur v[x] et i[x] est comparée à la valeur pic prédominante, ceci remplace la dernière valeur préalablement enregistrée.

Les valeurs crêtes sont enregistrées pour les tensions et les courant de charge et de décharge.

Les valeurs Vraw et Iraw sont utilisées en tant qu'arguments dans une équation linéaire de premier ordre pour calculer respectivement VDC et IDC sur une droite.

VDC et IDC sont données en unités usuelles Volts et Ampères.

Une valeur de courant négative dénote un courant de charge alors qu'une valeur positive fixe le courant de décharge.

VDC se calcule par:

VDC= (VRAW x Mv) + Bv

où Mv et Bv sont les coefficients sauvegardés en EEPROM pendant l'étape de calibration de tension.

IDC se calcule par:

IDC= (IRAW x Mi) + Bi

Où Mi et Bi sont les coefficients sauvegardés en EEPROM pendant l'étape de calibration du courant.

La puissance PDC, est le produit de VDC et IDC. La valeur de PDC porte le signe du courant avec la même désignation du point de vues de la polarité.

PDC se calcule par : PDC= IDC x VDC

Ampère-heures (Ah) et watt-heures (Wh) sont calculés en accumulant des valeurs totalisant des résultats de courant (ITOTAL) et de puissance (WTOTAL) calculées chaque 1/2 seconde et divisées par 7200.

Les Ampère-heures se calculent par: ITOTAL= ITOTAL+ IDC où IDC représente les ampères calculés chaque 1/2 seconde, ainsi Ah=Itotal/7200. Ou 7200 est le nombre de mesures par heure.

Les Watt-heures se calculent par WTOTAL=WTOTAL+PDC où PDC représente les Watts calculés chaque 1/2 seconde, ainsi Wh=Wtotal/7200 ou 7200 est le nombre de mesures par heure.

Des valeurs séparées de ampère-heure et watt-heure sont traitées pour la charge et la décharge.

L'efficacité de la charge d'une batterie est une mesure de l'utilisation de l'énergie durant la charge remplaçant l'énergie dissipée pendant la décharge. Durant la charge, les matériaux actifs sont transformés en composés chargés.

L'efficacité de la charge dépend à la fois des facteurs de charge et de décharge. L'efficacité de la charge est le ratio de décharge vers la charge 100 fois. Une fois que l'efficacité de charge est calculée, la batterie appropriée peut être choisie en fonction des paramètres de fonctionnement.

L'efficacité est calculée aussi bien pour les ampère-heures que pour les watt-heures.

L'efficacité de charge basée sur les ampères se calcule par:

Charge efficiency(A)%= (Discharge Ah/Charge Ah) x 100

L'effciacité de charge basée sur les Watts se calcule par:

Charge efficiency(W)%=(Discharge Wh/Charge Ah) x 100.

Une fois que cette information est collectée , le chargeur adéquat et la batterie est évident.

Le BCDA aide et simplifie l'acquisition de données pertinentes nécessaires pour faire un choix.

DESCRIPTION DU SOFTWARE

Le programme du BCDA est écrit en assembleur, ce qui procure le maximum de contrôle et de flexibilité sans sacrifier la vitesse. Le MC68HC705 ne se prête pas facilement à la programmation avec un langage de haut niveau comme le C, mais j'aime le langage assembleur organisé par pile.

Le programme du BCDA incluse une collection de fonctions qui implémente des opérations mathématiques 16- et 32-bit , des opérations de données et de pile, de 'timer-counter', de sauvegarde et rappel de valeurs en EEPROM, et des fonctions de LCD et de liaison série.

Le programme consiste en deux grandes sections:

Le BCDA exécute une routine d'interruption à une fréquence de 1 kHz qui réalise les conversions A/D, la scrutation des touches, les messages, et les comptages de base pour les timers. La boucle de premier plan assure l'interface utilisateur et les calculs.

Le code pour le BCDA est simple et franc, excepté pour les additions de registres à double buffer. Pour échantillonner continuellement des entrées analogique, ces registres sont contrôlés par une routine d'interruption cadencée à 1kHz. La routine d'interruption est déclenchée par la fonction output-compare du microcontrôleur MC68HC705C8. Les registres OUTPUT-COMPARE sont rechargés en écriture chaque fois que le code est exécuté pour l'interruption suivante.

L'interruption à 1 kHz assure un certain nombre d'opération temps réel telles:

Les entrées de tension et de courant sont échantillonnées à un taux de 1khz et calculées dans une série active de registres sur 32-bit. Après 500 échantillons, les registre somme actifs sont switchés, le drapeau data flag ready est activé, le nouveau registre somme est mis à 0, et le processus de somme recommence à nouveau.

L'interface utilisateur est typiquement un menu conduit par table où chaque partie du menu est définie comme un enregistrement dans la table. Chaque élément des actions est défini par un flag bit. Un item peut être le titre d'un menu, une valeur statique, ou des calculs temps réel (à 1/2 seconde de taux de mise à jour)

L'edition de valeur et la sélection d'opération est aussi faite par des routines "table-driven".

Parce que le MC68HC705 a seulement un registre d'index sur 8 bits, les textes des routines d'affichage sont "pseudotable-driven". Chaque call demande le code de page de 256 octets et un offset de chaîne.

Le source code complet de ces routines peut être obtenu depuis le B.B.S. de Circuit CELLAR. Ou théoriquement sur le serveur FTP : ftp://ftp.circuitcellar.com/CCINK/1996/Issue71/

OPERATION LOGICIELLE

Le BCDA est contrôlé par l'utilisateur à travers six menus et 4 softkeys. Chaque opérations sont accédées en se déplaçant à la fonction spécifiée et est exécutée par une combinaison spéciale de plusieurs touches. Table 3 détaille les actions disponibles à partir des 4 touches individuellement. Table 4 donne les correspondances d'une fonction directe avec des combinaisons spécifiques de touches.

L'utilisateur peut configurer le BCDA, choisir les valeurs à afficher et les séquence de test à effectuer. Le mode multimètre vous permet de contrôler des mesures spécifiques.

Une fois qu'un test est commencé, le BCDA démarre jusqu'à qu'il ait fini le test à moins qu'une commande ne l'ai stoppé. Toutes les fonctions du Menu sont disponibles, même pendant un test. Le test est réellement en cours pendant la mise en veille, un peut comme un système multitâches.

AMELIORATIONS FUTURES

Le BCDA fonctionne bien dans sa forme de base. Par dessus tout, il rencontre tous les buts de sa conception de départ et diagnostique avec succès des problèmes rencontrés sur les équipements à base de batteries. Il y a plusieurs éléments que je veux changer qui amélioreraient sa valeur en tant qu'instrument autonome de test.

Tout d'abord je voudrais ajouter une entrée pour mesurer la température de la batterie, avec par exemple un capteur de température Dallas à 3 fils. Il enregistrerait et afficherait la température comme les autres valeurs pendant un test ou dans le menu du multimètre.

Deuxièmement, J'ajouterai 64 KB de RAM. Cet ajout permettrait l'enregistrement de valeurs de courant, tension, température jusqu'à 48 heures et toutes les 30 secondes. La RAM pourrait être dévidée vers un PC pour plus d'analyse.

Troisièmement, je voudrais permettre un accès externe aux entrées du convertisseur Analogique/Numérique, incluant peut-être une seconde entrée de tension et de courant. Ce changement pourrait être utilisé pour mesurer la sortie d'une tension régulée et le courant de 'load' résultant.

Quatrièmement, je voudrais fournir plusieurs entrées et sorties digitales que l'on puisse se servir pour surveiller et contrôler aussi bien le chargeur que la charge. Cet fonctionnalité déterminerait si un chargeur mesure correctement la condition de batterie pleinement chargée ou "low-battery". L'état de chaque entrée serait enregistrée tout du long avec les autres valeurs précédemment citées.

David Gaddis.

REFERENCES:

[1] Sanyo Electric, CADNICA Seald Type Nickel Cadmium Batteries, Engineering Handbook, SF-6336,3-5,1991.

[2] M. Kaufman and A.H. Seidman, Handboo of Electronics Calculations, McGraw-Hill, New-York, NY, 11.2-11.3,1988.

[3] Gates Energy Products, Sealed Rechargeable Batteries, Application Manual, 93-98, 1989.

Retour à la Base de donnée Electronique

Retour à la page d'accueil

22 août, 2009

matthieu.benoit@free.fr