Meten van batterijspanning

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • szjoin
  • Registratie: Februari 2011
  • Laatst online: 20:25
Hallo,

Ivm een IoT projectje wil ik een ESP-12 op een LiPo batterij laten draaien en o.a. de batterijspanning via een mqtt topic uitsturen.

De LiPo spanning varieert tussen 3,7V en ca. 3,0V om de esp te laten werken.
De esp echter heeft een adc input van max. 1,0V.

Met een simpele spanningsdeler zien de grenswaarden van de adc uitlezing er als volgt uit:
Vbatt=3,7V -> ADCreadout=1024
Vbatt=3,0V -> ADCreadout=830

Echter ik zou graag gebruik maken van de volle 1024 levels van de adc voor deze spanningsval. Dus:
Vbatt=3,7V -> ADCreadout=1024
Vbatt=3,0V -> ADCreadout=0

Wie weet hoe ik dit op een simpele maner oplos? Is hier een standaardoplossing voor?

Alle reacties


Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Even quick'n'dirty voor de simpele spanningsdeler:

code:
1
2
3
if (ADCreadout < 1024) {
  ADCreadout = 0;
}


Of ik denk te simpel, kan natuurlijk ook :P

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • szjoin
  • Registratie: Februari 2011
  • Laatst online: 20:25
Ik bedoel dat de spanningrange waarbinnen een esp-12 redelijkerwijs blijft draaien (teweten 3,7V...3,0V) adc wordt opgedeeld in 1024 niveaus.

Het resultaat is dat ik (0,7V/1024) kan monitoren.

edit: met 'spanningdeler' bedoel ik twee weerstanden. 'Harde waar' dus.

[ Voor 16% gewijzigd door szjoin op 21-02-2024 16:26 ]


Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Je kan toch gewoon tussen de 830 en 1024 monitoren, zonder daar eerst een formule tegenaan te gooien.

Want hoger dan 1024 is niet goed, en lager dan 830 is ook niet goed.

code:
1
2
3
4
5
6
7
if (ADCreadout > 1024) {
  die (Spanning is te hoog);
}
if (ADCreadout < 830) {
  die (Spanning is te laag);
}
// Spanning is dikke prima

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • memphis
  • Registratie: Oktober 2000
  • Laatst online: 20:32

memphis

48k was toen meer dan genoeg.

Let even op dat een LiPo volgeladen 4.2 volt heeft.

Dus je wilt 3 t/m 4.2v omzetten in een uitlezing van 0 t/m 1v

Een zenerdiode van 3v om de spanning 3v omlaag te brengen en je houdt dan nog 1.2v over om via een weerstand spanningsdeler naar 1v te brengen.

Maar dit zal (een lage) stroom vreten en je zult rekening moeten houden met de ingangsimpedantie van de ADC als je hoog-ohmig een spanningsdeler maakt wat ook weer nadelig voor de correcte werking van de zenderdiode kan zijn.

[ Voor 81% gewijzigd door memphis op 21-02-2024 17:10 ]

Er zijn mensen die mij een GOD vinden


Acties:
  • 0 Henk 'm!

  • dragonhaertt
  • Registratie: Februari 2011
  • Laatst online: 19:22

dragonhaertt

@_'.'

RaZ schreef op woensdag 21 februari 2024 @ 16:32:
Je kan toch gewoon tussen de 830 en 1024 monitoren, zonder daar eerst een formule tegenaan te gooien.

Want hoger dan 1024 is niet goed, en lager dan 830 is ook niet goed.

code:
1
2
3
4
5
6
7
if (ADCreadout > 1024) {
  die (Spanning is te hoog);
}
if (ADCreadout < 830) {
  die (Spanning is te laag);
}
// Spanning is dikke prima
Het punt is volgens mij vooral om binnen die range zo'n hoog mogelijk resolutie te hebben.

Een oplossing zou kunnen zijn om een extern 'versterkings' (opamp) circuitje te bouwen, maar voor die moeite kan je net zo goed een externe ADC aansluiten.

Truth is like a language with no native speakers left.
Its poetry is speechless and it can’t be caught in human being’s breath.


Acties:
  • 0 Henk 'm!

  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 00:21

SA007

Moderator Tweaking
De ADC van een ESP8266 (die op je exp-12 zit) meer van 0-1V.
Daarbij is 0V 0 en 1V 1024.

Als je het bereik zeg 3-4V wil hebben moet je dus 3V spanningsval creëren, dat kan bijv met een zenerdiode.
Alleen de diode is niet genoeg, er moet een beetje stroom doorheen lopen om de spanningsval stabiel te maken, misschien een 1k weerstand bijv.

Houdt idd rekening met de laadspanning van een lithium, niet dat je dan boven de 1V gaat en je adc sloopt.

Acties:
  • 0 Henk 'm!

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 20:45
Ik zou een externe Battery Fuel Gauge IC of module gebruiken :).

My favorite programming language is solder.


  • Sine
  • Registratie: Juni 2001
  • Laatst online: 12:45
Gewoon een spanningsdeler in de vorm van een paar weerstanden.

Eventueel een torretje in de V+ zodat je met het stroompje door de deler de batterij niet leeg trekt, als de ADC ingang hoogohmig genoeg is hoeft dat natuurlijk niet.

Repareren doe je zo.

Pagina: 1