Tester la charge de nos piles avec Arduino.

Tester la charge de nos piles avec Arduino
Tester la charge de nos piles avec Arduino

Comment peut-on vérifier que les piles que traînent chez nous sont encore utiles ou sont vides? Dans cet article nous allons créer un testeur de charge pour piles avec notre carte Arduino. Cela dit, on ne pourra pas tester des charges au delà de 5 V sans endommager le pin analogique d’ Arduino.

Testeur de charge pour piles avec Arduino.

Il est nécessaire:

  • Carte Arduino Uno ou équivalent.
  • Cables.
  • Piles pour tester.

Schéma:

Connexion de la pile avec Arduino
Connexion de la pile avec Arduino

Code:

float lecture;
float volt;

void setup() {
  Serial.begin(9600);
  pinMode(A0,INPUT);
}

void loop() {
  lecture = analogRead(A0);
  volt = lecture /1023 * 5.0;
  Serial.println(volt);
}

Nous déterminons, d’abord, une variable du type float nommée lecture afin de enregistrer les données reçues du pin A0 (entre 0 et 1023). La deuxième variable float, nommée volt, nous servira à enregistrer la conversion de ces données en volts.

Dans la fonction setup() on initialise le port série avec le mandat Serial.begin() et on indique que le pin A0 de la carte est un port d’entrée.

Dans la fonction loop() on réalise la lecture du pin A0, on fait la conversion à volts, et finalement, on imprime les données via moniteur série.

Pour réaliser un essai rapide sans pile, on peut téléverser ce code au IDE et connecter le cable rouge (voir schéma) directement au pin de 5V de la carte ou au pin 3.3V. L’écran devrait montrer les valeurs 5.00 et 3.3 respectivement.

Tout est prêt pour tester nos piles!

Testeur de charge avec diodes.

Et si on ajoute quelques diodes indiquant la quantité de charge de notre pile? On utilisera une led rouge pour indiquer que la pile est vide, une led jaune pour indiquer qu’elle est à mi-charge, et une verte pour indiquer que la pile est au maximum.

Pour construire un testeur de charge avec des voyants lumineux, on ajoute trois diodes de couleurs, trois résistances de 220 Ohms et des cables, à notre schéma:

Schéma de connexion du testeur de charge et diodes avec Arduino

Au moment de configurer le code, nous allons utiliser trois pin digitaux de la carte comme sorties afin de allumer ou éteindre la diode correspondante. On configure les pins: 2 pour la diode verte, 3 pour la jaune, et 4 pour la rouge.

#define LedVerte 2
#define LedJaune 3
#define LedRouge 4

On doit aussi établir les seuils pour considérer que la pile est pleine de charge, à mi-charge ou presque vide. Pour cela on ajoute deux nouvelles variables:

float maximum = 1.5;
float micharge = 1.4;

Dans la fonction setup() on indique les pins des diodes et on les configure comme sorties:

pinMode(LedVerte, OUTPUT);
pinMode(LedJaune, OUTPUT);
pinMode(LedRouge, OUTPUT);

Finalement, dans la fonction loop() on insère les conditions nécessaires pour allumer chaque led.

if (volt >= maximum){
    digitalWrite(LedVerte, HIGH);
    delay(800);
    digitalWrite(LedVerte, LOW);
  }else if (volt < maximum && volt >= micharge){
    digitalWrite(LedJaune, HIGH);
    delay(800);
    digitalWrite(LedJaune, LOW);
  }else if (volt < micharge){
    digitalWrite(LedRouge, HIGH);
    delay(800);
    digitalWrite(LedRouge, LOW);
  }
  digitalWrite(LedVerte, LOW);
  digitalWrite(LedJaune, LOW);
  digitalWrite(LedRouge, LOW);

Nous avons ajouté trois conditions if(): si le voltage de la pile est majeur ou égal à 1.5V, la pile est pleine (diode verte), si la pile est entre 1.5 et 1.4V inclus, elle est à mi-charge (diode jaune), et si la pile est à moins de 1.4V la pile est presque vide (diode rouge).

Code complet:

#define LedVerte 2
#define LedJaune 3
#define LedRouge 4

float lecture;
float volt;

// Seuils
// > 1.5 pleine
// entre 1.5 y 1.4 mi-charge
// < 1.4 presque vide
float maximum = 1.5;
float micharge = 1.4;

void setup() {
  Serial.begin(9600);
  pinMode(A0,INPUT);
  pinMode(LedVerte, OUTPUT);
  pinMode(LedJaune, OUTPUT);
  pinMode(LedRouge, OUTPUT);
}

void loop() {
  lecture = analogRead(A0);
  volt = lecture /1023 * 5.0;
  Serial.println(volt);
  // Dépendant du voltage allumer la Led?
  if (volt >= maximum){
    digitalWrite(LedVerte, HIGH);
    delay(800);
    digitalWrite(LedVerte, LOW);
  }else if (volt < maximum && volt >= micharge){
    digitalWrite(LedJaune, HIGH);
    delay(800);
    digitalWrite(LedJaune, LOW);
  }else if (volt < micharge){
    digitalWrite(LedRouge, HIGH);
    delay(800);
    digitalWrite(LedRouge, LOW);
  }
  // on éteint tout
  digitalWrite(LedVerte, LOW);
  digitalWrite(LedJaune, LOW);
  digitalWrite(LedRouge, LOW);
}
Articles similaires
Laisser un commentaire