Betriebsstundenzähler

Hallo ich möchte mit meinem Arduino einen Betriebsstundenzähler programmieren, weiß allerdings nicht wie. Am Eingang liegt eine Gleichspannung von 5V an. Wenn diese anliegt soll der Arduino zählen bzw. weiterzählen. Ich möchte dass dieser Zähler bis 99 Stunden zählt und anschließend ein Signal am Ausgang ausgibt. Ebenso soll er jede Minute in die EEPROM speichern da es immer passieren kann dass die Spannungsversorgung unterbrochen wird.

Vielen dank führ die Antworten.

Wenn es genau werden soll, nimmt man besser eine RTC dafür. Es geht theoretisch auch ohne, aber dann hat man auf lange Zeit die Ungenauigkeit des Oszillators in der Zählungs. Und das ist auf den Standard-Boards nichtmal ein Quarz

Kuntner: Hallo ich möchte mit meinem Arduino einen Betriebsstundenzähler programmieren, weiß allerdings nicht wie. Am Eingang liegt eine Gleichspannung von 5V an. Wenn diese anliegt soll der Arduino zählen bzw. weiterzählen. Ich möchte dass dieser Zähler bis 99 Stunden zählt und anschließend ein Signal am Ausgang ausgibt. Ebenso soll er jede Minute in die EEPROM speichern da es immer passieren kann dass die Spannungsversorgung unterbrochen wird.

Also Du möchtest mit einer Auflösung von einer Minute bis 99 Stunden(99*60= 5940 Minuten zählen.

Und danach soll wieder von 0 an gezählt werden?

Wie oft insgesamt während der geplanten Lebensdauer des Geräts?

Viele wiederbeschreibbare Speicher wie EEPROM-Speicherstellen sind NICHT beliebig oft beschreibbar, sondern z.B. nur zehntausend oder hunderttausend mal.

Ggf. müßtest Du also aufpassen, das EEPROM nicht durch ständiges Wiederbeschreiben derselben Speicherstellen kaputtzuschreiben, oder einen Speichertyp zum Speichern verwenden, bei dem die Anzahl der Schreibvorgänge keine nennenswerte Begrenzung darstellt.

Wie oft insgesamt während der geplanten Lebensdauer des Geräts?

Atmel garantiert mindestens 200 solcher 6000 Minuten - Zyklen je Zähler, das ist zwar nicht ewig, aber auch nicht wenig. Wenn dein Signal ca. 50% an ist, dauern 99 Stunden ca. 4Tage. Das Ganze also weit über 1 bis gut 2 Jahre. (übliche Gewährleistungszeit) oops: Da habe ich mich um eine Zehnerpotenz verschätzt ( Also eher nur zwei Monate als 2 Jahre )

Die 56 Byte gepuffertem RAM einer DS1307 RTC wäre eine einfache Alternative.

Mit der genaueren DS3231 könnte man die Alarm-Register als Zwischenspeicher für den letzten Signal-Wechsel nehmen und den EEPROM nur bei Signal-Wechsel schreiben. Dann würde bei Spannungsunterbrechung die Zählung nicht gestoppt, sondern ggfls. weiterlaufen. (Was ist besser?) Oder du missbrauchst einfach die Alarm-Register als Zähl-Register...

Oder die Spannungsversorgung überwachen und ausreichend puffern, so dass es noch für ein Sichern im EEPROM bei Spannungsausfall reicht.

michael_x: Mit der genaueren DS3231 könnte man die Alarm-Register als Zwischenspeicher für den letzten Signal-Wechsel nehmen und den EEPROM nur bei Signal-Wechsel schreiben. Dann würde bei Spannungsunterbrechung die Zählung nicht gestoppt, sondern ggfls. weiterlaufen. (Was ist besser?) Oder du missbrauchst einfach die Alarm-Register als Zähl-Register...

Der DS3232 hat Bateriegebuffertes RAM, ist ansonsten gleich dem DS3231. Grüße Uwe

Ich glaub eher dass der Neuling ein Code sehen möchte als diese Diskussion :wink:

skorpi08: Ich glaub eher dass der Neuling ein Code sehen möchte als diese Diskussion ;)

Wahrscheinlich schon, aber Du kennst ja unseren Standpunkt. Grüße Uwe