Go Down

Topic: Errore misurazione grandezza analogica da batteria (Read 374 times) previous topic - next topic

mattiarainieri

Che step down é?
Che step down è?...
Ho messo in allegato l'immagine, anche se bypassandolo il problema persiste. Pensavo che il problema potesse essere l'alimentazione tramite i pin di VIN E GND.

docdoc

Premesso che le misurazioni mi servono solo quando la batteria è sopra i 12v (da 12 a 13.8), il display mi mostra sempre il valore massimo 1023.
Con QUEL partitore se Vin che ti interessa va da 12 a 13.8V dovresti avere sul pin una tensione che va da 4.29 a 4.93, non un gran intervallo ma non dovrebbe darti fisso 1023 ma tra 870 e 1008 se non ho fatto male i conti.

Quote
Ora ho provato anche ad alimentarlo bypassando lo step-down e alimentarlo da un ruspberry, il problema persiste ma mi è sorto un forte dubbio: potrebbe che il problema sia l'alimentazione che avvenga tramite il i pin di VIN E GND che bypassano il primo stadio?
Non ho capito come hai alimentato Arduino con un Raspberry (?), comunque sia per il discorso alimentazione ricordiamo che Arduino lo si può alimentare in 4 modi:

1) tramite porta USB
2) tramite connettore di alimentazione
3) tramite pin Vin
4) tramite pin 5V

Ora, con 1) hai detto che funziona bene, mentre con la 3) ti dà sempre 1023 (intanto con la 2 hai provato a vedere cosa succede?).

Per cui ora la mia perplessità: il pin Vin passa per il regolatore interno ed in questo è analogo all'ingresso col connettore di alimentazione, per cui vanno portati tra 6.5 e 12 Volt. Se tu ce ne metti solo 5, abbassi tutta la tensione di Arduino, compreso Vref, per cui credo che sia possibile che 4.29 V siano superiori a Vref e quindi A0 ti dà sempre 1023!

Per cui se tu hai a valle dello step down una tensione di 5Volt la dovresti collegare ai 5V di Arduino. Lì puoi mandare una tensione che deve assolutamente stare tra 4.5 e 5.5 V, e deve essere stabilizzata. Inoltre non hai nessuna protezione quindi occhio a non invertire le polarità che friggi Arduino.

Secondo me se fai così (con le dovute accortezze, come detto sopra) dovresti leggere valori corretti, tra 870 e 1008 circa.

PS: Ma a te interessa sapere quando supera una certa soglia (o scende al di sotto) oppure devi per forza misurare il valore? Perché altrimenti se ti basta la soglia credo che sarebbe più affidabile un comparatore fatto con un operazionale (es. VM358) nel quale regoli la soglia via trimmer, e l'uscita del comparatore la mandi ad un normale pin digitale...
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

gpb01

... Perché altrimenti se ti basta la soglia credo che sarebbe più affidabile un comparatore fatto con un operazionale (es. VM358) nel quale regoli la soglia via trimmer, e l'uscita del comparatore la mandi ad un normale pin digitale...
emmm ... Arduino ha un comparatore analogico integrato in grado anche di alzare un interrupt al superamento del valore di soglia ;)

Datasheet pagina 243.

Guglielmo
Search is Your friend ... or I am Your enemy !

docdoc

emmm ... Arduino ha un comparatore analogico integrato in grado anche di alzare un interrupt al superamento del valore di soglia ;)
Grazie, buono a sapersi, non lo sapevo ed è sempre utile imparare qualcosa di nuovo! :)

Comunque sia in questo caso se ha i livelli di riferimento sballati (o almeno questo è il dubbio) non risolve molto, io mi affiderei più al buon vecchio hardware che con un operazionale mi dà direttamente l'esito della comparazione su un pin digitale ;)
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

gpb01

Comunque sia in questo caso se ha i livelli di riferimento sballati (o almeno questo è il dubbio) non risolve molto, io mi affiderei più al buon vecchio hardware che con un operazionale mi dà direttamente l'esito della comparazione su un pin digitale ;)
Non cambia asolutamente nulla ... se hai un riferimento sbagliato, che l'operazionale lo metti tu fuori o che sia integrato nella MCU ... comunque avrai valori sballati !



Guglielmo
Search is Your friend ... or I am Your enemy !

docdoc

Mah scusami Guglielmo, ma a volte resto perplesso con alcune tue risposte... Come fai a dire che "non cambia assolutamente nulla" ossia che lui abbia un riferimento sbagliato anche "esternamente"?

Dato che non prevede di misurare tensioni basse della batteria (ha detto tra 12 e 13.8) gli basta comparare la lettura dalla batteria a 12 V tramite un trimmer di regolazione della soglia (quindi come un partitore con resistenze variabili) con i 5V di uscita dello stepdown che si suppone sia stabile e che farebbe da riferimento.
Non vedo come questa configurazione possa dare problemi, tantomeno si possa bollare come soluzione non valida...

E comunque, come ho detto, il suo problema è secondo me l'aver usato Vin, mentre con il pin 5V risolve e magari mi aspettavo una tua conferma su questa ipotesi.
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

gpb01

...  Non vedo come questa configurazione possa dare problemi, tantomeno si possa bollare come soluzione non valida...
:o :o :o ... docdoc, ho mai da qualche parte affermato questo ? ? ?  Dove lo hai letto ? ? ?  Leggi attentamente ciò che ho scritto, perché credo tu abbia frainteso ... ::)

Io ho solo segnalato che, senza andare ad aggiungere hw esterno, tutto quello che vuoi aggiungere c'è già internamente (operazionale, ingresso V+, ingresso V-, generatore di interrupt, ecc.) ... poi, se uno vuole mettere dei pezzi in più fuori, per me va benissimo, solo che si sappia che sono ridondanti e che la stessa soluzione (... quindi come potrei dire che non è valida) si può fare con hw ch già c'è ... tutto quì :D

Guglielmo

P.S.: ... tutto questo non toglie che, indipendentemente da qualsiasi soluzione si volglia trovare, se uno usa un riferimento non stabile, le misure non saranno mai precise ... il che, di nuovo, NON significa che la tua soluzione non sia valida, significa solo portare l'attenzione su cosa si usa come tensione di riferimento :D
Search is Your friend ... or I am Your enemy !

docdoc

Io ho solo segnalato che, senza andare ad aggiungere hw esterno, tutto quello che vuoi aggiungere c'è già internamente (operazionale, ingresso V+, ingresso V-, generatore di interrupt, ecc.) ...
Si, ok, l'ho detto pure io, se invece di Vin usa il pin 5V risolve senza altri problemi. Ma forse non sono stato chiaro o anche tu hai travisato, il discorso dell'operazionale era solo "accessorio", sia perché non so (tuttora) se gli serva solo rilevare una soglia o se debba invece misurare effettivamente il valore, sia perché presuppone che il riferimento sia stabile. E come detto, se è a valle dello step down possiamo assumere che lo sia, per cui non è vero che "non cambia assolutamente nulla", perché non ho mai detto che avrebbe usato anche con l'operazionale un "riferimento sbagliato" (che nel caso in questione tra l'altro è dovuto al fatto che sotto-alimenta Arduino, non che i 5V non fossero stabili).

Chiarito ora meglio l'equivoco? ;)
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

gpb01

>docdoc ... hai visto che il comparatore integrato ha gli ingressi V+ e V-?   Quindi NON necessariamente usa i 5V di arduino, ma, come con un qualsiasi operazionale esterno, decidi TU cosa usa come riferimento e quindi decidi tu quanto è stabile ;)

Tutto il resto a me non interessa, ribadisco che io volevo solo segnalare che, ove il comparatore andasse bene, ci si può risparmiare di aggiungere hardware e sfruttare quello che già c'è.  Tutto qui :D

Guglielmo
Search is Your friend ... or I am Your enemy !

Maurotec

Il 328 ha tante cose di cui non si parla mai, una di queste è appunto AC (Analog Comparator).
Altra cosa è il clock prescaler sul main clock attivabile a runtime.

GPIOR0 ÷ GPIOR2, tre registri 24-bit che nessuno usa, ci metti tre variabili globali. In effetti il datasheet non fornisce alcuna informazione su come (per cosa) usare questi registri.

Comunque rileggendo vedo che gli serve un ingresso ADC e al momento non gli funziona quando alimentato dallo step-down perché forse non fornisce abbastanza tensione all'ingresso dello step-down. Prima deve risolvere questo problema, poi se vuole usare AC interno o esterno si vedrà.

Ciao.

gpb01

... GPIOR0 ÷ GPIOR2, tre registri 24-bit che nessuno usa, ci metti tre variabili globali. In effetti il datasheet non fornisce alcuna informazione su come (per cosa) usare questi registri.
C'è una interessante dicussione in merito sul forum in lingua inglese, incluso esempio d'uso, QUI ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

Altra cosa è il clock prescaler sul main clock attivabile a runtime.
... di quello si è parlato varie volte anche qui nella sezione Italiana ... un nostro utente ha anche scritto una libreria per utilizzarlo facilmente ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

Go Up