Forum: Compiler & IDEs Algortihmus für Sonnenauf- und untergang gesucht


von UBoot-Stocki (Gast)


Lesenswert?

Hi,

ich bin auf der Suche nach einem Algorithmus zur Berechnung der 
Sonnenauf- und untergangszeit.

Hat jemand sowas schonmal auf einem AVR gemacht? Kennt jemand eine 
Beschreibung des Algortihmus ?

Gruß

Andreas

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

http://de.wikipedia.org/wiki/Sonnenaufgang
Weblinks: Berechnung von Tageslängen und Dämmerungsdauer in Abhängigkeit 
von Breitengrad und Tag im Jahr. Herleitung der Formeln.

http://herbert.gandraxa.com/herbert/lod.asp
http://www.mzmsoft.de/sheets/sasu_1.htm

da gibts  "bürgerliche" Dämmerungszeiten

von Kai G. (runtimeterror)


Lesenswert?

Ist ansonsten mit grundlegenden Geometrie-/Astronomiekenntnissen selbst 
herleitbar - sind einfach zwei überlagerte Sinusschwingungen (Jahr und 
Tag). Wenn du die richtig zusammenfügst ist das eine einfache Abfrage 
des Vorzeichens, ob es Tag oder Nacht ist.

Gruß

Kai

von Christoph db1uq K. (christoph_kessler)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?


von UBoot-Stocki (Gast)


Lesenswert?

Moin,

alles klar - vielen Dank an alle!

Gruß

Andreas

von UBoot-Stocki (Gast)


Lesenswert?

Moin,

wenn ich diese Formelmonster so sehe, frage ich mich ob ich das meinem 
Mega16 antun will. Folgendes habe ich mir überlegt:

So wie ich das sehe, hängt das Ergebnis (Sonnenauf- und Untergang) nicht 
vom Jahr ab. D.h. die Zeiten sind jedes Jahr gleich!

Wenn ich mich jetzt damit zufrieden gebe, dass ich nur jede Woche die 
Schaltzeiten anpasse (Es geht um meine Rolladensteuerung, die 
automatisch bei Sonnen-aufgang die Rolläden offnen bzw. bei -untergang 
schliessen soll) habe ich nur 52 verschiedene Start- und Schlieszeiten.

Mit ein bischen zusätzlichem Code komme ich auf eine 52-zeilige Tabelle 
mit 2 Spalten macht ein paar hundert Byte im Flash.

Ist so eine Tabellenorientierte Lösung nicht einfacher, schneller und 
evtl. sogar noch kürzer als wenn ich die Formelmonster der Links mit 
Floatingpoint-Variablen, Sinus, Cosinus etc. umsetze ???

Wer hat hier Erfahrung? Eine Meinung ?

Gruß und Danke

Andreas

von Karl H. (kbuchegg)


Lesenswert?

UBoot-Stocki wrote:

> wenn ich diese Formelmonster so sehe, frage ich mich ob ich das meinem
> Mega16 antun will.

Na ja. So schlimm ist es dann auch wieder nicht.
Du kriegst von Atmel für nicht benötigten Flash kein Geld zurück :-)

> Wer hat hier Erfahrung? Eine Meinung ?

Solange du das nur für dich baust, ist eine Tabellenlösung
sicher mehr als ausreichend.

Wenn du das aber kommerziell vertreiben willst, brauchst du
die Formeln. Die Auf und Untergangszeiten sind am gleichen
Tag in Rom nun mal anders als in Hamburg.

Implementiere es so, wie es für dich am einfachsten ist.
Ich würde die Formeln nehmen.
Grund: die 5 Formeln einmal abzutippen geht (für mich) allemal
schneller als das ganze in Excel abzutippen, eine Tabelle zu
erstellen, diese Tabelle abspeichern, in den C Code zu übernehmen
und den Tabellenzugriff zu programmieren. Da ist es mir doch
lieber der Mega rechnet einmal am Tag was ordentliches aus
anstatt nur so vor sich hinzudösen. Er hat ja Zeit. :-)

von Uwe N. (ulegan)


Angehängte Dateien:

Lesenswert?

Ich habe mal den hier
http://williams.best.vwh.net/sunrise_sunset_algorithm.htm
angegebenen Algoritmus angepasst.
Die errechneten Werte weichen von den im 'Himmelsjahr' gelisteten Zeiten 
um +-1 Minute ab, was wohl mit Rundungseffekten zu tun hat.
Auf einem Mega32 belegt der Code (ohne die Math-lib) 1284 Byte.

Gruß Uwe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.