Forum: Mikrocontroller und Digitale Elektronik Akkuspannung mit MCU messen


von Linuxfan (Gast)


Lesenswert?

Hallo,
Ich habe einiges über Spannungsmessung per MCU gelesen und mir ist klar, 
dass es über einen Spannungsteiler laufen muss, da ich eine LiFePo4 
Batterie messen muss und die 1,1V Referenzspannung dazu nutzen wollte.
Der Akku geht nicht über 3,6V, also nutze ich R1=10k und R2=30k. Das 
müsste soweit funktionieren oder sehe ich was falsch ? Mir ist klar, 
dass es ungenau ist, aber ich nutze nur ca80% der Akkukapazität und da 
sind 10% Messfehler noch Ok. Die Schaltung verbraucht leider Strom auch 
wenn nicht gemessen wird, allerdings ist die einzige andere Möglichkeit, 
die ich gefunden habe mit Schaltbaren Opamps, dies ist jedoch um weiten 
komplizierter und die Seite, die ich gefunden hatte war auf russisch, so 
dass ich die Schaltung nicht ganz verstanden habe.
Gibts da eine Möglichkeit der Messung ohne, dass ich ständig Strom 
verbrauche ? Mohm Widerstände sind auch nicht drin, da der AVR, den ich 
benutze keine so hohen Impendanzen mag.
Meine zweite Frage ist : wie mache ich eine isolierte Messung ? Es ist 
in meinem Fall notwendig, dass der Akku vollständig galvanisch getrennt 
vom MCU ist. Geht sowas und mit welchen Bsuteilen könnte ich das machen 
?
Ich hoffe ihr könnt mir da helfen.
Danke im Vorraus.

von Linuxfan (Gast)


Lesenswert?

Was ich noch vergessen habe : der Akku ist nicht die Spannungsquelle des 
AVRs. Der AVR bekommt seinen Strom aus dem Netz.

von holger (Gast)


Lesenswert?

>Mohm Widerstände sind auch nicht drin, da der AVR, den ich
>benutze keine so hohen Impendanzen mag.

Doch das geht. Es muss nur ein ausreichend grosser
Kondensator an den Spannungsteiler. 10nF sollten
reichen. Dann so alle 60s mal messen und gut.

von Linuxfan (Gast)


Lesenswert?

Danke, ich probiere das mal aus. Verfälscht der Kondensator nicht die 
Messung ?
Damit verliere ich weniger Strom, das löst schonmal ein Problem.
Wie sieht es mit der Isolation aus ? Jemand eine Idee ?

von micha (Gast)


Lesenswert?

eventl kann man auch das GND Ende des Spannugsteilers auf einen Pin 
legen, denn man zusammen mit dem ADC Eingangspin zwischendurch TriState 
(Portpin als Eingang und Pullup deaktivieren) schaltet. Aber bei 
ausreichend hohen Widerständen ist die Selbstentladung des Akkus 
wahrscheinlich größer als die Verluste über den Spannungsteiler.

von Norbert S. (norberts)


Lesenswert?

Moin,

Isoliert eine Spannung zu messen ist im Vergleich zu den anderen 
Problemen ziemlich sportlich.
Warum muß das isoliert sein?

Wenn der AVR (8-Bit also Mega oder Tiny???) vom Netz versorgt wird, 
hängt der doch bestimmt an einem Linearregler. Die sind weit genauer als 
diese gammeligen internen 1,1V. Für 2% muss man da schon ganz miese 
Komponenten nehmen.

Gruß,
Norbert

von Bernd (Gast)


Lesenswert?

> Die sind weit genauer als diese gammeligen internen 1,1V.

Das ist nicht war (siehe Datenblatt des µCs).

von Karl (Gast)


Lesenswert?

VINT_max = 1,2 V, VINT_min = 1,0 V
Das ist schon eine ziemliche Spanne.

von Norbert S. (norberts)


Lesenswert?

Bernd schrieb:
>> Die sind weit genauer als diese gammeligen internen 1,1V.
>
> Das ist nicht war (siehe Datenblatt des µCs).

Aha, Linearregler mit knapp 10% Toleranz sind also üblich?
Warum schreibt man so einen Schwachsinn?

Gruß,
Norbert

von Pink S. (pinkshell)


Lesenswert?

Die Eingangsimpedanz der Analogeingänge ist typ. 100 MOhm, kannst also 
ruhig Widerstände 3MOhm und 1MOhm nehmen. Und Widerstände mit 0,1% 
kosten heute auch kein Geld mehr. Der größte Fehler ist sind die 1,1V.

von Carsten R. (kaffeetante)


Lesenswert?

Linuxfan schrieb:
> der Akku ist nicht die Spannungsquelle des
> AVRs. Der AVR bekommt seinen Strom aus dem Netz.

Schade, denn sonst gäbe es eine schöne schicke Alternative. Wenn du nach 
Alternativen fragst, wäre eine komplette Beschreibung hilfreich um 
weitere Optionen zu prüfen. Welchen Zweck erfüllt der Akku denn, wenn er 
nicht der Versorgung des Mikrocontrollers dient?

Linuxfan schrieb:
> Gibts da eine Möglichkeit der Messung ohne, dass ich ständig Strom
> verbrauche ? Mohm Widerstände sind auch nicht drin, da der AVR, den ich
> benutze keine so hohen Impendanzen mag

Da wäre der genannte Kondensator bei hochohmigen Spannungsteiler oder 
man opfert einen weiteren Pin um den Spannungsteiler erst kurz vor der 
Messung mit dem anderen Pol zu verbinden.

: Bearbeitet durch User
von Matthias Q. (zaphod_beeblebrox)


Lesenswert?

Norbert S. schrieb:
> Bernd schrieb:
>>> Die sind weit genauer als diese gammeligen internen 1,1V.
>>
>> Das ist nicht war (siehe Datenblatt des µCs).
>
> Aha, Linearregler mit knapp 10% Toleranz sind also üblich?
> Warum schreibt man so einen Schwachsinn?
>
> Gruß,
> Norbert

Jeder 7805 aus Opas Bastelkiste hat eine engere Toleranz als die interne 
1.1V Bandgapreferenz. Sie ändert sich aber über die Lebensdauer nicht so 
sehr. Bei der Temperatur habe ich ganz grob mal nen Drift von 70ppm/*C 
ermittelt. Wenn Mensch also ein halbwegs genaues Multimeter hat, kann 
ein Korrekturfaktor mit eingerechnet werden. Oder halt nen LM4040 o.Ä, 
kostet ja nun auch nicht die Welt.

Viele Grüße
Matze

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Hallo,

hochohmig geht schon, aber nicht galvanisch getrennt. Das lässt sich nur 
machen, wenn man für die Senderseite der galvanischen Trennung eine 
extra Stromversorgung vorsieht, etwa mit DC-DC-Wandler von der 
AVR-Versorgung. Dann kann man auf der Akku-Seite eine hochohmige 
Messschaltung vorsehen, die die Daten an die AVR-Seite überträgt, z.B. 
einen V/F-Wandler und einen Optokoppler. Dafür braucht man eine 
Hilfsenergie.

Georg

von Simon (Gast)


Lesenswert?

Die Meiner Erfahrung nach beste Lösung galvanisch getrennt Messungen 
durchzuführen ist einen externen AD-Umsetzer zu verwenden und den über 
die Isolationsbarriere mit SPI oder I²C anzuschließen. Dann einen 
einfachen transformatorischen Isolator rein der auch die Hilfsenergie 
zur Verfügung stellt (gibts z. B. von Analog Devices) und den 
Spannungsteiler mit einem MOSFET schaltbar machen. Ich würde da keine 
Widerstände im 1e6 Bereich verwenden, da ist man dann anfälliger gegen 
Störungen. Lieber einen Spannungsteiler im 10..100 kOhm Bereich und den 
dann schaltbar. Die Isolatoren gibts oft mit vier Kanälen, einen für den 
Transistor und zwei für den I²C ADU.
Habe ich schon oft verwendet und verwenden lassen und hat immer sehr gut 
funktioniert.

von Carsten R. (kaffeetante)


Lesenswert?

Ach da habe ich den zweiten Teil doch komplett vergessen. Ich habe fast 
den verdacht daß da mehrere Akkus in Serie einzeln vermessen werden 
sollen. spekulier Aber wenn es nur um eine einzelne Zelle geht:

Galvanisch getrennt kommunizieren, da gibt es viele Möglichkeiten, 
Infrarot LED optokoppler, per Übertrager...

Allerdings muß die Logik ja auch irgendwie versorgt werden. Da könnte 
man auch über einen kleinen Tiny nachdenken, welcher dann im Tiefschlaf 
wartet. Die Messung sähe dann so aus:

Wähle die Akkuspannung als Versorgung und Referenz.
Messe die Bandgap Referenz.
Errechne daraus die Akkuspannung.
Sende Daten.

von Simon (Gast)


Lesenswert?

> Ach da habe ich den zweiten Teil doch komplett vergessen. Ich habe
> fast
> den verdacht daß da mehrere Akkus in Serie einzeln vermessen werden
> sollen. spekulier Aber wenn es nur um eine einzelne Zelle geht:

Wenn das die Anwendung sein sollte, dann würde ich eher einen dafür 
passenden IC nehmen und das wäre ein IC für Akku Batterie Management. 
Gibts schöne Sachen von Linear Technology.

von Jakob (Gast)


Lesenswert?

Die 1,1 V - Referenz ist nur auf +/-10% GENAU, aber recht STABIL.
Man erreicht leicht 1...2% GENAUIGKEIT, wenn man bei Ersteinschaltung
einen Abgleich vorsieht und den Korrekturfaktor in's EEPROM
schreibt, um ihn bei jedem weiteren Einschalten dort abzurufen.

- Etwas Programmierarbeit, kostet einmalig etwas Zeit, was aber
nur bei einem Serienprodukt als Kostenfaktor relevant ist.

Potentialfrei messen?
Das bekommst du nicht so billig!

von Norbert S. (norberts)


Lesenswert?

Moin,

Ich würde erstmal klären wollen, warum das denn getrennt sein muß.
Wenn es nur ein begrenzt anderes Potential ist, also so im Bereich 
10-25V darüber oder darunter, bekommt man das auch gut ohne galvanische 
Trennung hin.

Wie Simon das beschreibt ist es tatsächlich die "amtliche" Lösung aber 
für einen Bastler ohne viel Erfahrung kann das in gestörter Umgebung 
auch sauber in die Hose gehen.
Mit Transienten geht da garantiert mal ein Telegramm in die Hose und 
ohne Fehlerbehandlung steht der unbedarfte Bastler dann blöd da.
Ausserdem scheint mir das angesichts der Fragestellung den Aufwand um 
eine Grössenordnung aufzubohren.
Wenn man sich gerade den Spannungsteiler angelesen hat, sind I2C oder 
SPI mit einem AD-Wandler ja schon kein Selbstgänger, wenn vor zwei 
Wochen die erste blinkende LED Begeisterung ausgelöst hat.

LiFePo4 kenne ich nun nicht so gut aber bei LiPo und 80% Kapazität sind 
10% der Spannung durchaus ein Problem. 25% der Spannung sind 100% der 
Kapazität (so ungefähr).

Linuxfan:
Beschreibe doch mal bitte genauer was Du da vorhast. Das klingt nach 
einer Problematik, die man vielleicht anders und viel einfacher lösen 
kann.

Strombelastung: Bei 100k und 3,6V hält ein 1000mAh Akku rechnerisch gut 
3 Jahre. Da wäre der Akku auch von alleine längst leer. (Sondermüll)
Taschenrechner immer in Reichweite haben kann manchmal nicht schaden...

Gruß,
Norbert

von Norbert S. (norberts)


Lesenswert?

Jakob schrieb:
> Die 1,1 V - Referenz ist nur auf +/-10% GENAU, aber recht STABIL.
> Man erreicht leicht 1...2% GENAUIGKEIT, wenn man bei Ersteinschaltung
> einen Abgleich vorsieht und den Korrekturfaktor in's EEPROM
> schreibt, um ihn bei jedem weiteren Einschalten dort abzurufen.
>
> - Etwas Programmierarbeit, kostet einmalig etwas Zeit, was aber
> nur bei einem Serienprodukt als Kostenfaktor relevant ist.

Warum zum Teufel sollte man das tun wenn der µC an einem 7805 oder sowas 
hängt?
Und das mit dem Kostenfaktor hast Du wohl falsch herum verstanden:
Genau anders herum. In der Serie könnte das Sinn machen um den 
Spannungsregler bei Batteriebetrieb einzusparen. Bei Netzbetrieb ist das 
aber vollkommener Nonsens.

Matthias Q. schrieb:
> Drift von 70ppm/*C
Prima, selbst an einem Exemplar gemessen oder steht das im Datenblatt? 
Immerhin ist das etwa 50% besser als die Drift von z.B. einem LP2950.
Edit: Ca. +-1% von -25 bis +85°C. Also das kann nicht die 
Lebensberechtigung der internen 1,1V Referenz sein.

Gruß,
Norbert

: Bearbeitet durch User
von Matthias Q. (zaphod_beeblebrox)


Lesenswert?

Selbst gemessen mit Kältespray und Sommersonnefensterbank mit 
sagenhafter n=2. Also Ca -40 bis +40.
Ich mache es so, dass ich die interne Referenz für ADC verwende, jeweils 
ausmesse und das Ergebnid als Korrekturfaktor speichere.
So kann ich auch gleich die ggf. vorhandene Toleranz der Messschaltung 
ausmessen und auch korrigieren. Offset der OPV, Widerstandstolleranzen 
etc. lassen sich Exemplarspezifisch bestimmen, messen und korrigieren.

Viele Grüße
Matze

von W.A. (Gast)


Lesenswert?

Linuxfan schrieb:
> Meine zweite Frage ist : wie mache ich eine isolierte Messung ?

Um welche Isolationsspannung geht es?

Eine Möglichkeit für die isolierte Messung wäre, einen kleinen µC zu 
nehmen, der galvanisch mit dem Akku verbunden ist und über einen 
isolierenden DC/DC-Wandler versorgt wird. Der überträgt dann die Daten 
seriell über einen Optokoppler/Adum zu deinem Zielsystem.

von Anja (Gast)


Lesenswert?

Linuxfan schrieb:
> Die Schaltung verbraucht leider Strom auch
> wenn nicht gemessen wird, allerdings ist die einzige andere Möglichkeit,
> die ich gefunden habe

Dann schau hier im Forum mal nach Batteriewächter
Dort wird über einen FET im Spannungsteiler der Spannungsteiler 
deaktiviert solange nicht gemessen wird.

Gruß Anja

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.