Percentuale scarica batteria

Ciao a tutti, ho cercato in giro ma non ci ho capito molto, sto facendo con un ina219 il controllo della batteria, mi servirebbe avere la percentuale che scende tipo conto alla rovescia tipo i cellulari, io avevo provato a farlo con step da 10 alla volta come vi allego, la batteria che controllo è una 2S perciò
8.4v cariaca
6.8v scarica
come si fa questo che cerco grazie

void batteryMonitor1() {
 
   volt = loadvoltage ; 
  
  if ( volt >= 8.2 )  {
    battPcrt = 100;
  }
  if ( volt < 8.2 && volt >=  8.0 ) {
    battPcrt = 90;
  }
  if ( volt < 8.0 && volt >=  7.8 ) {
    battPcrt = 80;
  }
  if ( volt < 7.8 && volt >=  7.6 ) {
    battPcrt = 70;
  }
  if ( volt < 7.6 && volt >=  7.4 ) {
    battPcrt = 60;
  }
  if ( volt < 7.4 && volt >=  7.2 ) {
    battPcrt = 20;
  }
  if ( volt < 7.2 && volt >=  7.0 ) {
    battPcrt = 10;
  }
  if ( volt < 7.0 ) {
    battPcrt = 0;
  }
}

Puoi provare usando map(), esempio (non testato!):

void batteryMonitor1() {
   uint8t value = loadvoltage * 10;
   battPcrt = map(value,84,68,100,0);
}

Ciao, Ale.

Degli else ci starebbero bene...

è più o meno quello che volevo, solo da migliorare, a 8,4v mi segna un 75% come faccio a portarlo a 100%, e poi scende di 1 in 1

Strano, prova stampare su serial monitor sia loadVoltage che value, puoi comunque anche provare a cambiare i valori nel map().

Non avevo capito che lo step di 10 in 10 fosse una condizione, pensavo che tu usassi lo step di 10 per minimizzare gli if. Se lo vuoi proprio così segui quello che ti ha postato Nid.

Ciao, Ale.

non mi sono spiegato, ce l'ho che scende di 10 in 10 io lo vorrei che scendesse di 1 in 1

Ecco, infatti io continuo a non capire. Posta il codice che usi e possibilmente i valori che ottieni con il variare della tensione.

Ciao, Ale.

Se fai così, puoi ottenere solo quei 10 valori...

L'alternativa semplice è usare una formula matematica:

battPrct=(loadVoltage-6.8)/.014 + .5;
if(battPrct>100) battPrct=100;

Che mi sembra faccia più o meno lo stesso lavoro della map consigliata in precedenza

O sbaglio?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.