Buon giorno,
vorrei leggere la tensione di 2 batterie Lipo in serie ( 8,4V a piena carica ) con carichi squilibrati ( di poco ma squilibrati per cui mi serve lettura "pulita" di ciascuna batteria).
PROBLEMA 1:
Potendo Arduino leggere solo tensioni fino a 5V ho pensato di fare come segue :
- collego una delle 2 batterie con riferimento del negativo generale dei 8,4V al PIN A0 di Arduino ( in modo che così mi legga la tensione pulita di una delle 2 batterie)
- per l'altra batteria utilizzo un partitore di tensione composto da 2 resistenze in serie da 10k l'una e prendendo sempre come riferimento il negativo dei 8,4V prenderei il nodo centrale delle 2 resistenze e lo metterei al PIN A1 al quale fare fare l'operazione
A1 = (valore letto in A1 * 2 ) - A0
Il mio dubbio è solo in che modo far leggere i valori ad Arduino.
Cioè Arduino automaticamente basa i calcoli dei PIN Analogici sui 5V?
Perchè se fosse così quando sono cariche dovrebbe leggere il valore 859 ( dato dalla proporzione 1023 : 5V = X : 4,2V ) mentre al valore limite (che imposterei io) di 3,4V leggerebbe il valore 695 ( dato dalla proporzione 1023 : 5V = X : 3,4V )?
Se fosse così, come si vede dal codice, la mia finalità sarebbe che una volta letto il valore di 695 questo mi faccia accendere una luce).
Il mio codice così com'è sarebbe corretto? I valori di lettura sono corretti?
int LED = 9; // pin 9 come uscita LED
int tensione_batteria_1; // dichiaro variabile controllo tensione della batteria con carichi
int tensione_batteria_2; // dichiaro variabile controllo tensione della batteria isolata
void setup()
{
pinMode(9, OUTPUT); // Pin 9 output
}
void loop() {
delay(100); //aspetto 0.1 secondi
tensione_batteria_2 = analogRead(0) // leggo valore analogico alla porta A0 e lo metto dentro "tensione_batteria_2"
tensione_batteria_1 = (analogRead(1) * 2) - analogRead(0) // leggo valore analogico alla porta A1 e lo metto dentro "tensione_batteria_1" ; il valore letto in A1 deve essere moltiplicato per 2 e gli si deve sottrarre il valore letto in A0
if (tensione_batteria_2 < 695) // se tensione batteria isolata è MINORE di 3.4V allora riproduci suono da DFPlayer Mini
{ digitalWrite(LED, HIGH);
}
if (tensione_batteria_1 < 695) // se tensione batteria con carico è MINORE di 3.4V allora riproduci suono da DFPlayer Mini.
{ digitalWrite(LED, HIGH);
}
delay(500); //aspetto 0.5 sec
}
PROBLEMA 2 :
Se la mia analisi di sopra è corretta per la lettura dei valori non sarebbe così precisa, in quanto dovrei fare riferimento a 5V e quindi come analisi avrei solamente uno scarto di 164 unità ( 859-695) di lettura.
Esiste un altro modo per far sì che il range di lettura delle tensioni sia più ristretto in modo da ottenrere un valore analogico con un range tra batteria carica e batteria scarica maggiore ( magari di 300-400 unità in modo da avere un valore molto più preciso in quanto composto da molti più "scatti" di unità ) ?
Grazie in anticipo a tutti.

