Salve a tutti,
sono ancora qui per cercare di capire dove sbaglio.
Vorrei misurare la tensione di alimentazione e della batteria.
Sto facendo delle prove sulla tensione rilevata con il tester, meglio con due tester differenti così da avere un riferimento più preciso.
Però rilevo dei valori non corrispondenti rispetto alla misura che effettuo sui seguenti PIN: VIN e 3V3.
Le tensioni rilevate sono rispettivamente: VIN => 4.20V e 3V3 => 3.39V mentre dal serial monitor leggo: 5.00V e 2.48V.
Dove sbaglio ?
// Voltage test
float PVolt; // Power Volt 3V3
float BVolt; // Battery Volt 3.7V (min. or more to 5V)
void setup() {
Serial.begin(115200);
delay(2000);
analogReference(INTERNAL1V024); // LGT8FX8P
analogReadResolution(12);
Serial.print("Start");
Serial.println();
}
void loop() {
uint32_t v;
// Probe on VIN
// PVolt POWER Volt measure
v = analogRead(A0) * 5 / 4095;
PVolt = (v * 5) / 4;
// Probe on 3V3
// BVolt BATTERY Volt measure
v = analogRead(A1) * 3.3 / 4095;
BVolt = (v * 3.3) / 4;
Serial.print("Battery Volt = ");
Serial.print(BVolt);
Serial.println(" V");
Serial.print("Power Volt = ");
Serial.print(PVolt);
Serial.println(" V");
Serial.println("");
delay(3000);
}
comunque prima di eseguire la prima misura su un piedino analogico devi eseguire una misura a vuoto
poi, perché dividi per 4095 (semmai 4096, ma che scheda stai usando?)
Ciao Ducembarr,
Sto usando un LGT8F32 che ha un ADC a 12bit e sto prelevando dal piedino 3V3 i 3.3V e leggo con il multimetro 2.48V mentre dal VIN leggo 4.20V due valori prelevati sia a vuoto che non, non cambia i valori letti...
Ciao Salvorhardin,
agli ingressi non ho nulla un semplice cavetto che collega 3V3 al pin A0 ed un cavetto VIN al pin A1, nessun partitore resistivo dal momento che sono tutte tensioni al di sotto dei 5V, ho pensato che non fosse necessario.
Correggo 4095 con 4096 scusate una svista...
Corretta anche la formula:
// Probe on VIN
// PVolt POWER Volt measure
PVolt = analogRead(A0)/4096*5.0/1024;
// Probe on 3V3
// BVolt BATTERY Volt measure
BVolt = analogRead(A1)/4096*3.3/1024;
Ma in questo modo il risultato è in entrambi 0.00 V
1024???... 1 VIRGOLA 024!
Però, avendo giustamente impostato la tensione di riferimento a 1,024V, quella è la tensione di fondo scala, perciò devi usare un partitore per ogni ingresso dell'ADC! Per i 5V puoi fare un partitore con 4k7 e 1k applicando un fattore correttivo (v. post #4) pari a 5,7, mentre per i 3V3 puoi farlo con 3k3 e 1k applicando un fattore correttivo pari a 4,3, oppure entrambi con 4k7 e 1k con fattore 5,7:
PVolt = analogRead(A0)/4096*5.0/1.024*5.7; // 4k7 e 1k.
BVolt = analogRead(A1)/4096*3.3/1.024*4.3; // 3k3 e 1k.
// oppure:
BVolt = analogRead(A1)/4096*3.3/1.024*5.7; // 4k7 e 1k.
CORREZIONE (dopo il post #29):
PVolt = analogRead(A0)/4096.0*5/1.024*5.7; // 4k7 e 1k.
BVolt = analogRead(A1)/4096.0*3.3/1.024*4.3; // 3k3 e 1k.
// oppure:
BVolt = analogRead(A1)/4096.0*3.3/1.024*5.7; // 4k7 e 1k.
// Probe on VIN
// PVolt POWER Volt measure
PVolt = analogRead(A0)/4096*5.0/1.024*5.7;
// Probe on 3V3
// BVolt BATTERY Volt measure
BVolt = analogRead(A1)/4096*3.3/1.024*5.7;
Valori "letti da Arduino" per VIN => 0.00 V per 3V3 => 0.00 V
Lettura del multimetro per VIN => 3.34 V per 3V3 => 2.80 V, con o senza il collegamenti ai pin A0 e A1.
Ha, le resistenze (quella da 1K con tolleranza 5% le ho scelte con esattamente lo stesso valore di 0,99K
Mentre le altre da 4K7 sono all'1% di tolleranza ed hanno comunque lo stesso valore
Io, Massimo Salvorhardin e mio fratello Fabio Ducembarr abitiamo assieme e abbiamo una sola connessione internet, e anche hardware in comune ( non siamo siamesi, ma condividiamo laboratorio e un paio di PC, alle volte ci si collega senza controllare che l'altro abbia fatto log-out
Tira fuori la calcolatrice e "calcola" quel partitore
Non ti viene il sospetto che dopo tre volte che te lo diciamo "forse" ma solo forse, abniamo notato qualcosa e non vorremmo essere costretti a dirti in "diretta mondiale" i tuoi errori?
Ha, ok capito scusate non sapevo in ogni caso la tensione calcolata è di 4.13V rispetto ai 5V per il pin A0 mentre è di 2.72V per il pin A1 rispetto ai 3V3.