misurare la carica della batteria del robot?

avrei preferito continuare questo topic http://arduino.cc/forum/index.php/topic,34398.0.html visto che l'argmento è lo stesso, ma non potendo ho dovuto aprire un nuovo topic... non capisco perchè certi topic sono read only...
io vorrei che l'arduino che gestisce il mio robot sapesse il livello di carica della batteria, la batteria arriva al massimo a 12,6v e per me sotto i 9v è scarica e il robot dovrebbe fermarsi... io pensavo di mettere un diodo zener da 8,5 tra il + della batteria e l'ingresso analogico, anzi che fare, come dicono in quel topic, un partitore di tensione...
dovrebbe funzionare no? secondo voi potrei avere problemi nella lettura analogica?
grazie in anticipo :wink:

er_like_no_other:
avrei preferito continuare questo topic http://arduino.cc/forum/index.php/topic,34398.0.html visto che l'argmento è lo stesso, ma non potendo ho dovuto aprire un nuovo topic... capisco perchè certi topic sono read only...

Quello è read-only perché fa parte del vecchio forum, che può essere solo consultato.

io vorrei che l'arduino che gestisce il mio robot sapesse il livello di carica della batteria, la batteria arriva al massimo a 12,6v e per me sotto i 9v è scarica e il robot dovrebbe fermarsi... io pensavo di mettere un diodo zener da 8,5 tra il + della batteria e l'ingresso analogico, anzi che fare, come dicono in quel topic, un partitore di tensione...
dovrebbe funzionare no? secondo voi potrei avere problemi nella lettura analogica?
grazie in anticipo :wink:

Basta mettere un partitore di tensione con 2 resistenze, una da 2K2 ed una da 10K. Seguendo lo schema di quel thread R2 è da 5K6 e R1 da 10K. In questo modo il rapporto R2/(R1+R2) è 0,36 per cui con una tensione di 12,6V hai una tensione di 4,5V. Con una tensione di 9V hai una lettura di 3,23V. Calcola il partitore in modo da avere una lettura che non superi i 5V

PS:

si lo so del partitore di tensione... ma io volevo sapere se con un diodo zener da 8,5 risolvo il problema lo stesso: a 12v ottengo circa 12,6-8,5=4,1v mentre sotto i 9 mi dovrebbe dare sempre 0... dovrebbe funzionare no? il mio dubbio rigurarda soprattutto la corrente...
grazie :wink:

+1 per il partitore di tensione.
Con lo Zener lo puoi fare però devi limitare la corrente con una resistenza che vada dallo zener a massa a seconda del wattaggio del tuo zener.. Ad ogni modo a te basta la minor corrente che ti renda posssibile la misura.

Una cosa che non capisco è la batteria, se è una PB gel e scende sotto i 9V la stai uccidendo, stessa cosa se è una Li-Po 3S. Occhio :slight_smile:

ratto93:
Con lo Zener lo puoi fare però devi limitare la corrente con una resistenza che vada dallo zener a massa a seconda del wattaggio del tuo zener.. Ad ogni modo a te basta la minor corrente che ti renda posssibile la misura.

ma io lo zener lo collego tra i 12 e l'ingresso dell'arduino, non a massa... non so se passa corrente :cold_sweat:

ratto93:
Una cosa che non capisco è la batteria, se è una PB gel e scende sotto i 9V la stai uccidendo, stessa cosa se è una Li-Po 3S. Occhio :slight_smile:

è una Li-Po 3s, infatti sotto i 9 non dovrebbe mai scendere, l'ho preso come estremo proprio... volevo programmarlo perchè si fermasse prima :stuck_out_tongue:

Con lo zener apri un rubinetto dal quale, oltre la soglia di zener appunto, scorre corrente. La corrente la limiti con la resistenza di zavorra ma hai sempre un flusso maggiore che con il partitore. Inoltre se usi uno zener da 8V5 "infili" diretto nel pin dell'Arduino 8,5V minimi. Lo uccidi, quel pin :wink:

mmmm non sono d'accordo... lo schema sarebbe quello che ho allegato, non ci metto 8,2v sull'arduino...ci metto Vb-8,2 no?
(lo zener è da 8,2 scusate)

Immagine.png

Te devi usare lo zener con una resistenza non troppo grande ne troppo piccola (se la corrente che fluisce non è sufficente lui non funziona e quindi trovi un circuito interrotto oppure ti trovi la stessa tensione della batteria di la del catodo dello zener).
Come ti ha detto Leo se colleghi lo zener in quel modo oltre a non misurare nulla friggi il micro :slight_smile:
Se lo colleghi come ti dicevo, anodo al + della batteria ed una resistenza da 10K tra catodo e massa, tra la resistenza ed il diodo trovi tensione solo quando la batteria è a + di 8,4V

mmmmm comincio a capirci poco :sweat_smile:
faccio qualche prova col tester...

Occhio che uno zener senza resistenza di limitazione della corrente collegato come hai disegnato lo friggi in pochi secondi.

leggi qui:
http://chiamailtecnico.altervista.org/tensioni.htm
una volta risolto il problema del condizionamento del segnale in entrata ricorda di mettere un minimo di debounce sulla lettura, inquanto durante l'uso, alcuni picchi di assorbimento di corrente potrebbero fare scendere le letture sotto il valore di soglia per qualche istante (brevissimo) ma magari sufficiente a triggerare lo spegnimento automatico per salvare la batteria :wink:

boh ho provato con un alimentatore atx e con un tester e sembra funzionare e il diodo non si scalda minimamente :cold_sweat: con 11,66v in ingresso ottengo 3,10v di uscita, ovvero c'è una caduta di 8,56v... l'ingresso analogico dell'arduino posso paragonarlo all'ingresso del tester, no?

leo72:
Occhio che uno zener senza resistenza di limitazione della corrente collegato come hai disegnato lo friggi in pochi secondi.

ma io non capisco, lo corrente dovrebbe scorrere attraverso il tester (o arduino) che se non sbaglio ha un alta impedenza in ingresso, non basta questa impedenza per limitare la corrente? anzi secondo me, per questo la corrente che è piccolissima... poi boh...
grazie per l'aiuto :wink: scusate se non vi ascolto proprio, ma è che non capisco perchè non dovrebbe funzionare :~

Il multimetro deve avere la minima resistenza in ingresso in lettura corrente, altrimenti altera il valore letto. Diversamente, in lettura tensione, deve avere la massima impedenza per evitare di far scorrere troppa corrente internamente.
Sulla caduta del diodo, si è come dici tu: pensavo al diodo senza R e non riflettevo sul diodo che entra sul pin.

ok, immaginavo che non aveste capito cosa intendevo fare :slight_smile:
comunque il problema che mi ponevo io era che la corrente fosse troppo poca per caricare l'ADC... ci sono problemi a riguardo?
grazie ancora :wink:

Scindiamo i problemi. Se fai una misura con l'ADC, hai bisogno di una impedenza in ingresso sui 10K, valori maggiori necessitano di più letture per avere una media che dia un valore coerente.

Tornando allo zener, non si può usare senza R di limitazione: se superi la soglia di zener, diventa un fiume in piena e si rovina rapidamente.

Ritornando al partitore :sweat_smile: è il sistema più sicuro perché puoi decidere il rapporto e misurare così tensioni anche molto superiori al valore massimo tollerato dall'Arduino senza far passare tantissima corrente.

leo72:
Tornando allo zener, non si può usare senza R di limitazione: se superi la soglia di zener, diventa un fiume in piena e si rovina rapidamente.

Ritornando al partitore :sweat_smile: è il sistema più sicuro perché puoi decidere il rapporto e misurare così tensioni anche molto superiori al valore massimo tollerato dall'Arduino senza far passare tantissima corrente.

+1 su tutta la linea :slight_smile:

leo72:
Tornando allo zener, non si può usare senza R di limitazione: se superi la soglia di zener, diventa un fiume in piena e si rovina rapidamente.

cioè? :~

leo72:
Ritornando al partitore :sweat_smile: è il sistema più sicuro perché puoi decidere il rapporto e misurare così tensioni anche molto superiori al valore massimo tollerato dall'Arduino senza far passare tantissima corrente.

si vero ma io volevo provare a fare una cosa un po' diversa :slight_smile: (like no other :stuck_out_tongue: )

una cosa ho notato del diodo zener che non mi piace, se lo tocco con la mano cambia il valore dell'uscita, perchè succede questo? devo preoccuparmi di ciò quando farò il pcb?

Perchè la R interna di Arduino è sufficientemente alta da essere perturbata dal contatto della mano (e mi fermo quì...) questo si evita come ho scritto altrove mantenendo bassa la R di ingresso del Pin, prova a collegare una R da 1K (puoi scendere fino a 470 Ohm) fra pin e massa /GND e vedrai che il problema sparisce. I tuoi test comunque sono validi il problema reale e rappresentato da un eventuale ed imprevisto corto del diodo Zener in questo caso l'intera tensione (es. 12V) verrà applicata al pin di Arduino.
Se scegli il Diodo Zener fai così collega Katodo del diodo Zener al positivo della batteria poi collega l'Anodo a massa per tramite di una R da 1K 1/2Watt poi dal punto centrale di collegamento (Anodo con R 1K) colega una R da 330 Ohm di protezione che riporta la V al Pin di Arduino in questo modo la I max che può fluire nel pin di Arduino (in caso di guasto) ammonta a 12/330 a 36mA.
Per i "teopratici" preciso che si verifica in questo caso un piccolo errore di lettura dovuto all'effetto partizione (330 / R interna di Arduino) minimale ma innegabile, si tratta di un modesto errore, che puoi compensare nel codice previo utilizzo di multimetro di riferimento.
Buoni esperimenti.

36 mA sono troppi per i GPIO presenti sui pin dell'Arduino, che è bene gestiscano non più di 20 mA (pag. 318, nota 4)

@ER:
usa un partitore, hai moooolti meno problemi.

Giusto perchè l'ho trovato inciampandogli addosso in rete :wink:
Imgur