CMOS-Batteriespannung messen

#4094121
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
Moderator Persönliche Seite #4094154
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.
Gast #4094159
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.
Gast #4094176
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.
Gast #4094186
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.
Gast #4094191
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.
#4094244
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
Gast #4094282
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.
Gast #4094427
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
Gast #4094442
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
Gast #4094581
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren