Mesure de charge d'une batterie

Bonjour à tous !

BUT du projet
A l'aide d'un code, mesurer la charge d'une batterie qui alimente mon arduino via une carte LiPo.

MATERIEL
Accu Li-Ion 3,7 V 1050 mAh PR474446
Carte LiPo Rider Pro 106990008
Carte Arduino

Pourriez-vous m'indiquer quel code écrire et quel branchement réaliser pour que mon arduino me dise que ma batterie est chargée à moins de 25%.
Je n'ai pas besoin d'une grande précision, juste que l'arduino puisse me prévenir quand je dois commencer à recharger ma batterie.

J'ai lu pas mal de topics sur le sujet, mais je m'y perds un peu.

Juste pour compléter mon post précédent :

D'après ce que j'ai lu, il faut réussir à mesurer la tension délivrée par la batterie pour déterminer ensuite son niveau de charge.
Mais je n'ai trouvé aucun schéma clair ni aucun code faisant moins de 30lignes...

Il doit bien y avoir une solution simple, non ?

Tout est là Les entrées analogiques de l’Arduino - Arduino : premiers pas en informatique embarquée • Tutoriels • Zeste de Savoir

Moins de 30 lignes, il ne faut pas rêver.

Le schéma ici : un-thermometre-hygrometre-mysensors-sur.html

Le code :

#define VREF                  1.099

struct batteryCapacity
{
  float voltage;
  int capacity;
};

const batteryCapacity remainingCapacity[] = {
  4.20,   100,
  4.10,   96,
  4.00,   92,
  3.96,   89,
  3.92,   85,
  3.89,   81,
  3.86,   77,
  3.83,   73,
  3.80,   69,
  3.77,   65,
  3.75,   62,
  3.72,   58,
  3.70,   55,
  3.66,   51,
  3.62,   47,
  3.58,   43,
  3.55,   40,
  3.51,   35,
  3.48,   32,
  3.44,   26,
  3.40,   24,
  3.37,   20,
  3.35,   17,
  3.27,   13,
  3.20,   9,
  3.1,    6,
  3.00,   3,
};

const int ncell = sizeof(remainingCapacity) / sizeof(struct batteryCapacity);

unsigned int getBatteryCapacity(void)
{
//  float voltage = (1023 * VREF) / analogReadReference();
  analogReference(INTERNAL);
  analogRead(0);
  delay(1);
  unsigned int adc = analogRead(0);
#ifdef MY_DEBUG
  Serial.print("ADC: ");
  Serial.println(adc);
#endif
  float voltage = adc * VREF / 1023 / 0.248;
#ifdef MY_DEBUG
  Serial.print("VCC: ");
  Serial.println(voltage, 3);
#endif
  for (int i = 0 ; i < ncell ; i++){
#ifdef MY_DEBUG
    Serial.print(i);
    Serial.print(" : ");
    Serial.print(remainingCapacity[i].voltage);
    Serial.print(" | ");
    Serial.println(remainingCapacity[i].capacity);
#endif
    if (voltage > remainingCapacity[i].voltage) {
      return remainingCapacity[i].capacity;
    }
  }
  return 0;
}

Et un devoir scolaire s'annonce si on veut de l'aide.

voir le message épinglé "Règle du forum francophone".

Il est dommage d'aller sur un forum et attendre le résultat d'un devoir.
Comme certains le diront, on peut t'aider dans la réflexion mais à toi de faire le reste.

Comme tu dis, il faut mesurer la tension au borne de ta batterie car celle-ci varie en fonction de la charge (une batterie 18650 va varier entre 3,2V et 4,2V). Les cartes de type ESP8266 ou 32 sont capable de mesurer la tension au borne des entrées analogiques.
Ensuite reste à toi de restituer le résultat : (Toujours dans mon exemple : 4,2V --> 100% et 3,2 --> 0%

A toi de jouer et n'hésites pas à partager.

Je dirais plutôt qu'à 3.2V il reste pas loin de 10%, et à 3V il en reste encore un peu.
En sachant que la limite de décharge recommandée est de 3V.

Mais tout dépend du courant de décharge. Mesurer la tension sans tenir compte du courant n'a aucun sens.

Ces courbes dépendent aussi du fabricant.

hbachetti:
Ces courbes dépendent aussi du fabriquant.

Et de la température.

68tjs:
Et un devoir scolaire s'annonce si on veut de l'aide.

voir le message épinglé "Règle du forum francophone".

A 38ans, je ne vais plus à l'école.^^
Sérieusement, il y a une matière robotique, maintenant ?

hbachetti:
Moins de 30 lignes, il ne faut pas rêver.

Le schéma ici : un-thermometre-hygrometre-mysensors-sur.html

J'avais déjà vu ce sujet, mais je n'avais pas bien compris le rapport entre la charge de la batterie et le thermomètre.
Je vais devoir me pencher dessus plus sérieusement du coup.

Est-ce que le schéma ressemblerait à ça ?

Si OUTPUT est le connecteur de sortie 5V de la Lipo Rider, je ne vois pas en quoi mesurer cette tension sera d'une quelconque utilité.
D'autre part le câblage des résistance est faux.
Le schéma fourni dans le lien en #3 me paraît clair pourtant.

Tu as raison pour le câblage des résistances.

J'ai refait le schéma :

Par rapport à ton commentaire sur le LiPo, le module TP4056 est bien un chargeur de batterie, non ?
Son Out+ et Out- doivent bien correspondre au connecteur de sortie du LiPo, non ?

TP4056? Je ne crois pas qu'il y en ait un dans la LiPo Rider.
Quel rapport?

Son Out+ et Out- doivent bien correspondre au connecteur de sortie du LiPo, non ?

NON, c'est la ou tu connecte la batterie...

(deleted)

Les bornes OUT+ et OUT- du TP4056 représentent la sortie. La tension sur cette sortie est la même que la celle de la batterie, étant donné que le TP4056 est un simple chargeur.

La sortie OUT de la Lipo Rider est une sortie 5V, produite par un régulateur step-up. Cela fait donc une grosse différence par rapport à un TP4056.
Que la tension de la batterie soit de 3V ou 4.2V, la sortie OUT produira toujours 5V.

En conséquence il faut mesurer la tension de la batterie et non pas la tension sur les bornes OUT.

(deleted)

Un pont diviseur en H est utilisé

Tu devrais corriger. Ce n'est pas un pont en H. C'est un simple pont diviseur.

Merci à tous !

Je vais m'inspirer de tout ça et vous faire un retour.