Betriebsstunden (-minuten)zähler mit nur einer Versorgungsspannung

Hallo Gemeinde,

würde mich über Ansätze oder Erfahrungen zu folgender Aufgabenstellung freuen:
arduino (UNO in dem Fall) übernimmt bereits erfolgreich eine Steuerungsaufgabe und soll jetzt auch noch die Laufzeit des Gerätes mitprotokollieren. Der Uno hängt an der gleichen Betriebsspannung wie das Gerät selbst, wird ausgeschaltet geht also auch dem Uno das Licht aus.

  1. Ansatz: R/C Glied mit dickem C und vor dem R Messen der Betriebsspannung, wenn weg dann schnell noch in's Eprom schreiben und dann war's das. Könnte das klappen?
  2. Ansatz: Uno hängt direkt an der Batterie, schläft also nie und misst die Zeiten über Analog-In wenn Gerät eingeschaltet ist. Gefällt mir aber nicht wenn er permanent läuft :~
  3. Ansatz: nix eingefallen :blush:

Hat jemand noch einen Geistesblitz?

Danke und Grüße
Klaus

  1. Du schreibst während dem Betrieb alle Sekunde (Minute) die Betriebszeit ins EEprom. Da mußt Du, damit nicht immer die gleiche Speicherzelle benutzt wird die Zeit über nacheinander in alle Speicherzeleln schreiben. Ein Zähler den Du jedesmal erhöhst zeigt die nächsten freie Speicherzellen an. Wenn Du am Ende angekommen bist fängst Du von vorne an. Wenn das Gerät wieder eingeschaltet wird suchst Du im EEprom den Höchsten Wert und dies sind die aktuellen Betriebsstunden.
  2. falls Du ein RTC mit RAM hast (zB DS1307) kannst Du auch 2 oder 4 Byte dafür nehmen und immer wieder wie in 3) die Betriebsstunden neu hineinschreiben. Du kannst dann aber immer die gleichen Speicherstellen verwenden da die sich nicht verbrauchen.
  3. auch andere batteriegepufferte RAMs oder FRAMs zb von RAMTRON können verwendet werden.
  4. Denkbar ist auch eine Batteriepufferung des Arduinos und tiefen sleepmodus.

Grüße Uwe

Ich finde das ist ein sehr schöner Verwendungszweck für dem RAM einer DS1307 RTC :wink:

Für Lösung 1 müsste die Versorgungsspannung über eine Diode auf den Kondensator gelegt werden, damit man den Zustand "Spannung Aus" ( vor der Diode ) auch rechtzeitig mitkriegt, richtig ? Oder welche elektrischen Tricks wüdern Experten geben, bitte ?

Danke für's Mitdenken!

Die Entkopplungsdiode zu Variante 1 ist mir heute Nacht auch eingefallen, ist ja sonst sinnlos :wink:
Wenn's geht würde ich "jede Minute Wert setzen" nicht als Lösung wählen. Ziel ist, beim Einschalten Wert setzen und eben beim Ausschalten. Ich glaub, wir experimentieren mal mit Lösung 1 und Diode :grin:

Grüße
Klaus

Die Zeit immer wieder setzen ist die sicherere Methode als im Ausschaltmoment die Zeit abzuspeichern.
Grüße Uwe

uwefed:
Die Zeit immer wieder setzen ist die sicherere Methode als im Ausschaltmoment die Zeit abzuspeichern.
Grüße Uwe

Da hast Du sicher recht. Was passiert denn, wenn ausgerechnet beim Schreiben der Saft wegbleibt?

Dann hast Du eine unkoherenten Wert. Ein oder mehrere Byte der Zahl sind geändert, der Rest ist noch der alte Wert. Bei Änderung nur des Niederwetigsten Bytes ist die Zählung um 1 Falsch. Beim Änderung mehrere Byte wegen Überlauf eines Bytes kann der Fehler dann viel Größer sein. Statistisch gesehen ist der Fehler, je größer er ist desto seltener da das 3. Byte nur alle 65536 Zeiteinheiten geändert wird das 2. Byte aber alle 256 Zeiteinheiten.

Das Problem kannst Du verhindern wenn Du 3 mal den gleichen Wert im RAM abspeicherst. Braucht zwar den 3-fachen Platz abre der RTC hat mit 56 Byte RAM genügend Platz. Auch wenn während des Abspeicherns der Strom ausfällt dann hast Du einen Wert inconsistent. Die anderen beiden sind gleich oder um eine Zeiteinheit verschieden. Beim Einschalten kontrollierst Du ob die 3 Werte gleich sind. Sind sie verschieden kontrollierst Du ob 2 Werte gleich sind; das ist dann der richtige Wert. Sind die Werte um 1 Einheit verschieden dann ist der höhere richtig.

Zusätzlich würde ich den Wert beim Einschalten ins EEprom abspeichern. So hast Du eine gewisse Sicherheit auch für den Fall einer leeren RTC Batterie.

Grüße Uwe

1 Like

Sehr gute Ideen, es lohnt sich halt doch die Profis zu fragen 8)

Danke euch, wir basteln dann mal.

Grüße
Klaus