Zeitschaltuhr

Hi.

ich stehe grade vor einem mathematischen problem.

Baue grade eine zeitschaltuhr für den 12v betrieb an einer autobatterie.

da die autobatterie ja irgendwann leer ist kommt es eben häufig vor das der strom weg ist und der arduino somit nicht dauerhaft strom hat.

die schaltzeiten habe ich deswegen schon im EEPROM gespeichert und lese die beim neustart dann wider aus.

jetzt das eigentliche problem.

wenn ich dem arduino sage um 12:00 bitte einschalten und um 13:00 wieder aus
aber erst um 12:05 der strom wider da ist hat er ja den einsachltinterval verpasst.

nur wie rechne ich die zeit so um das ich dem arduino sagen kann

if (zwischen 12:00 und 13:00 ) { HIGH } else { LOW }

noch ein paar infos

-Arduino Mega 2560
-time Library
-dcf77 modul (ohne die library. hab mir da was eigenes geschrieben)

Grüße

Die einfachste Verfahrensweise bei Zeitschaltungen ist die Abkehr vom Stunden-Minuten-Modell hin zu Minuten seit Mitternacht. Wenn der Ausgang zwischen 12:00 Uhr und 13:00 Uhr schalten soll, fragst du einfach ab, ob die jeweilige Minutenzahl zwischen 720 (=12x60) und 780 (=13x60) liegt. Wenn es Sekundengenau werden soll, kann man das natürlich auch mit nem zusätzlichen Faktor 60 machen.

klingt gut hatte ich auch schon drüber nachgedacht.

aber dann bekomme ich ja probleme bei schaltzeiten von z.B. 22:00 - 01:00 !?!?

oder hab ich da jetzt einen denkfehler?

In dem Fall zerlegst du einfach dein Schaltintervall von 22-24 Uhr (1320 bis 1440) und 0-1 Uhr (0 bis 60).

ok das gibt dann halt etwas mehr code...
aber der mega hat ja platz :slight_smile:

danke

Ich würde auf alle Fälle ein RTC modul mit dcf77 synchronisiert und nicht nut ein dcf77 alleine nehmen.

Mir scheint es etwas utopisch daß Du die Autoatterie so oft kontrollierst daß Du nur 1 Einzyklus nachholen mußt.

Überdenke bitte nochmal die logik mit der Du Ausfallzeiten entgegenwirken willst.

Grüße Uwe

das ding ist für einen kleinen hühner mobil stall in dem licht und ein paar andere spielerreien gesteuert werden. die warscheinlichste ausfallzeit ist wohl das wechseln der batterie. und danach soll einfach ohne irgendwelche einstellungen alles wider wie vorher laufen. andere vergleichbare fertige uhren verbrauchen
leider mehr als das doppelte. also wirke ich der ausfallzeit bereits entgegen.

aber danke für den hinweis.

nur wozu die rtc? in meinen augen nur ein zusätzlicher verbraucher...

nur wozu die rtc? in meinen augen nur ein zusätzlicher verbraucher

Braucht mit Abstand am wenigsten Strom für die Aufgabe, die Zeit ziemlich genau zu zählen.

Eine CR2032 hält ein paar Jahre. Deine Autobatterie unendlich lang, denn die entlädt sich selbst so schnell, dass es keinen Unterschied macht ob eine RTC dran hängt oder nicht.

Wenn's dir um Stromverbrauch geht, ist die DCF77 für mich fragwürdiger.

DCF77 hat relativ schnell mal Empfangsprobleme und gegenüber einer RTC einen größeren Verbrauch.

@michael_x
Die Batterie ist für den standby-Betrieb bei denen eine RTC deutlich unter 1µA verbraucht. Bei Betrieb verbraucht sie schon mehr. Die DS1307 bis zu 1,5mA die DS3231 bis zu 0,6mA.

Grüße Uwe

Die Batterie ist für den standby-Betrieb bei denen eine RTC deutlich unter 1µA verbraucht.

Auch da läuft die Zeit weiter !
Klar, wenn I2C in Betrieb ist und die Uhrzeit dauernd gelesen wird, ist der Verbrauch höher. In meinem maxim-Datenblatt braucht eine DS3231 im active Modus 300 µA bei 5V Vcc.

Stromverbrauch minimieren bedeutet, den µC möglichst lange tief schlafen lassen.

Bei minutengenauer Schaltzeiten genügt es 1x die Minute die Zeit kontrollieren. Dann ist eine DCF77 aber ungeeignet da diese dauernd (1x pro Sekunde) ein Datensignal gibt das ausgewertet werden muß. Da ist eine RTC im Mittelwert nochmal sparsamer.

Aber gegenüber Licht und anderen Spielereien fällt der Stromverbrauch des Arduino bzw der RTC nicht ins Gewichet.

Viele Grüße Uwe