Aiuto calco percentuale carica battria con arduino

Ciao, ho costruito un termometro portatile con arduino nano e sei sonde DS18B20, fin qui tutto funziona regolarmente, il problema è sorto quando ho deciso di alimentare il tutto con in batteria per renderlo portatile.
Mi spiego meglio, ho voluto fare in modo che arduino tenesse sotto controllo la batteria che lo alimenta, oltre ad indicarmi la tensione voglio che mi indichi anche la percentuale di carica della batteria.
Il problema è calcolare la percentuale esatta; alimentando arduino con una batteria di 9,6 volt l’ndicazione di batteria scarica (0 %) deve essere a 5,6 volt, mentre sono riuscito a calcolare il 0% a 0 volt e 100% a9,6 volt.
Qualcuno può aiutarmi?
Spero di essere stato chiaro, metto anche il programmino da me fatto.

Grazie

termometro_1.ino (4.7 KB)

La soluzione è molto semplice, basta che usi la funzione map() che provvede a convertire un range tra due valori in un nuovo range tra valori diversi. La map() lavora esclusivamente con numeri interi, range -32768 +32767, quindi puoi dargli ingressi direttamente il valore in count fornito dal ADC, numero compreso tra 0 e 1023, per le due soglie in tensione per ottenere in uscita il valore 0-100 corrispondente alla percentuale. Esempio pratico:

byte percentuale;
int myAdc;
#define V1 512;
#define V2 990;


percentuale = map(myAdc,V1,V2,0,100)"

myAdc contiene la lettura del ADC, ovviamente se devi leggere un tensione di quasi 10V devi utilizzare un partitore di tensione con rapporto 1/2 per trasformare i 10V di fondo scala in 5V, due resistenze da 10k vanno benissimo. V1 e V2 sono le soglie della tensione minima e massima, le devi verificare strumentalmente e devi verificare il relativo count ADC, questi puoi calcolarli. In pratica dentro la variabile percentuale ottieni il valore 0-100 che desideri in funzione della tensione in ingresso. Un appunto, solo le batterie LiPo hanno una curva di scarica quasi lineare, tutte le altre sono tutto meno che lineari, parlare di reale percentuale di carica residua non ha molto senso senza conoscere la relativa curva e applicarla alla conversione.

Inoltre, ma probabilmente lo sai, per calcolare la percentuale di carica di una batteria, serve sapere la sua "curva di scarica" specifica (ed ogni diverso tipo di batteria ne ha una differente) ... senza quella, calcoli solo la percentuale di tensione di uscita rispetto a quella massima, che NON e' la percentuale di carica residua ...

Fatto, grazie per l'aiuto. So che per calcolare la percentuale di carica effettiva di una batteria è più complesso di come l'ho descitto, ma ha serve un'indicazione approssimativa per rendermi conto che la batteria del termometro si sta scaricando. Il termometro lo uso quando collaudo i condizionatori che installo e mi serve solo come riferimento, quindi tutto il discorso serve per non trovarmi con lo strumento scarico e non poterlo usare.

Grazie ancora per l'aiuto e la rapidità con cui mi avete aiutato

Sauro

A quel punto non é piú semplice contare il tempo che Arduino é acceso e da quello calcolare la percentuale di carica.

esempio. Arduino funziona con la pila 20 ore. Dopo 18 ore sai che la batteria é quasi vuota (10%). metti nel vano batterie un pulsante per resettare il contatore.

Ciao Uwe

La map() lavora con i long, non con gli interi.

Vero, distrazione mia.