Forum: Mikrocontroller und Digitale Elektronik RTC der MCU benutzen


von Dirk F. (dirkf)


Lesenswert?

Hallo,
ich möchte gerne bei einem neuen Projekt eine Echtzeituhr gepuffert 
implementieren.
Idealerweise mit einem wartungsfreien Kondensator als Energiespeicher 
bei Stromausfall.
Gangreserve ca. 4 Wochen wäre gut.

Die meisten 32 Bit MCUs haben ja ein RTC integriert.
Aber ich sehe folgende Unterschiede:

Bei einem Hersteller (ich glaube es war ST)  wird ein separater Pin 
herausgeführt, an dem die Hilfsspannung angeschlossen wird, die dann nur 
den RTC Schaltungsteil mit wenig Strom am Leben erhält.

Bei Microchip gibt es so etwas wohl nicht. Hier muss bei Stromausfall 
die gesamte MCU unter Spannung gehalten werden und in des Sleep Modus 
versetzt werden, mit allen Problemchen die damit verbunden sind....

Sehe ich das so richtig ?
Möchte gerne nicht auf einen externen RTC Chip aus Kostengründen 
zurückgreifen.

Gruß Dirk

von Georg (Gast)


Lesenswert?

Dirk F. schrieb:
> Gangreserve ca. 4 Wochen wäre gut.

Ich weiss, das die Automobil-Industrie das verlangt (Werksferien), aber 
ich glaube nicht dass man das mit einem Kondensator garantieren kann. 
Ich habe immer Akkus oder Lithium-Knopfzellen eingebaut.

Wenn man einen passenden Controller wählt braucht der im Schlafmodus 
auch nicht mehr als eine getrennte RTC.

Georg

von Dirk F. (dirkf)


Lesenswert?

Georg schrieb:
> Wenn man einen passenden Controller wählt braucht der im Schlafmodus
> auch nicht mehr als eine getrennte RTC.

Ja dann muss ich aber die 3.3V Versorgung der MCU vom Rest der Schaltung 
trennen.  Wie ?

von PittyJ (Gast)


Lesenswert?

Bei einem Projekt haben wir einen Supercap benutzt. Damit sind wir auf 
>=4 Wochen gekommen. Hängt aber von viele Details ab.

von Gerhard O. (gerhard_)


Lesenswert?

Georg schrieb:
> Dirk F. schrieb:
>> Gangreserve ca. 4 Wochen wäre gut.
>
> Ich weiss, das die Automobil-Industrie das verlangt (Werksferien), aber
> ich glaube nicht dass man das mit einem Kondensator garantieren kann.
> Ich habe immer Akkus oder Lithium-Knopfzellen eingebaut.
>
> Wenn man einen passenden Controller wählt braucht der im Schlafmodus
> auch nicht mehr als eine getrennte RTC.
>
> Georg

Es geht schon mit mit einem C. Vor Jahren baute ich ein Instrument mit 
einem DS1302 drin. Der RTC Baustein ladet da anstelle eines Akkus einen 
0.15F oder 0.47F Goldcap. Es hat sich herausgestellt, daß die RTC 
mindestens sechs Monate oder noch länger läuft, wenn auch mit 
verminderter Genauigkeit, was dem großen Spannungsabfall am Supercap 
über lange Zeit zugrundeliegt. Ein Monat mit typischer DS1302 
Genauigkeit ist definitiv möglich. Eine CRxxxx hat halt den Vorteil, daß 
der Spannungsverlauf über Zeit viel konstanter ist und deshalb bessere 
Gangergebnisse zu erwarten sind.

Ich verwendete vor Jahren die RTC im STM32F103VET6 und das funktionierte 
auch sehr gut. Eine CR1225 lief da mit guter Genauigkeit über fünf Jahre 
im ausgeschalteten Gerätezustand. Der F103 hat einen Vbat Pin dafür.

: Bearbeitet durch User
von Bauform B. (bauformb)


Lesenswert?

https://www.digikey.de/de/products/detail/micro-crystal-ag/RV-8263-C7-32-768KHZ-20PPM-TA-QC/10499245

Dirk F. schrieb:
> Bei einem Hersteller (ich glaube es war ST)  wird ein separater Pin
> herausgeführt, an dem die Hilfsspannung angeschlossen wird, die dann nur
> den RTC Schaltungsteil mit wenig Strom am Leben erhält.

Bei ST gibt es den extra VBAT-Pin nur bei größeren Gehäusen. Vielleicht 
macht Microchip das ähnlich.

> Möchte gerne nicht auf einen externen RTC Chip aus Kostengründen
> zurückgreifen.

https://www.digikey.de/de/products/detail/micro-crystal-ag/RV-8263-C7-32-768KHZ-20PPM-TA-QC/10499245

Ja, der hat auch keinen VBAT-Pin und keinen Umschalter. Das stört nicht, 
solange man den SuperCap aus 5V (oder so) laden kann. Ansonsten hat 
Micro Crystal auch welche mit Umschalter. Mit der richtigen 
Ladeschaltung hängt der RTC-Chip nur über einen Widerstand am 
Kondensator. Der kann dadurch von 3.3V bis runter zu 0.9V genutzt 
werden, und das mit max. 600nA@85°C (typ. 190nA). Die STM32 z.B. geben 
bei 1.65V auf.

Der entscheidende Vorteil ist aber der integrierte Quarz, deshalb 
schwingt der auch auf einer versifften Platine und bei jedem Wetter an. 
Und er braucht trotzdem weniger Platz als Quarz, 2 Cs und evt. 1 R. Noch 
kleiner wird's, wenn man auch noch den MHz-Quarz sparen kann, weil der 
uC aus 32kHz per PLL seine internen MHz machen kann.

von Dirk F. (dirkf)


Angehängte Dateien:

Lesenswert?

Ja dann werde ich es wohl so machen. (Anlage)

von Martin (Gast)


Lesenswert?

Gerhard O. schrieb:
> Der RTC Baustein ladet da anstelle eines Akkus einen
> 0.15F oder 0.47F Goldcap.

Und wie lange hat der Goldcap gehalten? Meiner Erfahrung nach sind die 
nach 5-6 Jahren im Eimer. Die altern wie Sau. Dann musste tauschen, so 
wie bei einer Batterie, aber mit Lötkolben.

von Dirk F. (dirkf)


Lesenswert?

Martin schrieb:
> nach 5-6 Jahren

Aus der Garantie. Alles Gut :-)

von Wf88 (wf88)


Lesenswert?

Martin schrieb:
> Gerhard O. schrieb:
>> Der RTC Baustein ladet da anstelle eines Akkus einen
>> 0.15F oder 0.47F Goldcap.
>
> Und wie lange hat der Goldcap gehalten? Meiner Erfahrung nach sind die
> nach 5-6 Jahren im Eimer. Die altern wie Sau. Dann musste tauschen, so
> wie bei einer Batterie, aber mit Lötkolben.

Ich hab vor ein paar Wochen meine Küchenuhr vom Elko-Siff befreien 
müssen. Dort hatte ich zwei 1F 2.7V in Reihe an 5V über eine rote LED 
und R geladen. Das ging dann an den VBat Pin eines F103.

Die Gangreserve habe ich so gut wie nie gebraucht, 5 Jahre hat sie 
gehalten und dann gut 2 Stunden Arbeit, bis die Elkos da raus gefummelt 
und alles wieder sauber war. Hätte ich mal eine Batterie genommen...

von Gerhard O. (gerhard_)


Lesenswert?

Martin schrieb:
> Gerhard O. schrieb:
>> Der RTC Baustein ladet da anstelle eines Akkus einen
>> 0.15F oder 0.47F Goldcap.
>
> Und wie lange hat der Goldcap gehalten? Meiner Erfahrung nach sind die
> nach 5-6 Jahren im Eimer. Die altern wie Sau. Dann musste tauschen, so
> wie bei einer Batterie, aber mit Lötkolben.

Ich baute das Instrument um 2007 und es funktionierte noch vor ein paar 
Monaten. Die RTC läuft zumindest noch heute. Ich habe nachgesehen.

Ich hatte allerdings ein Problem im Akai UKW Tuner und bei einem 700F 5V 
USV. Beim AKAI Tuner kommt nan leider schwer dran. Habe deswegen zwei AA 
Zellen eingebaut, mit Diode versteht sich:-)

von Bauform B. (bauformb)


Lesenswert?

Martin schrieb:
> Und wie lange hat der Goldcap gehalten? Meiner Erfahrung nach sind die
> nach 5-6 Jahren im Eimer.

Wf88 schrieb:
> Ich hab vor ein paar Wochen meine Küchenuhr vom Elko-Siff befreien
> müssen.

Waren das die alten Goldcaps? Heute sollte es doch etwas besseres geben? 
Was haltet ihr z.B. von diesen:

https://www.digikey.de/de/products/filter/elektrische-doppelschichtkondensatoren-edlc-superkondensatoren/61?s=N4IgTCBcDaIA4AsBuAbEBdAvkA
1
Lifetime: (3.9 V; 2 years @ +65°C, 5,000 hours @ +85°C)
im Wohnraum wären das 30 Jahre. In einer Schaltung wie oben wird der nur 
bis ca. 3.1V geladen, macht 60 Jahre. Dann hat er den doppelten 
Innenwiderstand aber immer noch 70% Kapazität. Er überbrückt also immer 
noch 3 Wochen statt einem Monat. Der Innenwiderstand von dann 1 Ohm 
sollte für eine RTC gerade noch reichen. Also hält er effektiv noch 
deutlich länger, sagen wir 100 Jahre. Mit einem Faktor 2 für Werbelügen 
und einem Faktor 2 für Klimaerwärmung sind wir bei 25 Jahren bei dauernd 
35°C.

Allerdings: in einem Gerät, das normal dauernd am Netz hängt, sollte 
eine 3.6V-Tadiran-Batterie auch so lange halten. Bei der kann man 
nämlich statt der Schottkydiode eine BAV199 oder einen BC846 nehmen. Das 
ergibt dann immer noch das 10-fache der empfohlenen Lebensdauer von 
Mobiltelefonen ;)

von Wf88 (wf88)


Lesenswert?

Bauform B. schrieb:
> Waren das die alten Goldcaps? Heute sollte es doch etwas besseres geben?

Hah, ich konnte noch nachsehen. Die lagen bis grade eben noch im 
Aschenbecher in der Werkstatt.

Tecate aus Woche 13, Jahr 2009

Am Code-Archive zu meiner Uhr sehe ich, wann die verbaut wurden. 2015. 
Habe die damals "neu" gekauft.


Womit ich auch schon schlechte Erfahrungen gemacht habe waren "Hy Cap" 
(mit einem Blitz zwischen den Worten) 10F 2.7V.

Davon hatte ich mal ~20 Stück auf einem Rest Lochraster verlötet und 
liess die Tagsüber an einer kleinen Solarzelle laden. Nachts war das 
Flur-Licht und im Bad ein Nachtlicht. Nach 3 Jahren fiel das Licht aus, 
mehr als die Hälfte der Kondensatoren war am Auslaufen.

Die waren auch frisch gekauft als ich die verbaut habe, keine 
Schrottverwertung oder so. Die blieben von nem anderen Projekt übrig...

von Steve van de Grens (roehrmond)


Lesenswert?

Dirk F. schrieb:
> Bei Microchip gibt es so etwas wohl nicht. Hier muss bei Stromausfall
> die gesamte MCU unter Spannung gehalten werden und in des Sleep Modus
> versetzt werden, mit allen Problemchen die damit verbunden sind....

> Sehe ich das so richtig ?

Ja, allerdings ist mir unklar, welche "Problemchen" du meinst. Offenbar 
haben Leute viel öfter mit dem umgekehrten Fall Probleme, weil sie 
Spannung an I/O Pins legen, währen der µC keine Stromversorgung hat.

: Bearbeitet durch User
von Dirk F. (dirkf)


Angehängte Dateien:

Lesenswert?

Hallo,
habe beschlossen, diesen externen RTC zu nehmen.
Er hat eine geringe Stromaufnahme von nur 130 nA, aber leider keinen 
eigenen Anschluss für  den Supercap wie der RV-3149-C3  (800 nA).

Würde die gezeigte Schaltung (5V Versorgung) so an einer 3,3V MCU laufen 
?

von Bauform B. (bauformb)


Lesenswert?

Erstmal fehlt ein Widerstand zur Ladestrombegrenzung. Der gehört direkt 
in Reihe zum Supercap, sonst erwischt die RTC immer nur die Spannung am 
Supercap, und die ist zu Anfang Null bis wenig.

Ansonsten könnte es knapp funktionieren, aber es ist ziemlich 
undefiniert. Der Spannungsabfall an der BAV199 kann schon mal 2V sein, 
wenn viel Ladestrom fließt, na gut, 0.3V über VDD sind an den 
RTC-Eingängen ja erlaubt. Wenn der Supercap richtig voll ist, fließen 
nur noch nA und der Spannungsabfall wird viel kleiner, RTC-VDD wird 
deutlich größer als 3.3V und der High-Pegel für die RTC-Eingänge (min. 
70%) wird langsam knapp.

Dass der Supercap bis auf über 4V aufgeladen wird, ist natürlich gut für 
die Laufzeit und funktioniert, nur halt die Lebensdauer... Naja, man 
kann nicht alles auf einmal haben.

von Dirk F. (dirkf)


Angehängte Dateien:

Lesenswert?

Hallo Bauform,
danke für die Hinweise.
Dann also besser so:

von Bauform B. (bauformb)


Angehängte Dateien:

Lesenswert?

Auf jeden Fall besser für den Supercap, aber deutlich weniger Laufzeit. 
Jetzt wird allerdings RTC-VDD bis zu 0.9V kleiner als die 3.3V. Damit 
reicht die SDO-Ausgangsspannung nur ganz knapp für den uC 
(wahrscheinlich 70% von 3.3V). Die RTC-Eingänge werden jetzt 
"überfahren" und leider widerspricht sich das Datenblatt in dem Punkt 
selbst: keine Schutzdiode nach VDD, aber Abs.max. VDD+0.5, aber Static 
characteristics 5.5V. Und ich dachte, Schweizer Uhrmacher wären 
besonders gewissenhaft :(

Beim STM32 muss man mit der Eingangsspannung auch aufpassen. Die Werbung 
sagt 5V-tolerant, aber das gilt nicht für jeden Pin und nicht, wenn ein 
Pull-Up eingeschaltet wird und vor allem nicht, wenn VDD Null ist. Dann 
sind gerade mal 3.6V erlaubt.

Ich wollte den Supercap als kleines Modul steckbar machen, damit man 
wahlweise eine CR2032 drauf stecken kann. Außerdem sind meine 5V nicht 
besonders stabil, deshalb sieht das Bild so kompliziert aus. Deshalb 
sorgt auch der Transistor V22 dafür, dass die Ladespannung nicht von den 
5V abhängt. Nebenbei macht er Temperaturkompensation. V21 spielt auch 
Diode, und, wenn man den Gerüchten glauben darf, kann er das besser als 
eine BAV199 (viel konstanterer Spannungsabfall, viel höherer erlaubter 
Strom und genauso kleiner Leckstrom).

Mit dem Spannungsteiler R82, R77 kann man den Ladeschluss einstellen und 
damit den Kompromiss zwischen Lebensdauer und Eingangsspannungen der 
ICs. Ein besonders netter Kompromiss ergibt sich, wenn man den 
Spannungsteiler weg lässt und den Emitter von V22 direkt an 3.3V legt.

von Nils (Gast)


Lesenswert?

Mal von der Frage der Spannungsversorgung abgesehen. Wenn Du die interne 
RTC eines Microcontrollers nutzt, mache Dich auf Schmerzen bei der 
Implementierung gefasst.

Was nämlich fast immer der Fall, aber so gut wie nie dokumentiert: Die 
RTC läuft in einer anderen Clock Domain.

D.h. nur weil Du in ein Register schreibst bedeutet das nicht, das die 
Daten übernommen werden. Das passiert häufig erst dann, wenn die nächste 
Millisekunde des RTC Quarzes abgelaufen ist.

Das gleiche passiert beim Lesen aus Registern: Wenn Du die Uhrzeit 
ausliest (Tag, Stunde, Sekunde etc) kann es passieren, das zwischen den 
Zugriffen der Uhrenquarz weiter tickt. Die Daten sind dann 
unzuverlässig. Und in welcher Reihenfolge die RTC Perepherie die 
Register updated: Das steht natürlich auch nirgendwo.

D.h. Du solltest beim Lesen der Zeit aus der RTC eine Schleife laufen 
lassen, die so lange liest, bis Du zwei mal das gleiche Ergebnis 
bekommst.

(Have learned this the hard way: Kreditkarten Terminal, welches über die 
RTC die Gültikkeit des Zertifikates prüft und - wenn Zertifikat 
abgelaufen - das Gerät brickt. Ist schon doof, wenn es während der 
Entwicklung niemals aufritt, das durch die zwei Clock Domains Race 
Conditions entstehen, aber im Feld dann die Rückläufer kommen, weil 
grundlos die Geräte ihre Zertifikate verwerfen)..

von NichtWichtig (Gast)


Lesenswert?

@Nils

Danke für den Hinweis.

von Johnny B. (johnnyb)


Lesenswert?

Nils schrieb:
> D.h. Du solltest beim Lesen der Zeit aus der RTC eine Schleife laufen
> lassen, die so lange liest, bis Du zwei mal das gleiche Ergebnis
> bekommst.

Bei Benutzung der STM32 HAL kriegt man das schon geschenkt:
1
/**
2
  * @brief  Read the time counter available in RTC_CNT registers.
3
  * @param  hrtc   pointer to a RTC_HandleTypeDef structure that contains
4
  *                the configuration information for RTC.
5
  * @retval Time counter
6
  */
7
static uint32_t RTC_ReadTimeCounter(RTC_HandleTypeDef *hrtc)
8
{
9
  uint16_t high1 = 0U, high2 = 0U, low = 0U;
10
  uint32_t timecounter = 0U;
11
12
  high1 = READ_REG(hrtc->Instance->CNTH & RTC_CNTH_RTC_CNT);
13
  low   = READ_REG(hrtc->Instance->CNTL & RTC_CNTL_RTC_CNT);
14
  high2 = READ_REG(hrtc->Instance->CNTH & RTC_CNTH_RTC_CNT);
15
16
  if (high1 != high2)
17
  {
18
    /* In this case the counter roll over during reading of CNTL and CNTH registers,
19
       read again CNTL register then return the counter value */
20
    timecounter = (((uint32_t) high2 << 16U) | READ_REG(hrtc->Instance->CNTL & RTC_CNTL_RTC_CNT));
21
  }
22
  else
23
  {
24
    /* No counter roll over during reading of CNTL and CNTH registers, counter
25
       value is equal to first value of CNTL and CNTH */
26
    timecounter = (((uint32_t) high1 << 16U) | low);
27
  }
28
29
  return timecounter;
30
}

von Dirk F. (dirkf)


Lesenswert?

Hallo,
habe eben die LIthium Knopfzelle CR2032 in meinem Laptop nach 5 Jahren 
gewechselt. Hier ist ja auch ein RTC drin.
War erstaunt, dass dise alte immer noch 3.07 V hat.

Wenn ich mir jetzt so die Probleme mit den Supercaps so ansehem übelege 
ich  doch, eine CR2032 als Backup für den RTC zu nehmen...

Was meint ihr ?

von Stefan F. (Gast)


Lesenswert?

CR2032 haben sich bewährt. Experimente mit Akkus lasse ich lieber in den 
90er Jahren, wo sie her kommen.

von Dirk F. (dirkf)


Lesenswert?

Stefan F. schrieb:
> CR2032 haben sich bewährt.

Also bei einer Kapazität von 230 mAh  (CR2032)  und einen Stromverbrauch 
der RTC von max. 850 nA  komme ich auf 30 Jahre. Wow....

von Stefan F. (Gast)


Lesenswert?

Dirk F. schrieb:
> Also bei einer Kapazität von 230 mAh  (CR2032)  und einen Stromverbrauch
> der RTC von max. 850 nA  komme ich auf 30 Jahre.

Und bedenke, dass die Uhr vom 230V Netz versorgt wird, solange das Gerät 
eingeschaltet ist.

von Wf88 (wf88)


Lesenswert?

Stefan F. schrieb:
> CR2032 haben sich bewährt. Experimente mit Akkus lasse ich lieber
> in den 90er Jahren, wo sie her kommen.

Mir kommen immernoch die Tränen, wenn ich an meinen 286er Commodore PC 
denke. Alles versaut rund um die Akkus. Leiterbahnen durch....

von Steve van de Grens (roehrmond)


Lesenswert?

Wie ist das denn bei den Super-Kondensatoren, können die Auslaufen und 
dadurch Geräte beschädigen?

von Wf88 (wf88)


Lesenswert?

Ja, die laufen auch aus und greifen Kupferbahnen an.

von svensson (Gast)


Lesenswert?

Stefan F. schrieb:
> CR2032 haben sich bewährt. Experimente mit Akkus lasse ich lieber in den
> 90er Jahren, wo sie her kommen.

Sehe ich ähnlich. Ich verwende die DS1307 und eine stinknormale CR2032 
in einer Batteriehalterung als Backup, wenn die Stromversorgung 
ausfällt.

Bei Computern halten die CR2032 gut und gerne auch mal 10 Jahre. Aber 
selbst wenn die Computer dauerhaft vom Netz getrennt sind, halten die 
noch 5 Jahre.

Ich glaube nicht, daß man mit Akkus und Ladeschaltungen eine ähnliche 
Zuverlässigkeit über 5 Jahre hinbekommt und dann auch noch zu dem Preis.

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.