Forum: Mikrocontroller und Digitale Elektronik CMOS-Batteriespannung messen


von Thomas P. (topla)


Lesenswert?

Hallo zusammen,

ich habe hier ein Gerät mit ATMega2560 und daran angeschlossenen 
statischen CMOS-Ram. Die Pufferung des Rams erfolgt mit einer CR2032, 
die Umschaltung mit einem MAX691. Erfahrungsgemäß hält eine Zelle 
mehrere Jahre durch. Kommt es allerdings zum Ausfall, dann wäre es sehr 
nett, wenn die im Ram befindlichen Daten vorher gesichert werden können. 
Also soll die Batteriespannung gemessen werden und der Benutzer ggf. auf 
die bald ablebende Batterie hingewiesen werden.
Erster Gedanke war, die Batteriespannung direkt an einen ADC-Eingang des 
ATMega zu legen. Allerdings habe ich nun Bedenken, dass mir der µC im 
ausgeschalteten Zustand die Batterie leer saugt.
Wie löst man das Problem am geschicktesten? Ein Relais wäre aus 
Platzgründen nicht erstrebenswert.

Danke für alle Hinweise.
Thomas

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Der Selbstentladungsstrom einer CR2032 liegt etwa bei 1 µA.  Wenn du
einen Widerstand von 3,3 MΩ vorschaltest, liegt dessen Entladelast
bei abgeschaltetem Controller in der gleichen Größenordnung.  Den
ADC-Eingang musst du mit einem hinreichend großen Kondensator
versehen, damit die S&H-Schaltung des ADC beim Messen genügend
Elektronen bekommt, um ohne große Messwertverfälschung den internen
C nachzuladen.

von Adrian (Gast)


Lesenswert?

was natürlich nicht bedeutet, das nun kein Strom verbraucht wird...Die 
Selbstentladung bleibt natürlich, aber verdoppelt sich der Verlust 
gewissermaßen, aber so oder so, nicht vermeidbar

von oszi40 (Gast)


Lesenswert?

Thomas P. schrieb:
> wenn die im Ram befindlichen Daten vorher gesichert werden können

Es gibt noch 999 andere gute Gründe Daten rechtzeitig zu sichern. Warum 
glaubst Du, daß ausgerechnet nur diese Spannung Fehlerursache sein 
könnte? Ein einziger Programmfehler kann das viel schneller.

von Route_66 H. (route_66)


Lesenswert?

Jörg Wunsch schrieb:
> Der Selbstentladungsstrom einer CR2032 liegt etwa bei 1 µA.  Wenn du
> einen Widerstand von 3,3 MΩ vorschaltest, liegt dessen Entladelast
> bei abgeschaltetem Controller in der gleichen Größenordnung.

Wenn man jetzt nach der ADC-Messung den Portpin auf High legt, bekommt 
die Zelle eine (wenn auch geringe) Erhaltungsladung.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Route 66 schrieb:
> bekommt die Zelle eine (wenn auch geringe) Erhaltungsladung.

Wobei das für Lithium-Primärzellen nicht so gut ist :-o, aber bei
dem geringen Strom wird sie vermutlich nicht gleich explodieren.

von Amateur (Gast)


Lesenswert?

Es geht auch (fast) ohne Verluste.

1. Ein FET schaltet die Batterie auf Deinen Spannungsteiler.
   Z.B. einmal die Woche.
2. Hoffen, dass die Referenz stimmt.
3. A/D-Wandler initialisieren.
4. Konvertieren
5. A/D-Wandler wieder ins Bettchen schicken.
6. Messwert von allen Seiten betrachten.

Da kaum Strom fließt, der Mess-/Teilerweg konstant ist, kommt es auf die 
Bauteile noch nicht mal an. Also nix mit 0,01%. Die Widerstände sind 
üblicherweise weit weg vom Durchlasswiderstand des FETs.

Der FET braucht nur beim Ein-/Ausschalten etwas Leistung. Im Ruhezustand 
sperren die Dinger recht gut.

Natürlich sollte der Spannungsteiler einen sinnvollen Wert liefern.

von Amateur (Gast)


Lesenswert?

Ich Vergaß:

Das vorher angeführte Prinzip arbeitet auch mit einem Komparator.

Notfalls, wenn kein Messsystem/ Komparator vorhanden ist, reicht auch 
ein Schmitt-Trigger mit definierter Schaltspannung. Dann muss aber die 
gesamte Auswerteschaltung hinter dem Schalt-FET liegen.

von oszi40 (Gast)


Lesenswert?

Amateur schrieb:
> Natürlich sollte der Spannungsteiler einen sinnvollen Wert liefern.

Das wird er auch machen, ähnlich wie beim TÜV (am Tag der Prüfung NOCH 
ok). Eine verbrauchte CR2032 hat bei 2,5V natürlich ihre Schwächen im 
Gegensatz zum 3 A-Labornetzteil bei 2,5V. Was ich damit sagen will, ist: 
daß erhöhte CPU-Last die CR2032 noch schneller in den Tod treiben kann 
und die wertvollen Daten dann auch bloß weg sind. Daher lieber zyklisch 
und rechtzeitig sichern wenn möglich.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Amateur schrieb:
> 1. Ein FET schaltet die Batterie auf Deinen Spannungsteiler.

Ich hatte da auch drüber nachgedacht.  Ist da nicht die Body-Diode
des FET dann im Weg, d. h. über sie fließt dann doch bloß wieder
der Strom in den Controllereingang ab?

von Thomas P. (topla)


Lesenswert?

Vielen Dank für die zahlreichen Hinweise.
Zur Datensicherung:
Man kennt ja die Anwender, Datensicherung ist mit Aufwand verbunden (und 
wenn es das Anstecken eines Kabels ist) und wird daher gern 
hinausgeschoben. So kann aber keiner meckern, er wäre nicht gewarnt 
worden...
Der Weg mit dem Fet wäre mir der symphatischste, müsste ja mit einem 
logic level p-Fet zu lösen sein. Da die Spannung der CR2032 immer unter 
5V liegt sollte man doch direkt an den Port gehen können und kann sich 
einen Spannungsteiler sparen?

Thomas

von holger (Gast)


Lesenswert?

Ich würde das SRAM wegwerfen und ein SPI FRAM einbauen.
Batteriegepuffertes SRAM ist doch Elektroniksteinzeit.

von Soul E. (Gast)


Lesenswert?

Amateur schrieb:
> Es geht auch (fast) ohne Verluste.
>
> 1. Ein FET schaltet die Batterie auf Deinen Spannungsteiler.
>    Z.B. einmal die Woche.
> 2. Hoffen, dass die Referenz stimmt.
> 3. A/D-Wandler initialisieren.
> 4. Konvertieren
> 5. A/D-Wandler wieder ins Bettchen schicken.
> 6. Messwert von allen Seiten betrachten.

...und den Spannungsteiler schön niederohmig machen, damit die Zelle 
auch unter Belastung gemessen wird. Dann hat der Anwender noch ein paar 
Wochen Zeit um das Ersatzteil zu besorgen, bevor die Batterie am RAM 
komplett aufgibt.

Die Musterlösung in meinem R&S SMT03 verwendet eine Last von 3,9kOhm. 
Die schalten mit einem Relais, Geld spielt ja keine Rolle. Gemessen wird 
da bei jedem Einschalten, das Klicken geht im allgemeinen 
Selbsttest-Geraschel unter.

von Thomas P. (topla)


Lesenswert?

Auf dem CMOS-Ram wird exzessiv herumgerödelt, da wäre SPI zu umständlich 
(und zu langsam).

Thomas

von holger (Gast)


Lesenswert?

>Auf dem CMOS-Ram wird exzessiv herumgerödelt, da wäre SPI zu umständlich
>(und zu langsam).

Ok, aber es gibt auch FRAMs mit paraller Schnittstelle.

von Thomas P. (topla)


Lesenswert?

Muss ich mal auf die Suche gehen, ob da was pinkompatibles zu finden 
ist.

Thomas

von oszi40 (Gast)


Lesenswert?

soul eye schrieb:
> schön niederohmig machen, damit die Zelle
> auch unter Belastung gemessen wird

Da ich faule Anwender kenne, würde ich evtl. in Stufen vorgehen.
1. Vorwarnung wenn Spannung bei z.B. 2,8V "Achtung Daten sichern"
2. Warnung Batterie Typ CR2032 beschaffen, Handbuchhinweise s. Seite 
4712
3. Bei 2,5V erbarmungslos Funktionen einstellen bis Batterie erneuert 
wurde

von Anja (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Ist da nicht die Body-Diode
> des FET dann im Weg, d. h. über sie fließt dann doch bloß wieder
> der Strom in den Controllereingang ab?

Nö die Body-Diode ist in Sperrichtung.

Thomas P. schrieb:
> Der Weg mit dem Fet wäre mir der symphatischste, müsste ja mit einem
> logic level p-Fet zu lösen sein. Da die Spannung der CR2032 immer unter
> 5V liegt sollte man doch direkt an den Port gehen können und kann sich
> einen Spannungsteiler sparen?

Wenn Du bei ausgeschaltetem Prozessor keine Entladung wünschst brauchst 
Du einen N-Kanal-FET.

Schaltung siehe Batteriewächter

Bzw. http://www.mikrocontroller.net/articles/Datei:BMON_1048_PIC.PNG

Einen Spannungsteiler R4/R5 wirst Du schon brauchen da am Source nur 
Spannungen auftreten können die um V_GS niedriger sind. (Ist bei 4,75V - 
1,5V und voller Batterie (3.6V) etwas knapp).

Gruß Anja

von Soul E. (Gast)


Lesenswert?

holger schrieb:

> Ich würde das SRAM wegwerfen und ein SPI FRAM einbauen.

Aufpassen. Beim FRAM ist ein Lese- auch gleichzeitig ein Schreibzugriff. 
Die Information in der 1T1C-Zelle wird beim Lesen zerstört und 
anschliessend neugeschrieben -- wie beim DRAM. Daher ist bei FRAM auch 
die Anzahl der *Lese*zyklen begrenzt.

Sie ist zwar heutzutage mit 10E12 bis 10E14 sehr hoch, trozdem sind 
diese Bausteine keine Arbeitsspeicher, sondern eher ein Ersatz für 
EEPROM.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Anja schrieb:
>> Ist da nicht die Body-Diode
>> des FET dann im Weg, d. h. über sie fließt dann doch bloß wieder
>> der Strom in den Controllereingang ab?
>
> Nö die Body-Diode ist in Sperrichtung.

Dann wäre sie ja im eingeschalteten Zustand in Durchlassrichtung
(Vcc > Vbat).

von Thomas P. (topla)


Lesenswert?

Nach dem Einlesen in die FRAM-Spezifika ist das wohl wirklich nichts für 
meine Anwendung; es bleibt also beim CMOS-sRAM.
Vielleicht wäre auch ein (sehr) kleines Reed-Relais noch eine 
Alternative, mal schauen, was der Markt so bietet.

Thomas

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.