Betriebsstundenzähler mit Atmega

Gast #623516
Lesenswert?

Hallo
Ich hatte ja mal angefangen eine Temperaturanzeige mit dem Atmega8 und 
den DS1820 zu bauen, das funktioniert auch schon recht gut.

Nun hab ich mir noch überlegt, könnte man nun nicht gleich in dieses 
Projekt einen Betriebstundfenzähler mit einbauen?

Also ich dachte irgendwie das der Atmega jede Sekunde einen Zahlenwert 
erhöt, diesen Zahlenwert könnte man dann ja aus Sek in Stunden 
umrechenen?

Geht sowas? wie merkt sich der Atmega aber den Zahlenwert wenn ich das 
gerät ausschalte?

Bin Anfänger und hab mit der Suche nix gefunden.

Danke für die Hilfe
kollimann
#623532
Lesenswert?

Wenn du nen 32Bit Wert im EEPROM Speicherst und Minuten darin 
hochzählst, reicht der ne ganze Weile

Also über 8000 Jahre. Sollte reichen.
Wenn du aber immer dieselbe Speicherstelle nimmst, geht die irgendwann 
kaputt (->Datenblatt).

Also mehr Speicherstellen im EEPROM reservieren, und die Schreibzugriffe 
darüber verteilen.

/Ernst
Gast #623533
Lesenswert?

Hallo

es gibt verschiedene Möglichkeiten.

Eeprom wäre 1 Weg.

Aber: Muss es sekundengenau sein?

Selbst wenn man jede Eepromzelle (512Byte Eemprom angenommen) alle 
Sekunde beschreibt und das 100.000 mal ist nach gut 1,5 Jahren 
Betriebsdauer Schluss.

Je nachdem wie oft/lange das Gerät läuft ist das nicht sonderlich viel.


mfg Phil
Gast #623548
Lesenswert?

Nö also eigentlich muss es nicht Sekundengenau sein, ich dachte nur das 
dies der einfachste weg sei?

Ich weiß ja nicht wie ich sonst dem Atmega einen Zeit/Takt ablocken 
soll?

Naja evtl. könnte man ja erstmal einfach nur die Sekunden zählen lassen 
und erst nach 1min also 60sek ins Eeeprom schreiben? das spart schonmal 
60mal schreiben pro min.

Oder hab ich das jetzt Total falsch verstanden?
Gast #623554
Lesenswert?

genau so kannst du es machen, wenn du das gerät ausschaltest verlierst 
du max. 1min, und wenn es sich um einen BetriebsSTUNDENzähler handelt, 
gehe ich davon aus das eine Minute nicht sonderlich ins Gewicht 
fallen...

Dann kannst du einfach ne schleife machen und lässt jedes mal eine 
andere Speicherzelle beschreiben, beim ersten auslesen gehst du alle 
durch und suchst nach dem höchsten wert. Den benutzt du dann als 
referenz zum weiterzählen.

gruß,
#623565
Lesenswert?

Mach nen dicken Elko vor deine Schaltung, und lege den 
Versorgungsspannungseingang auf nen AD-Wandler.
Sobald die Spannung abfällt, sicherst du den Wert. (Der Strom hierfür 
muss vom Elko geliefert werden).
Die 100.000 Schreibzyklen errechnen sich dadurch nicht durch das 
Hochzählen, sondern durch die Ein/Aus-Quote.
Du könntest auch vorm Schreiben prüfen, ob nicht etwa schon dieselbe 
Zahl im EEprom steht... das spart auch wieder...
Gast #623566
Lesenswert?

Naja wobei mir ja dann eigentlich immer 1min fehlt wenn ich das Gerät 
nach 10,30min Laufzeit ausschalte.
Wenn man das 60mal macht fehlt schon 1 ganze Stunde auf dem 
Betriebsstundenzähler.

evtl. könnte man das mit einem Elko und einer Spannungsreferenz am 
Atmega "abfedern" ? so nach dem Motto fällt die Spannung unter ?V (würde 
ja bedeuten Gerät aus) dann schreibe den Wert ins Eeprom?

Würde sowas Sinn machen? Dann bräuchte ich ja dann auch nicht jede 
Minute ins Eeprom schreiben?
Gast #623584
Lesenswert?

Hi

ja Akku/Goldcap/Kondensator das ist dann die elegante Variante die aber 
etwas Hardwareaufwand/änderung erfordern würde.
Du brauchst dann einen ADC-Kanal oder n Comparator um die 
Versorgungsspannung zu überwachen. Vielleicht reicht auch ein 
Eingangspin. Aber das kommt auf deine Spannungsversorgungsschaltung an.
Unterschreitet die Spg einen bestimmten Wert speicherst du deinen 
Zählwert ins Eeprom.



mfg Phil
Gast #623600
Lesenswert?

Ja im Moment hab ich die Spannungsversorgung mit einem 7605 gemacht.
Eigentlich "so wie es oft beschrieben ist"

Als Überwachung sollte doch der AREF oder der AVcc Pin am Atmega8 gehen?

Ja nun müsste man das mal berechnen was wie groß der Elko sein müsste,
das LCD usw. brauch ich ja nicht mit rechnen ODER? Eigentlich gehts doch 
nur um die Spannung am Referenseingang?

Puh, naja obwohl, ich brauch ja den Strom auch noch zum schreiben und 
wenn am Referenseingang die Spannung sinkt brauch ja der Atmege trotzdem 
noch genug Saft um zu schreiben.

Oh oh, da hab ich mir wieder was ausgedacht.....
#623609
Lesenswert?

kollimann wrote:
> Ja im Moment hab ich die Spannungsversorgung mit einem 7605 gemacht.
> Eigentlich "so wie es oft beschrieben ist"
>
> Als Überwachung sollte doch der AREF oder der AVcc Pin am Atmega8 gehen?
>

Das ist schlecht, damit würdest du den Puffer überwachen.
Wenn der Puffer leer ist ist es zu spät.

Grüße
Björn
Gast #623611
Lesenswert?

Ich nutze einen Atmega8 L.......

naja werd mal was zusammen bauen, mal bissel testen, mal sehen ob ich 
was brauchbares hinbekommen.


Danke für die Hilfe

weiter Ideen und Vorschläge natürlich immer erwünscht
Gast #623615
Lesenswert?

@kollimann

schau dir mal die DS1307 bzw. DS1337 RTCs von Dallas Semiconductor an, 
die haben einen ca 32Byte großen NV-RAM (battery backuped), dann must du 
dir keine gedanken machen, ob du immer an die gleiche stelle im speicher 
schreibst wie beim eeprom.

alternativ könntest du das auch mit einer Binary Counter RTC (z.B. 
DS1672) machen. da wird im sekundentakt ein 32Bit wert hochgezählt.

http://datasheets.maxim-ic.com/en/ds/DS1672.pdf

die ganzen bausteine sind über I²C angeschlossen, gibts aber bestimmt 
mit SPI oder 1-Wire auch.

gruß
MAX
Gast #623631
Lesenswert?

Versteh ich das richtig?

Diese DS zählen allein Sekunden, Minuten usw, und wenn der Strom weg ist 
hören die auf zu zählen und merken sich den letzten Wert?
Wenn dann der Strom wiederkommt zählen die vom letzten Wert weiter?

Das wäre ja dann am einfachsten?
Gast #623734
Lesenswert?

@kollimann

stimmt, das hab ich gar nicht bedacht. wenn der strom weg ist, dann 
zählt er weiter. ich weiß nur, dass man den oszillator per software 
stoppen kann. man müsste schauen, obs so ein counter mit einem externen 
enable pin geben würde. den es wird nicht die beste lösung sein, den 
oszillator zu stoppen, wenn der uC keine spannung mehr hat. könnte man 
eventuell mit einem low voltage detector machen. manche PICs haben 
soviel ich weiß einen Interrupt für eine Low voltage protection.

vielleicht war das ja hilfreich für dich ;-)
MAX

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