Trouver la tension dans une batterie

Bonjour, j'ai un projet à réalisé où je dois voir le niveau de batterie en fonction de la tension de base de la batterie avec un bargraph. Par exemple si j'ai une batterie de 1,5V mon programme doit trouvé que c'est une pile de 1,5V et me donner le niveau de batterie.
J'utilise une carte Arduino UNO avec un shield et un bargraph (avec la bibliothèque Grove_LED_Bar-master) pour visualiser le niveau de batterie.
Mon Programme :

#include <Grove_LED_Bar.h>

Grove_LED_Bar bar(7, 6, 0, LED_BAR_10);
float batterie;
float valbatterie;
float Vmax = 1023;

void setup()
{
 Serial.begin(9600);
 bar.begin();
}

void loop()
{  
 valbatterie=analogRead(A0);
 Serial.print("Valeur lue : ");
 Serial.println(valbatterie);
 delay (500);
batterie = map(valbatterie, 0, Vmax, 1, 10);
batterie = floor(batterie);
for (int i = 1; i <= 10 ; i++) {

 if(i < batterie) {
   bar.setLed(i, 1);
 } else {
   bar.setLed(i, 0);
 }
}
}

Pour l'instant mon Vmax est de 1023 (5V) mais je voudrais que la variable ne soit pas une valeur définie mais que la variable dépende de la tension de base de la batterie. En gros que le programme puisse faire la différence entre une batterie de 5V et de 1,5V. Mais il y a problème qui peut se poser c'est par exemple une batterie de 5V qui s'est assez déchargée et que le programme ne puisse pas faire la différence une batterie déchargée et une plus petite batterie bien chargée.
Auriez-vous une solution à mon problème ou ce n'est pas faisable ? Merci d'avance.[code][code][code][code][/code][/code][/code][/code]

Tu commences par avoir faux sur deux points :

  1. tu n'as pas lu les messages épinglés. Pourtant les titres sont clairs : "Règle du forum francophone" et "Faire un nouveau message avec les balises"

  2. Ton sujet est typiquement celui de l'épreuve STI2D ou S-SI pour le bac.
    Et tu ne le dit pas.

Tu rectifie vite fait ton message sinon il atterrira dans le Bar ==> bak a poux belle où si tu es curieux tu retrouvera tous ceux qui ne sont pas fichus de respecter des règles dont le seul but est le respect mutuel.

Non, pas faisable.

Sans connaître le type de batterie (plomb, NU-CD, LITHIUM-ION, etc.) on ne peut ni connaître sa tension nominale ni savoir quelle est la capacité restante en fonction de la tension mesurée.
Chaque type de batterie a une courbe de décharge qui lui est propre.

Il y a trois erreurs dans ton code :

Il n'est pas entre balise.

analogRead() retourne un int, pas un float.

Tu as l'air de penser que la capacité restante d'une pile ou d'une batterie est linéairement dépendante de la tension.
Ce n'est pas le cas. C'est une courbe :

68tjs:
Tu commences par avoir faux sur deux points :

  1. tu n'as pas lu les messages épinglés. Pourtant les titres sont clairs : "Règle du forum francophone" et "Faire un nouveau message avec les balises"

  2. Ton sujet est typiquement celui de l'épreuve STI2D ou S-SI pour le bac.
    Et tu ne le dit pas.

Tu rectifie vite fait ton message sinon il atterrira dans le Bar ==> bak a poux belle où si tu es curieux tu retrouvera tous ceux qui ne sont pas fichus de respecter des règles dont le seul but est le respect mutuel.

Désolé, je ne savais pas faire des balises et maintenant c'est fait. Et non c'est juste un exercice que l'on nous a donner pour l'ISN.

hbachetti:
Non, pas faisable.

Sans connaître le type de batterie (plomb, NU-CD, LITHIUM-ION, etc.) on ne peut ni connaître sa tension nominale ni savoir quelle est la capacité restante en fonction de la tension mesurée.
Chaque type de batterie a une courbe de décharge qui lui est propre.

Il y a trois erreurs dans ton code :

Il n'est pas entre balise.

analogRead() retourne un int, pas un float.

Tu as l'air de penser que la capacité restante d'une pile ou d'une batterie est linéairement dépendante de la tension.
Ce n'est pas le cas. C'est une courbe :

Je te remercie pour ton aide et oui je me disais bien que c'était pas faisable.