Lettura livello batteria lipo

Salve, dovrei utilizzare una batteria lipo su un robot rover che sto costruendo,
dovrei trovare un modo per leggere il livello della batteria da arduino in modo che quando arrivi ad un livello troppo basso emetta un suono, qualcuno saprebbe dirmi come posso fare?

Puoi far leggere il livello di tensione dall'Arduino tramite un pin analogico.
Devi solo assicurarti che il livello massimo di tensione che arriva al pin sia 5V, altrimenti danneggi la scheda. Se così non fosse, usa un partitore per portare la tensione nell'intervallo 0-5V sostenibile dal pin.

Con analogRead(pin) fai poi la tua lettura e prendi le decisioni nel caso il valore scenda sotto ad una cera soglia.

Ciao Leo72 grazie per la risposta, devo utilizzare un batteria lipo da 2S (7,4V) quindi devo utilizzare per forza un partitore di tensione, quali resistenze devo utilizzare per creare un partitore di tensione adatto al mio scopo?

Ho trovato questo schema:

potrebbe andare bene?

I valori delle R sono troppo elevati, i pin analogici dell'Arduino lavorano bene con segnali d'ingresso con un'impedenza max di 10K.

Inoltre ecco un link:

Ti spiega cos'è e come si calcola il valore di Vout partendo da Vin e dai valori delle 2 R.
Prendi come Vin il valore max che può assumere la tensione della batteria a piena carica, mettiamo 8V? 9V? Non so, questo lo sai tu (avrai dei dati del produttore, oppure prendi un tester e misuri questo valore).
Mettiamo 9V.
Per avere 5V usa 8K2 per R1 e 10K per R2, ottieni quasi 5V in uscita.

Grazie mille ancora per la risposta e per il tuo aiuto,
le batterie lipo da 2S a carica piena arrivano ad una tensione di: 8,40V,
facendo una ricerca ho trovato sul forum inglese questo: How to test battery level with Arduino? - General Electronics - Arduino Forum
in pratica c'è proprio quello che devo fare io, solo che nello schema riparta in quella discussione ci sono resistenze da 100K e da 50K

L'uso di R dal valore elevato è dettato dal fatto che a resistenza di valore più elevato corrisponde un minor passaggio di corrente. Essendo un progetto a batterie, usare R di piccolo valore accorcia la vita delle batterie stesse, per poco che scorra è comunque uno scorrimento continuo, in quel partitore.

Allora diamo nel mezzo, e cioè usa R dal valore più elevato (100K e 82K) ma nel contempo tu a livello di codice fai una lettura composta da almeno 5/10 analogRead, tenendo solo l'ultimo valore. In questo modo dai modo al circuito interno di caricarsi correttamente e di avere una lettura attendibile.

Il problema del partitore con valori resistivi troppo alti é che l' entrata analogica per brevi momenti carica un condensatore interno con la tensione da misurare. In quel momento la sorgente deve dare la corrente neccessaria senza abbasare la tensione Parliamo di una corrente nella grandezza di un centinaio di µA. Questo si ottiene se si usa un partitore con resistenze sotto i 10kOhm oppure usando dei valori piú alti mettendo un condensatore in tra entrata analogica e massa. Questo si puó fare perché la tensione da misurare (batteria non cambia velocemente).
Ricordo anche che la tensione della batteria sarebbe da misurare senza carico perché il carico fa abbassare al tensione ai contatti della batteria a causa delle perdite di tensione sulla resistenza interna.
Ciao Uwe

Io userei R1 = 3k9 ed R2 = 5k1: in questo modo 8.4V corrispondono a 4.76V

Salve, ringrazio tutti per la risposta, scusate se rispondo solo adesso ma sono stato molto occupato con il lavoro,
comunque mi è venuto in mente che sul mio vecchio quadricottero avevo montato la scheda KK 2.0 che ha un pin per la lettura del livello della batteria, la lettura era davvero molto precisa sarebbe bello capire in che modo era collegato al pin analogico,
la scheda in questione è questa:Radio Control Planes, Drones, Cars, FPV, Quadcopters and more - Hobbyking
comunque adesso faccio qualche prova, anche se non sono ancora proprio convinto su quali resistenze devo utilizzare.

Facendo una ricerca con google della scheda sopra indicato ho trovato una foto ad alta risoluzione,
nella foto si vede benissimo il pin: B+, che sarebbe proprio l'entrata del polo positivo della batteria per effettuare il monitor, siccome non conosco i componenti smd mi sapete dire che resistenze sono quelle collegate a quel pin?

questa è la foto: (La freccia in foto non l'ho fatta io è un immagine trovata con google)

Se il pin e' il +B, quello e' collegato con in serie la resistenza da 22K (223) e verso massa la resistenza da 2K2 (222)

Il codice dei valori delle resistenze SMD lo leggi in questo modo: i primi due numeri sono il valore, il terzo numero e' il numero degli zeri da aggiungerci, quindi come in quel caso, 223= 22 piu 3 zeri, cioe' 22000, o 22K ... e cosi via ... ovviamente, il numero 220 non sono "220 ohm", ma 22 (22 piu nessuno zero) ... a volte per i valori bassi si usa sostituire una delle cifre con una "R", che puo fare anche da virgola, quindi 220 e 22R sono entrambe da 22 ohm, mentre 2R2 e' da 2,2 ohm, e R22 e' da 0,22 ohm, e cosi via ...

Etemenanki:
Se il pin e' il +B, quello e' collegato con in serie la resistenza da 22K (223) e verso massa la resistenza da 2K2 (222)

Corretto, però questo partitore ha un rapporto 11:1, decisamente alto per una batteria 2S, sui quadri la batteria va da due a sei celle il che giustifica l'utilizzo di un partitore elevato.
Il partitore ottimale per una 2S, max 8.4V (4.2V per cella) con batteria a piena carica, è composto da due R da 20k, tensione massima in ingresso 10V, impedenza d'uscita equivalente vista dal ADC 10k perché è data dal parallelo delle due R (teorema di Thevenin).

Io mi sono limitato a leggere i valori ... per Arduino e' un po troppo, il rapporto, ma bisogna vedere su quella schedina che tipo di lettura fa e che riferimento danno all'ADC ... e quello dai componenti non riesco a capirlo :wink:

Etemenanki:
Io mi sono limitato a leggere i valori ... per Arduino e' un po troppo, il rapporto,

E' nell'ottica che la batteria può essere da 25.2 V (6S) con Aref a 3.3V.

Con quei valori potrebbe essere ... ma ho appena aperto il link che ha postato (quello della Hobbyking, non avevo considerato prima che si riferiva alla stessa scheda), e quella schedina e' data per "4,8-6V" ... per quella tensione il partitore e' un po altino in effetti ...

Etemenanki:
e quella schedina e' data per "4,8-6V" ... per quella tensione il partitore e' un po altino in effetti ...

Quella è l'alimentazione della scheda, la misura è relativa alla batteria usata per i motori che può essere compresa tra 2S e 6S celle LiPo.

Salve a tutti, ieri ho fatto delle prove siccome non ho tutte le resistenze a disposizzione ho usato quelle che avevo, ho provato con delle resistenze da 10K e da 1,2K, il codice che ho usato è questo:

int vmeterl = 0;
int voltcl = 0;
int vmeterlraw = 0;

void setup()
{
  pinMode(vmeterl, INPUT);
Serial.begin(115200);
}

void loop()
{
vmeterlraw = analogRead(vmeterl);
voltcl = map(vmeterlraw, 0, 1023, 0, 5350);

Serial.print("voltage is: ");
Serial.print(voltcl / 102,DEC);
Serial.print(".");
Serial.println(voltcl % 102,DEC);

delay(250);
}

Il valore del map: 5350 l'ho dovuto trovare sperimentalmente collegando un tester alla batteria e cambiando continuamente il valore fino a che dal seriale non visualizzavo lo stesso voltaggio,
adesso sembra molto precisa la misurazione, ma mi chiedo è giusto quello che ho fatto?