www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Betriebsstundenzähler mit Atmega


Autor: kollimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: M.A.N (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wäre nett wenn du die prog. sprache angeben würdest.

Autor: Nealpotter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, irgendwo wird ein nicht-flichtiger Speicher sein muessen.... zB das 
EEPROM. Dort solte man allerding nicht immer dieselbe Speicherstelle 
incrementieren.

Autor: kollimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich experimentiere mit BASCOM

Wie groß könnte den der Wert im Eeprom eigentlich werden? wird der nich 
irgendwann mal voll?

Dankeschön

Autor: déjà vu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein im sekundentakt erhoehter unsigned 32-bit-wert wuerde nach 8171.55 
jahren ueberlaufen...

Autor: déjà vu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh, faktor 60 zuviel... also schon nach 136.19 jahren.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Phil (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kollimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß,

Autor: Björn Wieck (bwieck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst ja auch den ATMega mit einem kleinen Akku oder GoldCap 
puffern.
Wenn das Gerät dan ausgeschaltet wird kann das der AVR erkennen und den 
aktuellen Wert ins EEPROM schreiben und sich danach schlafen legen.

Grüße
Björn

Autor: Der Micha (steinadler)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: kollimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: kollimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh da waren einige schneller mit der Idee

Autor: Phil (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Du brauchst dann einen ADC-Kanal oder n Comparator um die
> Versorgungsspannung zu überwachen. Vielleicht reicht auch ein
> Eingangspin.

Sowas geht rein intern, ohne Eingang. AREF=Vcc, ADMux=Referenz. Liefert 
halt das inverse Ergebnis.

Autor: kollimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.....

Autor: Phil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich ging davon aus die Rohspannung zu überwachen, nicht die 5Volt-Seite.


mfg Phil

Autor: Nealpotter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und dann nimmt man den L-Typen, der werkelt bis auf 2.7V runter, oder 
einen P, der schreibt noch mit 1.8V

Autor: Björn Wieck (bwieck)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kollimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: MAX (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kollimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: kollimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als 1Wire wäre dann der DS 2417 geeignet?

Autor: MAX (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.