Logo Mon Club Elec

Calcul de la charge d’une batterie 12V

Le calcul de la charge d’une batterie 12V est une tâche importante pour les propriétaires de véhicules équipés de batteries 12V. Il est essentiel de connaître la charge de la batterie pour s’assurer que le véhicule fonctionne correctement et en toute sécurité. Dans cet article, nous allons examiner les différentes méthodes pour calculer la charge d’une batterie 12V et expliquer comment les utiliser pour vous assurer que votre véhicule est toujours prêt à rouler.

Calcul de la charge d’une batterie 12V

Présentation

Ce programme mesure la tension d’une batterie au plomb 12V. Le programme réalise l’affichage en continu sur un écran LCD 4 x 20 :

  • de la valeur brute de la mesure
  • de la tension mesurée
  • de la tension calculée de la batterie
  • de la charge de la batterie calculée

Ce programme utilise les fonctionnalités suivantes :

  • un afficheur LCD alphanumérique 4×20 en mode 4 bits
  • la conversion analogique numérique 10bits sur les voies analogiques analog 0,

Le montage utilise un régulateur -9V de type 7909 : Datasheet du régulateur 7909

Discussion technique

Pour la discussion de la mesure de la tension de la batterie 12V, voir : Mesure simple tension batterie au plomb

On pourrait penser intuitivement que le niveau de charge d’une batterie au plomb est proportionnellement lié à la tension à ses bornes. Grosso modo, 0V pour 0% de charge et 12V pour 100% de charge… En fait il n’en n’est rien !!

Le niveau de charge est effectivement relié à la tension aux bornes mais pour une variation de tension de 1 à 2V au plus… Cette tension varie de plus en fonction de l’utilisation qui est faîte de la batterie. Commençons par la mesure de la charge d’une batterie au plomb à vide (c’est à dire avec rien branché dessus…)

Voici la courbe de charge typique d’une batterie :

Calcul de la charge d’une batterie 12V

La courbe de charge peut être considérée avec une bonne approximation comme linéaire entre 90% de charge et 20% de charge.

Pour le calibrage de la droite , je retiens 12,8V / 90% de charge et 12,2V / 20% de charge… (volontairement au-dessus de la courbe réelle pour avoir une charge réelle qui soit en réalité un peu suprérieure à la charge calculée, ce qui donne plus de sécurité en pratique… avoir une charge calculée à 80% alors qu’en réalité elle est de 85%, c’est mieux…)

  • pour les parties de la courbe qui sont AU-DESSUS de la droite utilisée, la charge calculée sera majorée par rapport à la réalité
  • pour les parties de la courbe qui sont AU-DESSOUS de la droite utilisée, la charge calculée sera minorée par rapport à la réalité (préférable en pratique)

Matériel Nécessaire

L’espace de développement Arduino

  • … pour éditer, compiler le programme et programmer la carte Arduino.
Calcul de la charge d’une batterie 12V

Le matériel suivant pour réaliser le montage associé

  • une plaque d’essai pour montage sans soudures,
Calcul de la charge d’une batterie 12V
  • des straps,
Calcul de la charge d’une batterie 12V
  • un régulateur négatif 9V (modèle 7909)
Calcul de la charge d’une batterie 12V
  • les condensateurs associés à savoir 2 x 2,2µF et 1 x 1µF
Calcul de la charge d’une batterie 12V

Instructions de montage

  • Connecter sur la broche 6 la broche RS du LCD
  • Connecter sur la broche 7 la broche E du LCD
  • Connecter sur la broche 8 la broche D4 du LCD
  • Connecter sur la broche 9 la broche D5 du LCD
  • Connecter sur la broche 10 la broche D6 du LCD
  • Connecter sur la broche 11 la broche D7 du LCD
  • Broche Analog 0 (=broche 14) en entrée Analogique
  • le régulateur 7909 comme indiqué sur le schéma ci-dessous. Pour mémoire, le brochage de 7909
Calcul de la charge d’une batterie 12V

Le schéma théorique du montage

Calcul de la charge d’une batterie 12V
Le schéma théorique du montage

Mise en oeuvre du programme

Préparation du montage et programmation de la carte Arduino :

  • Commencer par réaliser le montage indiqué sur plaque d’expérimentation
  • Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle

Fonctionnement

  • La tension brute, en Volt et de la batterie et la charge calculée s’affichent en permanence.

Le programme complet en langage Arduino :

A copier/coller directement dans l’éditeur Arduino


// --- Programme Arduino ---
// par X. HINAULT - Le 12/03/2010
// www.mon-club-elec.fr 

// --- Que fait ce programme ? ---
/* mesure la tension d'une batterie au plomb 12V. 
Affichage de la valeur de la mesure continue sur un écran LCD 
La tension de la Batterie est abaissé à l'aide d'un régulateur -9V (7909)
*/

// --- Fonctionnalités utilisées ---
// Utilise un afficheur LCD alphanumérique4x20 en mode 4 bits 
// Utilise la conversion analogique numérique 10bits sur les voies analogiques  analog 0, 

// --- Circuit à réaliser ---

// Connecter  sur la broche 6 la broche RS du LCD
// Connecter  sur la broche 7 la broche E du LCD
// Connecter  sur la broche 8 la broche D4 du LCD
// Connecter  sur la broche 9 la broche D5 du LCD
// Connecter  sur la broche 10 la broche D6 du LCD
// Connecter  sur la broche 11 la broche D7 du LCD
// Broche Analog 0 (=broche 14) en entrée Analogique 

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...

// --- Inclusion des librairies utilisées ---

#include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD 

// --- Déclaration des constantes ---

// --- constantes des broches ---

const int RS=6; //declaration constante de broche 
const int E=7; //declaration constante de broche 
const int D4=8; //declaration constante de broche 
const int D5=9; //declaration constante de broche 
const int D6=10; //declaration constante de broche 
const int D7=11; //declaration constante de broche 

const int Voie_0=0; //declaration constante de broche analogique

// --- Déclaration des variables globales ---
int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique
float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique

float tension=0.0; // Variable tension mesurée
float tension_batterie_mV=0.0; // Variable tension batterie calculée
float tension_batterie_V=0.0; // Variable tension batterie calculée

long charge_batterie=0; // Variable charge batterie 

float tension_regulateur=9070.0; // Variable tension réelle aux bornes du régulateur -9V (en mV)

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---

LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// Création d'un objet LiquidCrystal = initialisation LCD en mode 4 bits 


//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// --- ici instructions à exécuter au démarrage --- 

lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes 

delay(10); // pause rapide pour laisser temps initialisation

// Test du LCD

lcd.print("LCD OK") ; // affiche la chaîne texte - message de test
delay(2000); // pause de 2 secondes

lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(10); // pour laisser temps effacer écran


// ------- Broches en sortie -------  


// ------- Broches en entrée -------  


// ------- Activation du rappel au + interne des broches en entrée si nécessaire -------  


} // fin de la fonction setup()
// ********************************************************************************

//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop(){ // debut de la fonction loop()

// --- ici instructions à exécuter par le programme principal --- 

//-------- mesure brute --------
mesure_brute=analogRead(Voie_0);

lcd.setCursor(0,0) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !) 
lcd.print ("Valeur brute ="); 
lcd.print (mesure_brute); 
lcd.print (" "); // espace de propreté

//---------- tension mesurée ---------
mesuref=float(mesure_brute)*5000.0/1024.0;
tension=mesuref/1000.0; // en Volts

lcd.setCursor(0,1) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !) 
lcd.print ("Tension ="); 
lcd.print (tension,3); // float avec 2 décimales 
lcd.print (" V "); // unité et espace de propreté

//---------- tension batterie ---------
tension_batterie_mV=mesuref+tension_regulateur;
tension_batterie_V=tension_batterie_mV/1000.0; // en Volts

lcd.setCursor(0,2) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !) 
lcd.print ("Batterie ="); 
lcd.print (tension_batterie_V,3); // float avec 2 décimales
lcd.print (" V "); // unité et espace de propreté

//---------- charge batterie ---------
charge_batterie=map(long(tension_batterie_mV),12200 ,12800 , 20, 90); // rééchelonne entre valeur tension 20% et 90%


lcd.setCursor(0,3) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !) 
lcd.print ("Charge ="); 

if (charge_batterie<=20)
{
  lcd.print ("< 20"); // long
}
else if (charge_batterie>=90)
{
  lcd.print ("> 90"); // long
}
else
{
  lcd.print (charge_batterie); // long  
}

lcd.print (" % "); // unité et espace de propreté


} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

//*************** Autres Fonctions du programme *************

// --- Fin programme ---


Noter cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.