Battery level

Salve ragazzi, nonostante il tema sia stato già trattato non riesco a trovare una risposta concreta al mio problema.
In poche parole ho bisogno di monitorare il livello di una batteria di 9V (che alimenta la mia board Arduino UNO). Qual'è la soluzione migliore per fare questo?

Segui questo howto:

http://forums.trossenrobotics.com/tutorials/how-to-diy-128/cheap-battery-monitor-using-resistive-voltage-divider-3264/

e' perfetto

Federico:
Segui questo howto:

Trossen Robotics Community Database Error

e' perfetto

Io ho bisogno di monitorare la batteria stessa che alimenta arduino :slight_smile:

E' la stessa cosa, devi sempre applicare la tensione di quella batteria ad un partitore resistivo e poi misurare il valore col converitore A/D di Arduino stesso; non ho letto quel tutorial ma ad occhio dovrebbe essere qualcosa del genere.

Penso che non cambi niente...

flameman:
la cosa migliore e’ un approccio differenziale fra

  • un generatore di riferimento in tensione
  • e la tensione sul carico

Eh? :cold_sweat:

Utilizzi il partitore come qui: Google Sites: Sign-in con le resistenze r7 e r6 magari prendi quelle con tolleranza dell'1% in modo da avere un partitore, e quindi una lettura, più precisa. Se prendi due resistenze da 1M allora la tensione andrà da 0V a 4,5V quindi coprirà quasi tutto il range dell'ADC. A questo poi associ una curva di scarica della batteria come qui : http://docs-europe.electrocomponents.com/webdocs/0d49/0900766b80d491d3.pdf e vedi quanta carica rimane

leo72:

flameman:
la cosa migliore e' un approccio differenziale fra

  • un generatore di riferimento in tensione
  • e la tensione sul carico

Eh? :cold_sweat:

Più o meno ho capito che devi avere una tensione "campione" di riferimento e la confronti costantemente con quella che alimenta Arduino; se è così a mio avviso ci si complica inutilmente la vita; si torna al disorso dell'lm35; questo sistema dovrebbe garantire una precisione delle letture superando l'eventuale "interferenza" provocata dallo stesso Arduino se dovesse fornire letture diverse ma mano che diminuisce per scarica la tensione della batteria.
Di fatto nessuno dovrebbe far scendere un'alimentazione esterna (quella sul jack japan per intenderci) sotto i 7V, pena la mancata stabilizzazione da parte dell'IC preposto a questo lavoro; quindi un semplice partitore per rapportare la massima tensione della batteria al fondo scala dell'ADC, cioè 5V, una lettura proporzionale con tanto di trasmissione seriale, ed un sistema di segnalazione qualsiasi al raggiungimento del minimum level, magari con un preallarme sfasato di 0,5V.
Cioè il discorso è SEMPRE lo stesso, la scelta è divertirsi risolvendo un problema in modo semplice e possibilmente economico o realizzare le "grandi" cose, intese come strumenti precisi, perfetti, spendendo, in tempo e/o denaro, il giusto equivalente. La scelta come sempre deve essere dettata dal risultato che si vuole ottenere.
Se voglio sapere chi sta bussando a casa mia posso mettere il classic spioncino "grandangolo" o uno spettacolare sistema telemetrico, collegato ai serve dell'Interpol (previa opportuna autorizzazione), che costringa il malcapitato visitatore a fornire impronte digitali, lettura dell'iride e foto dell'arcata dentaria, per capire se si tratta davvero di mio fratello o di un androide mandato dal nemico per rubare i 30-40 euro che tengo abitualmente in casa. Ti basta come risposta al tuo "Eh?" ?
quoto ypkdani, se non ricordo male questo è il famoso Topic scomparso dal Forum :smiley:

flameman:
mah, il discorso e' che esistono integrati maxim, o di altri!
professionisti che studiano 8 ore al giorno, 365 giorni l'anno, questi problemi
e trovano una soluzione

Si ma non si usa un cannone per eliminare una zanzara :slight_smile:
Visto che lo scopo è monitorare la tensione della batteria che alimenta Arduino un banale partitore resistivo collegato ad un ingresso ADC basta e avanza.
Per fare le cose fatte bene aggiungere un condensatore da 100 nf in parallelo alla resistenza tra GND e ingresso ADC e mettere una resistenza da 330 ohm, per disaccoppiare e per protezione, tra il nodo del partitore e l'ingresso ADC.

astrobeed:

flameman:
mah, il discorso e' che esistono integrati maxim, o di altri!
professionisti che studiano 8 ore al giorno, 365 giorni l'anno, questi problemi
e trovano una soluzione

Si ma non si usa un cannone per eliminare una zanzara :slight_smile:
Visto che lo scopo è monitorare la tensione della batteria che alimenta Arduino un banale partitore resistivo collegato ad un ingresso ADC basta e avanza.
Per fare le cose fatte bene aggiungere un condensatore da 100 nf in parallelo alla resistenza tra GND e ingresso ADC e mettere una resistenza da 330 ohm, per disaccoppiare e per protezione, tra il nodo del partitore e l'ingresso ADC.

Topic interessante..
Perdona l'ignoranza, in questo caso il condensatore a cosa servirebbe di preciso?

un'altra domanda:
io ho per un progetto una serie di standalone alimentati a 3,3V (penso di usare 3 pile da 1,5V con un 4833) ognuno con la sua scheda radiotrasmettitore, per cui mi farebbe molto comodo poter accendere un leddino rosso quando la carica scende tipo sotto i 3V..
ovviamente non dovrei fare nessun partitore, semplicemente nel range di lettura 0-1023 cercare la soglia giusta, vero?
dovrei mettere sempre una resistenza per limitare la corrente?
fare una lettura ogni minuto immagino non limiti il consumo, in quanto sarebbe sempre collegata la batteria a quel pin analogico, giusto?
un'ultima cosa, se la carica delle batterie scende, chessò, a 3V, all'uscita del 4833, quanto avrò? poco meno di 3V?

Grazie, Davide.

dab77:
Perdona l'ignoranza, in questo caso il condensatore a cosa servirebbe di preciso?

Lo scopo è fare da filtro per eventuali fluttuazioni rapide della tensione, o del ripple residuo, in modo da non trovarti con delle letture ADC che cambiano di continuo.

ovviamente non dovrei fare nessun partitore, semplicemente nel range di lettura 0-1023 cercare la soglia giusta, vero?

Il partitore lo devi mettere perché la massima tensione in ingresso all'ADC è pari a qualche decimo volt più la tensione di alimentazione, il riferimento massimo rimane la tensione di alimentazione quindi 1023 = 3.3V.

dovrei mettere sempre una resistenza per limitare la corrente?

Sempre meglio farlo, lo scopo non è limitare la corrente in ingresso all'ADC, è evitare di far passare troppa corrente nel caso in cui la tensione in ingresso superi il limite massimo ammesso.

un'ultima cosa, se la carica delle batterie scende, chessò, a 3V, all'uscita del 4833, quanto avrò? poco meno di 3V?

Il limite minimo è dato dalla tensione in uscita del regolatore sommata al drop out, solo con i numeri è difficile capire quale regolatore usi, tiro ad indovinare e diciamo che è il MAX4833 che ha un dropout massimo di 130 mV il che ci porta che la tensione minima in ingresso deve essere di 3.3+0.130 = 3.43 Volt, sotto questa tensione il regolatore cessa di comportarsi come tale.
Dovrai regolare il tuo allarme per almeno 3.5V e se parliamo di celle alcaline a 1.17v (3.5/3) le puoi considerare più che scariche.

Anzitutto grazie delle risposte.

astrobeed:

dab77:
Perdona l'ignoranza, in questo caso il condensatore a cosa servirebbe di preciso?

Lo scopo è fare da filtro per eventuali fluttuazioni rapide della tensione, o del ripple residuo, in modo da non trovarti con delle letture ADC che cambiano di continuo.

ok, capito.

ovviamente non dovrei fare nessun partitore, semplicemente nel range di lettura 0-1023 cercare la soglia giusta, vero?

Il partitore lo devi mettere perché la massima tensione in ingresso all'ADC è pari a qualche decimo volt più la tensione di alimentazione, il riferimento massimo rimane la tensione di alimentazione quindi 1023 = 3.3V.

ok, allora un partitore minimo, con rapporto tipo 10/1 ?

dovrei mettere sempre una resistenza per limitare la corrente?

Sempre meglio farlo, lo scopo non è limitare la corrente in ingresso all'ADC, è evitare di far passare troppa corrente nel caso in cui la tensione in ingresso superi il limite massimo ammesso.

qui capisco meno. almeno nel mio caso, se uso sempre lo stesso pacco batterie, e un regolatore di tensione, non vedo come possa alzarsi tanto il voltaggio.

un'ultima cosa, se la carica delle batterie scende, chessò, a 3V, all'uscita del 4833, quanto avrò? poco meno di 3V?

Il limite minimo è dato dalla tensione in uscita del regolatore sommata al drop out, solo con i numeri è difficile capire quale regolatore usi, tiro ad indovinare e diciamo che è il MAX4833 che ha un dropout massimo di 130 mV il che ci porta che la tensione minima in ingresso deve essere di 3.3+0.130 = 3.43 Volt, sotto questa tensione il regolatore cessa di comportarsi come tale.
Dovrai regolare il tuo allarme per almeno 3.5V e se parliamo di celle alcaline a 1.17v (3.5/3) le puoi considerare più che scariche.

grazie anche di questa spiegazione. in effetti i regolatori ancora li devo prendere, e non pensavo che diverse 'marche' avessero diversi dropout. però, solo per curiosità (non so come funziona dentro!) se io do 2,5V in ingresso ad un regolatore tipo il MAX4833, cosa mi devo aspettare in uscita?

e riguardo l'ulteriore consumo di corrente aggiunto che mi dici? è trascurabile?

flameman:

astrobeed:
Si ma non si usa un cannone per eliminare una zanzara :slight_smile:

beh, ovvio, ma quell'integrato costa 4 euro.
E l'occasione era buona buona
visto che questo argomento rimbalza sempre uguale per la rete

(anche perche' un supervisior, questo sconosciuto
oltre a fare le cose in modo pulito e fatto bene
ti "regala" un interrupt
quando la batteria e' in procinto di sedersi

ma forse sono io che ragiono cosi'
perche' non ho mai sottomano microcontrollori con adc
o mi scoccerebbe immensamente dover usare un adc per fare cio'
che deve fare un modulo in linea di servizio i2c)

Potresti spiegarmi meglio come funzionano questi integrati? Questo https://www.distrelec.it/rivelatore-di-tensione-to-92/maxim/ds1813-10/666308;jsessionid=1D5871BFE3B1BB0217F5717159F6671E.chdist142 è uno di quelli?
Che compito ha? Può rivelare solo una tensione oppure mi da un valore analogico in base alla tensione? Se può rivelare una sola tensione esistono diversi modelli che rivelano tensioni diverse? (Come i diversi modelli di regolatori di tensione hanno tensioni diverse).

flameman:

menniti:
Cioè il discorso è SEMPRE lo stesso, la scelta è divertirsi risolvendo un problema in modo semplice e possibilmente economico o realizzare le "grandi" cose, intese come strumenti precisi, perfetti, spendendo, in tempo e/o denaro, il giusto equivalente. La scelta come sempre deve essere dettata dal risultato che si vuole ottenere.

mah, il discorso e' che esistono integrati maxim, o di altri!
professionisti che studiano 8 ore al giorno, 365 giorni l'anno, questi problemi
e trovano una soluzione
e non dico che bisogna per forza usare i loro integrati
ma non sarebbe malaccio sbirciare come loro risolvono il problema
del resto si chiama "stato dell'arte"
ed e' la prima regola di chi progetta:
prima di buttarsi a pesce nel re-inventare la ruota
(e magari farla quadrata, perche' non si e' a conoscenza che "una cosa rotonda" rotola meglio)
ci si guarda attorno, magari il vicino l'ha gia' inventata =P
Application Notes e Datasheet sono di fatto lo stato dell'arte
dove vengono indicate anche eventuali problematiche che a chiacchiere, sfuggono

Vedi il fatto è che, facendo un mare di parole senza postare uno schema applicativo allo stato dell'arte, con tanto di datasheet, il malcapitato di turno e tutti coloro che vorrebbero timidamente fare qualcosa per aiutarlo, sono costretti a sorbirsi queste noiosissime lezioni filosofiche, gravate da insegnamenti di vita di cui nessuno probabilmente ha bisogno, o quantomeno non è che se le aspetta iscrivendosi a questo forum, per non parlare del “quanto sono bello, bravo, superlativo, mi amo tanto, non capisco perché non vi inginocchiate e non mi adorate, per di più vi presentate senza doni”, tutto ciò dico, racchiude certi post in una sola possibile definizione: inutili.
Io non sono un progettista, ma un hobbysta, quindi non sono in grado di sbirciare, mi vuoi aiutare? Grazie! Visto che tu sei un progettista sbircia tu, leggi traduci, studia, disegna e mandami uno schema applicativo “for dummies”, tanto tali ritieni tutti o quasi.
Io non mi butto a pesce, non ho il fisico, non devo re-inventare la ruota, ma semplicemente misurare la tensione della batteria con cui alimento Arduino, e non voglio usare il mio tester a lancetta, anche perché mi hanno spiegato (incredibile, ci sono altri che lo sanno fare quasi come te!) che Arduino stesso può farlo da solo, con qualche componente esterno che costa pochi centesimi (a proposito, sono uno squattrinato, mi devo arrangiare con ciò che ho in tasca).
Sulla storia di sapere o non sapere, prima di sputare sentenze su chicchessia, trattando la gente come deficienti assoluti (anche se, essere onesto, ero convinto che le ruote della mia macchina fossero quadrate) dovresti porti il problema di chi sono gli altri nella vita e cosa fanno, probabilmente, nel loro piccolo, qualcosa la sanno, in un campo diverso dal tuo, ma credo che tu sai tutto di tutto, non mi pare possibile che ti manchi qualche informazione.
Lo “stato dell’arte” è il rispetto per il prossimo, quando farai un po’ di spazio nel tuo immenso sapere e riuscirai ad infilarci i pochi byte di questa frase tutto andrà a meraviglia anche per te; ah, “prossimo” in questo caso non sta per imminente, successivo, o sinonimi del genere, rappresenta evangelicamente tutto questo inutile popolo che stai inutilmente tentando di elevare allo “stato dell’arte”, una missione impossibile, credi a me, che sono stato sempre il fallimento di tutti quelli come te (non sei il solo su questa terra, me se non vi incontrate tra voi è meglio).
Ora, cortesemente, aspetto questo schema elettrico, da realizzare con pochi centesimi, che mi permetta di leggere il valore della fonte di alimentazione esterna del mio Arduino, io poi farò le prove, sicuramente saranno positive, ti ringrazierò pubblicamente e ci sentiamo al prossimo Topic. Se invece non hai da aiutarmi, cortesemente vai a civilizzare qualche altro Topic, così resta spazio per chi può spiegarmi come si collegano due resistenze in serie su un pin di Arduino.
Ah, se posso permettermi, so che non dovrei, ma così, a prima impressione, se togliessi quel teschio e mettessi qualcosa di meno spaventoso (come avrai capito soffro di manie di persecuzione), personalmente proverei a leggerti con maggiore attenzione letteraria (almeno finché non cominci a mettere contenuti pratici), senza avere quel fastidioso impulso di considerarti un “portatore di morte” (quell’immagine la vedo sempre dove qualcuno mi dice che devo stare attento che potrei morire).
Tutto ciò non svilisce la mia ammirazione per il tuo sapere, anche se purtroppo non sono in grado di stabilire che tale sia realmente, ma penso di sì, non mi sembri un millantatore; sono certo che se provi a scendere dalla tua stele ti conquisterai simpatia ed attenzione, esattamente come tanta gente altrettanto (di sicuro) in gamba che pur lavorando a livelli “galattici” non disdegna di stare a spiegare che differenza c’è tra un resistenza da 10 ohm ed una da 1 kohm (si scrive così?)
Cordialmente.

E' finita così questa discussione?!Stavo aspettando una risposta!

Te l'hanno data la risposta, mi pare. Il 2°post. Devi adattare quello al tuo circuito.
Ma il principio è lo stesso: fai un partitore di tensione collegando in serie 2 resistenze tra Vcc e GND e poi leggi con un pin analogico collegato al nodo di giunzione delle 2 resistenze un valore, che dipende dalla carica della batteria.

Ma caro mio, la discussione era finita al 3° post, sei tu che invece di fare le prove aspetti i cadaveri sulla riva del fiume :grin:

ypkdani:
Utilizzi il partitore come qui: Google Sites: Sign-in con le resistenze r7 e r6 magari prendi quelle con tolleranza dell'1% in modo da avere un partitore, e quindi una lettura, più precisa. Se prendi due resistenze da 1M allora la tensione andrà da 0V a 4,5V quindi coprirà quasi tutto il range dell'ADC. A questo poi associ una curva di scarica della batteria come qui : http://docs-europe.electrocomponents.com/webdocs/0d49/0900766b80d491d3.pdf e vedi quanta carica rimane

menniti:
E' la stessa cosa, devi sempre applicare la tensione di quella batteria ad un partitore resistivo e poi misurare il valore col converitore A/D di Arduino stesso; non ho letto quel tutorial ma ad occhio dovrebbe essere qualcosa del genere.

Come vedi ti era stato detto di seguire quel link perché doveva andare bene, lo hai provato?

@leo oggi ci si gemella, maremma doppiaiola! :smiley:

Xfox:
E’ finita così questa discussione?!Stavo aspettando una risposta!

La risposta è arrivata, probabilmente non l’hai notata per via del “rumore di fondo”.
Ti allego lo schema completo di valori per risolvere il tuo problema, è ottimizzato per una tensione in ingresso fino a 10V che vengono ridotti a 5V in ingresso al ADC.

Grazie mille :slight_smile:
Però volevo anche qualche info in più su quegli integrati...

Ciao Manny, non ti riconosco più ]:), ti prego torna in te ]:), ok ok ti hanno fatto uscire dai gangheri, ci stà.
La tua visione dell'utente tipo che segue il forum doveva essere descritta e tu lo hai fatto bene tanto che anche io
non essendo un ingegnere mi comporto alle volte come flameman, vediamo cosa dicono le AN di Maxim e LT o altro produttore, e sono consapevole che molti non hanno capito cosa sono le AN (Application Note).

Io trovo giusto il post iniziale di flameman, la si butta li c'è questo e anche quest'altro, io che leggo non conoscendo quegli integrati apprendo una nuova informazione e constato che non mi serve quel tipo di integrato se devo lavorare con arduino o in generale con i microcontrollori.

Però volevo anche qualche info in più su quegli integrati...

Ciao Xfox ho letto brevemente il datasheet e concludo che proprio quell'integrato non ti serve, ti può tornare utile con qualche microprocessore o vecchio microcontrollo. Il 328 ha già il browout interno più sofisticato di quello, e per di più parametrizzabile, ne sa qualcosa "menniti" che ha fatto lavorare i suoi micro a 2,7.

Semmai ti dovesse servire un circuito esterno con le funzionalità accennate prima dovrebbe essere un battery monitor con incluso anche il caricatore di batteria automatico, ecco in questo caso sarebbe più facile ricorrere ad un circuito esterno, però e ovvio se non si ha sufficiente esperienza con i datasheet la cosa si complica.

Ciao.