Table des matières

Réalisation : Testeur de batterie

Introduction

Cette page décrit une réalisation très facile à mettre en œuvre à l'aide d'une carte Arduino, on estime un temps de la réalisation de l'ordre de 20 minutes. Je vous encourage à réaliser ce montage afin de maitriser analogRead() et digitalWrite()

I - Contexte

On veut réaliser un testeur de batterie 12V avec les fonctionnalités suivantes :

II - Structure du système

Il faut bien à un moment donner savoir de quoi on a besoin afin de réaliser le système :

EN BREF : il faut une carte Arduino (par exemple, une UNO), une entrée (A0) pour la mesure, une sortie (1) pour la diode, trois résistances, une diode. Ajoutons à cela une alimentation variable (pour faire office de batterie) et une fixe comprise entre 7 et 12V (alimentation de la carte Arduino UNO)

III - Codage

Voici le code à copier-coller dans le logiciel Arduino (après avoir crée un fichier “test_batterie” par exemple) puis à implémenter sur votre chère carte quand le montage ci-dessus sera réalisé.


/* TEST BATTERIE 
Premièrement on va nommer les Pins */
int voltmetre = A0;
int led = 1;
/* vient l'initialisation, led est une sortie !
on va créer également les variables et constantes de mesure */
void setup () {
 pinMode(led,OUTPUT);  
}
/* vient la structure principale */
void loop () { 
 float Ubatterie = 0; /* initialisation de la variable */
 float Ufaible = 10500; /* le seuil de 10,5V en mV */
 float Uchargee = 13600; /* le seuil de charge à 13.6V en mV */
 boolean decharge = LOW; /* on mémorise la décharge de batterie */

 Ubatterie=analogRead(voltmetre)*5000.0/1024.0; /* mesure de Ubatterie
 on suppose la batterie en service (chargée initialement) */ 
 while (Ubatterie<Ufaible) {
   /* un petit programme de clignotant avec mesure */
   digitalWrite(led,HIGH);
   delay(100);
   digitalWrite(led,LOW);
   delay(150);
   Ubatterie=analogRead(voltmetre)*5000.0/1024.0;
   decharge = HIGH;
 }
 /* même principe pour la phase de charge, si il y a eu décharge */
 while (Ubatterie<Uchargee && decharge == HIGH) {
   digitalWrite(led,HIGH);
   Ubatterie=analogRead(voltmetre)*5000.0/1024.0;
    }
//* réarmement du programme */
decharge = LOW ;  
digitalWrite(led,LOW);
 }