www.mikrocontroller.net

Forum: Projekte & Code Berechnuing der Sonnenaufgangs und Untergangszeiten


Autor: Christian J. (elektroniker1968)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anbei mal ein Codeschnipsel, ist fast auf die Minute genau das ganze 
Jahr.
Compiler GCC, müste nur gering angepasst werden. Ergebnisse stehen im 
Sonnen_AUF_UNTER Struct als Ganzahlen und floats.

Voraussetzung: RTC schreibt laufend aktuelle Uhrzeit im Typ:
zeit_t Zeit;

typedef struct
{
  uint32_t  stunde,
        minute,
        sekunde,
        tag,
        monat,
        jahr,
        wtag,
        jahrtag;
} zeit_t;




Aufruf mit

tage = CalcDayOfYear(&Zeit);    // Tag des Jahres ausrechnen
CalcSonnenAufgang(&Zeit, &Sonnen_AUF_UNTER,tage);

Autor: UBoot-Stocki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

lass mich raten - Du wohnst in Kaarst ;-)

Gruß

Andreas

Autor: Christian J. (elektroniker1968)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bingo, die Geokoordinaten verraten es :-)

Und da meine Frau und die Kinder auf "Malle" sind habe ich ganz viel 
Zeit fürs Hobby :-)

Autor: Christian J. (elektroniker1968)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt exakt.

Autor: Uboot- Stocki (uboot-stocki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich verwende in meiner Rolladensteuerung einen ähnlichen Algorithmus 
(Kommt auf die selben Werte). Allerdings beobachte ich, dass es zum 
Zeitpunkt des errechneten Sonnenaufgangs schon hell, bzw. zum Zeitpunkt 
des Sonnenuntergangs es noch nicht dunkel ist.

Ich habe mit schon überlegt eine additive Konstante einzubauen. 
Allerdings frage ich mich wie das bei "professionellen" Geräten gelöst 
wird ?!

Gruß

Andreas

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uboot- Stocki schrieb:
> Hi,
>
> Ich verwende in meiner Rolladensteuerung einen ähnlichen Algorithmus
> (Kommt auf die selben Werte). Allerdings beobachte ich, dass es zum
> Zeitpunkt des errechneten Sonnenaufgangs schon hell, bzw. zum Zeitpunkt
> des Sonnenuntergangs es noch nicht dunkel ist.
>
> Ich habe mit schon überlegt eine additive Konstante einzubauen.
> Allerdings frage ich mich wie das bei "professionellen" Geräten gelöst
> wird ?!

Hi, vielleicht interessiert folgendes kleines Projekt in Java?
   http://www.qcontinuum.org/compass/

Ich hab das auf meinem Händi, als Kompass.

Neben dem Sonnen- und Mondstand kann man auch anzeigen lassen, wann 
Mond- und Sonnenauf und -untergang sind, ausserdem die Zeiten für 
"Zivile Dämmerung", "Nautische Dämmerung" und "Astronomische Dämmerung".

Für dich wäre dann wohl die "Zivile Dämmerung" interessent.

Das Tool von Dana Peters ist nett. Zum Code und zum Algorithmus kann ich 
nichts sagen. Jedenfalls kommt's gut hin mit dem Dämmern.

Fehlt nur noch die Zeit für "Götterdämmerung" :-)

Johann

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian J. schrieb:
> Stimmt exakt.

Ob der ARM mit den Berechnungen nicht überfordert ist? ;)

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Allerdings beobachte ich, dass es zum
>Zeitpunkt des errechneten Sonnenaufgangs schon hell, bzw. zum Zeitpunkt
>des Sonnenuntergangs es noch nicht dunkel ist.

Kann es daran liegen, dass der Zeitpunkt "Sonnenuntergang" astronomisch 
betrachtet, der Zeitpunkt ist, wo der Mittelpunkt der Sonne den Horizont 
berührt?

Dann ist es selbstverständlich noch nicht dunkel bzw. schon hell.

Autor: Uwe Nagel (ulegan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hatte da mal ein Programm, das unterschied zwischen
offizieller -0° 50'
bürgerlicher oder ziviler -6°
nautischer -12° und zuletzt
astronomischer Dämmerung mit -18°.
Gemeint ist die Höhe der Sonnenmitte.

Im hier verwendeten Programm lässt sich das wohl mit der Zeile

    #define hoehe   -0.0145     // Sonnenhöhe in RAD

einstellen.

Rechnet man mit dem Wert für die Offizielle Dämmerung, erhält man die 
Werte, wie sie in der Zeitung oder im Himmelsjahr angegeben werden.
Nimmt man die Werte für die bürgerliche Dämmerung, erhält man die 
Zeiten, zu denen es gefühlsmässig hell bzw. dunkel wird.
Die Seefahrer sehen den erhellten Himmel früher, und für Astronomen muss 
es richtig finster sein...

Siehe auch:
http://de.wikipedia.org/wiki/B%C3%BCrgerliche_D%C3%A4mmerung

Uwe

Autor: Christian J. (elektroniker68)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich sehe da noch einen Fehler:

Da es ursprünglich für einen DS1306 geschrieben wurde, die die 
Jahreszahl zweistellig hat muss das zB für den Arm, der zb 2009 intern 
stehen hat angepasst werden, d.h. es müssen 2000 vom Jahr abgezogen 
werden, sonst zeigt der Zabellenzeiger ins Leere.
uint32_t IsSommerzeit(zeit_t *zeit)
{
    #define MONAT_SZ_BEGINN     3
    #define MONAT_SZ_ENDE       10

    // Sommerzeiten 2000 - 2019, Beginnend im März, endend im Oktober
    const uint8_t som_zeit_start[20] = {26,25,31,30,28,27,26,25,30,29,28,27,25,31,30,29,27,26,25,31};
    const uint8_t som_zeit_ende [20] = {29,28,27,26,28,30,29,28,26,25,31,30,28,27,26,25,30,29,28,37};

    // Alles > März und < Oktober ist Sommerzeit
    if ( (zeit->monat > MONAT_SZ_BEGINN) && (zeit->monat < MONAT_SZ_ENDE) )
        return (1);

    // März anschauen
    if ( (zeit->monat == MONAT_SZ_BEGINN) && (zeit->tag >= som_zeit_start[zeit->jahr]) )
        return 1;

    // Oktober anschauen
    if ( (zeit->monat == MONAT_SZ_ENDE) && (zeit->tag < som_zeit_ende[zeit->jahr]) )
        return 1;

    return 0;
}

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.