Monitorare volt batteria

Ciao a tutti, chiedo gentilmente il vostro aiuto, volevo monitorare lo stato di un pacco batterie 2S (8.4v) con un esp32s2 mini, tramite pin analogico, ho creato un partitore con una resistenza da 30k e una 10k, a 8,4v mi ritrovo dopo il partitore 2,10v penso vada bene, come mi consigliate di fare il resto e su che pin lavorare, grazie del supporto

Tieni sempre presente che, normalmente, sugli ESP32, se usi il WiFi, hai delle limitazioni nell'uso degli ADC ...
... ADC1 può essere usato, mentre ADC2 no, per cui, se usi il WiFi, sono utilizzabili i pin GPIO 32, 34 fino al 39.

Inoltre, l'ADC degli ESP32 e ben noto per ... i problemi di precisione/calibrazione :roll_eyes:
Se cerchi ci sono alcune discussioni qui sulla sezione Italiana dove se ne parla.

Guglielmo

Ok, ho letto praticamente tutti i post che trovavo in giro, volevo vedere se si poteva ottenere una lettura decente senza aggiungere un INA219, per problemi di spazio, visto che ho anche un ADS1115 con i pin A2 e A3 liberi far fare la lettura a lui è meglio o peggio?

Mah ... normalmente un ADC esterno è migliore del ADC integrato in una MCU :wink:

Guglielmo

Per leggere lo stato di carica di una batteria in un apparecchio basterebbero anche 4 bit, eh! Non serve una grande precisione... Si tratta solo di sapere se è completamente carica (o quasi) o sta al 75% o al 50% o al 25% o meno. :slightly_smiling_face:

... dipende da quanto è "pignolo" chi fa la lettura :grin: :grin: :grin:

Guglielmo

Mica tanto... un errore solo del 10% sulla lettura secondo me può fare la differenza tra danneggiare oppure no una batteria. In ogni caso è obbligatoria una calibrazione usando il multimetro più preciso a disposizione, in modo da compensare le tolleranze delle resistenze e della tensione di riferimento.

E perciò cosa mi consigliate

Di fare la calibrazione: CAL = Vin / ADCout con Vin misurata nel modo più preciso possibile.

Magari con le resistenze già saldate in modo definitivo, affinché non subiscano altri shock che ne possano alterare il valore. Meglio ancora se a strato metallico 1% di tolleranza, che sono molto più stabili sul lungo periodo.

Dopo di che: Vmisurata = ADCout * CAL con errore inferiore allo 0.5%

Se cambi ESP la calibrazione va rifatta, perché anche il riferimento interno può essere diverso.

ritorno nei mie passi e rimetto Ina219, è più precisa la lettura, adesso però vorrei fare che mi desse una lettura media, visto la velocità dell'esp sennò si vedono troppe variazioni, come si può fare a dire all'ina definito quante letture

#define READS 20

dammi il valore x

non voglio aggiungere un delay ne ho già troppi
mi dite come si può fare
Grazie

la sto usando, funziona bene.

Ciao, Ale.

Usare una libreria per fare una media con un buffer circolare???
Comunque la media non serve: basta fare una lettura ogni tanto, anche perché se la tensione variasse in maniera significativa (cosa assolutamente improbabile, a meno che la corrente assorbita sia elevata e/o il periodo delle letture sia di alcune decine di minuti...) il valore medio non corrisponderebbe con quello corrente! Le medie non sono la soluzione a tutto...

... vero, ma sono una buona soluzione all'instabilità delle letture del ADC della MCU :joy:

Guglielmo

Più comodo che usare il pallottoliere, ad esempio...

Ogni tanto quanto? Comunque senza fare media basta anche aggiornare il dato a video solo se c'è una variazione degna di rilievo, altrimenti non aggiorni. Già così la visualizzazione dovrebbe essere più stabile, poi il problema comunque c'è sempre se si usano ADC con tanti bit, come l'INA219 o l'ADS115, gli ultimi bit ballonzolano sempre... Oddio, visto che non servono tutti si potrebbe anche provare a shiftarne via un paio, e vedere cosa succede.

Ciao, Ale.

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