Sonnenaufgang

OP #1059937
Hallo User,

hoffentlich kann mir hier jemand weiter helfen. Ich versuche den
Zeitpunkt des Sonnenaufgangs und des Sonnenuntergangs zu ermitteln.
Leider berechnet mir mein ATMega 32 nicht den erwuenschten Wert. Hab es
manuell nachgerechnet und komme auf in etwa eine Stunde Unterschied zu
dem Ergebnis des Mikrocontrollers.

Sieht jemand auf Anhieb den Fehler. Wuerde mich freuen wenn mir hier
jemand weiterhelfen kann! Alle Variablen sind als float deklariert.

Gruss
Daniel



void sunset(void)
{
  unsigned int dd;

  b=3.141592654*(-26.4)/180;
  hh=-0.1145;

  dekli=0.4095*sin(0.016906*(330-80.086));

  timedifferenz=12*acos((sin(hh)-sin(b)*sin(dekli))/(cos(b)*cos(dekli)))/3 
.141592654;

  realtime=12-timedifferenz;

  sunrisetime=realtime+(15-28.08)*4/60;
Ich würde auch auf die math.h setzen. Berechne lieber die meisten Werte 
im Vorraus und nur das nötigste in der Routine. Dann gibts weniger 
Fehler.

Mit welchem Rechner rechnest du. Hast du nicht vergessen auf RAD 
umzustellen, und nicht mit DEG zu rechnen?
Gast
Da sind einige Integer-Konstanten drin - schreib die mal als Float, also 
z.B. anstelle 180 eine 180.0
Könnte sein, dass der Compiler das nicht richtig casted.
OP
@ Benjamin  Wo stell ich den Rechner auf Rad um. Ich dachte math.h 
rechnet schon in Rad. Weiterhin kann ich nicht viel vorher berechnen, da 
die Tage (hier sind es 330Tage) sich ja aendern und dann alles wieder 
neu berechnet werden muss.

Die Umschreibung in float hat leider nichts bewirkt.

Danke schon mal!!!!

Gruss
Daniel
Persönliche Seite
Die Deklination ist offenbar konstant --> Ausrechnen und Konstante ins 
Programm eintragen. Rumrechnen vergrößert nur die Ungenauigkeit. 
Gleiches gilt für ihre sin- und cos-Werte und 12/pi

d.h. anstatt

Berechnest du

...und das gilt auch für b

Was an der Formel ist denn überhaupt variabel? Nur hh ? In dem Fall 
wäre zu berechnen
Die Rechnung mit RAD führt die math.h richtig aus.
Ich meine ob du in deinem Taschenrechner oder in Windowsrechner oder 
auch unter Linux mit kcalc usw. den richtigen Modus für die Verifikation 
eingestellt hast.
Oder liefert nur das Programm fehlerhafte Werte.
Moin Daniel

Daniel K. wrote:
> Danke an alle. Ich hab das Problem wieder mal mit eurer Hilfe geloesst.
> Ich hab teilweise eure Ratschlaege umgesetzt und die Genauigkeit der
> Werte erhoeht und nun ist die Rechnung Praezise.

Ich bin auch gerade auf der Suche nach einer entsprechenden 
Berechnungsroutine. Kannst du deine Routine eventuell zur Verfuegung 
stellen oder mir zumindest privat zuschicken?
Tausend Dank.

Gruss Ansgar

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.