Änderungen

Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:  +
For the english version go to [[solar Arduino tracker]]
 
=Allgemeines=
 
=Allgemeines=
 
Für die Bestimmung des Sonnenstandes auf einem (ortsfesten) Microcontroller  
 
Für die Bestimmung des Sonnenstandes auf einem (ortsfesten) Microcontroller  
Zeile 8: Zeile 9:  
Microcontrollers Rücksicht nehmen und entsprechend adaptiert werden.
 
Microcontrollers Rücksicht nehmen und entsprechend adaptiert werden.
 
Bei Arduino gibt es beispielsweise das Problem, dass der Datentyp double  
 
Bei Arduino gibt es beispielsweise das Problem, dass der Datentyp double  
in Wirklichkeit nur mit Präzision von float rechnet (also 23 Bit Mantisse).
+
in Wirklichkeit nur mit Präzision float rechnet (also 23 Bit Mantisse).
    
==Die Zeit==
 
==Die Zeit==
[[Image:Arduino_DS1307.jpg|thumb|Zeitgeberbaustein DS1307]]
+
[[Image:Arduino_DS1307_FritzingExport.jpg|thumb|Zeitgeberbaustein DS1307 mit Arduino]]
 
Die Zeit (Greenwich Time aka UT) bestimme ich mit den DS1307 Baustein.
 
Die Zeit (Greenwich Time aka UT) bestimme ich mit den DS1307 Baustein.
 
Nach der Beschreibung von http://www.glacialwanderer.com/hobbyrobotics/?p=12
 
Nach der Beschreibung von http://www.glacialwanderer.com/hobbyrobotics/?p=12
Zeile 18: Zeile 19:     
==Berechnung von Azimut und Elevation==
 
==Berechnung von Azimut und Elevation==
[[Image:SonnenstandberechnerGUI.png|thumb|GUI zur Sonnenstandberechnung]]
+
Zur exakten Berechnung von Azimut und Elevation braucht man
Mit dem Programm Sonnenstandsberechner kann der jeweilige
+
relativ komplizierte Formeln, für praktische Zwecke
Sonnenstand (Azimut und Höhe) aus aktuellem Datum, Zeit und
+
wie sun tracking eines Heliostaten genügen aber
[http://de.wikipedia.org/wiki/Geographische_Koordinaten geographischen Koordinaten] berechnet werden.
+
auch einfachere.
Es befindet sich hier im wiki zum Download,
+
Für Solaranlagen hat sich der
benötigt Java 6, und läuft unter Windows, Linux und Mac.
+
[http://dx.doi.org/10.1016/S0038-092X(00)00156-0 PSA-Algorithmus]  
 +
vermutlich am besten bewährt. Er wird von der ''Plataforma Solar de Almeria'' (Spanien)
 +
[http://www.psa.es/sdg/sunpos.htm hier] als C++ Code zur Verfügung gestellt.
 +
Für Arduino sind allerdings Anpassungen notwendig. Insbesondere müssen die Formeln
 +
zur Berechnung des
 +
[http://de.wikipedia.org/wiki/Julianisches_Datum Julianischen Datums] modifiziert werden, damit
 +
dieser Tag trotz ''Arduinopräzision'' richtig heraus kommt.
   −
Nachträglich habe ich allerdings ein paar Zweifel an den Formeln
+
Für ältere Arduino IDE (0023 und früher) sollte folgendes Programm plus Libraries verwendet werden:
im Wiki bekommen und habe dort einen Diskussionspunkt angefangen. Bis zur endgültigen
+
{{zip|SolarTracker4Arduino.zip|14KB|Version from 09.03.2011}}
Klärung sollte dieses Programm und die generierten Daten
  −
als ''work in progess'' angesehen werden.
      +
Für neuere Arduino IDE (1.0.1 und höher) dagegen folgendes Package:
 +
{{zip|SolarTracker4Arduino1.0.1.zip|17KB|Version from 16.01.2015}}
 +
 +
Sobald man das alles zum Laufen gebracht hat, sollte man verifizieren,
 +
dass die Berechnungen stimmen, zum Beispiel
 +
mit dem [http://www.sunearthtools.com/dp/tools/pos_sun.php solar position calculator] von
 +
sun earth tools. (Achtung: SolarTracker4Arduino berücksichtigt keine Sommerzeit, UT muss eingestellt
 +
sein (beim Einstellen des Timer chips), als ob es sie nicht gäbe. Anderseits kann bei sun earth tools Sommerzeit
 +
berücksichtigt werden (Option DST ist defaultmäßig ausgewählt).
 +
 +
==Alternative Sonnenstandsberechnungen==
 +
===SPA Algorithmus===
 +
Ein wesentlich genauerer aber auch entsprechend komplizierterer Algorithmus
 +
ist die Methode nach Reda, I.; Andreas, A. (2003):
 +
''Solar Position Algorithm for Solar Radiation Applications. NREL Report No. TP-560-34302,
 +
''Revised January 2008. The algorithm is supposed to work for the years -2000 to 6000,
 +
''with uncertainties of +/-0.0003 degrees.''
 +
Ich habe Referenzen und Code bei [http://klaus.e175.net/solarpositioning Klaus Brunner] gefunden.
 +
Dank dieser Sourcen bin ich auch auf PSA aufmerksam geworden.
 +
===Wikipedia Sonnenstand===
 +
Die Berechnung nach den Formeln im Wikipediaartikel [http://de.wikipedia.org/wiki/Sonnenstand Sonnenstand]
 +
konnte ich nicht verifizieren. (Stand Februar 2011).
 +
Ich habe die Formeln im hier vorliegenden Javaprogramm nachvollzogen, alle Zwischenergebnisse
 +
und auch das Endergebnis des Wikiartikels kommt richtig raus; allerdings eben nur für das eine
 +
angegebene Beispiel, bei anderem Datum, Tageszeit oder Ort kommen Werte raus, die
 +
nicht mehr mit [http://www.sunearthtools.com/dp/tools/pos_sun.php?lang=de sunearthtools]
 +
zusammen stimmen.
 +
 +
Zur Kontrolle belasse ich das Programm online.
 
{{zip|Sonnenstandsberechner.zip|27KB|Version vom 06.02.2011}}
 
{{zip|Sonnenstandsberechner.zip|27KB|Version vom 06.02.2011}}
Sourcecode inkludiert, der wichtige Kern ist die Java-Klasse
+
Sourcecode inkludiert, der Kern ist die Java-Klasse
SunCalculations, nützlich als Library beziehungsweise zum Nachschlagen
+
SunCalculations. Die (ebenfalls inkludierten) Junit-Tests sind mit den Beispieldaten
der Formeln, wenn man ein sun-tracker device bauen will
  −
(zum Beispiel einen Heliostat oder einen Fresnelreflektor)
  −
Der Sourcecode und Versionsgeschichte steht auch auf
  −
http://code.google.com/p/solar-position zur Verfügung.
  −
 
  −
Die Grundlage für die Algorithmen sind die
  −
Formeln aus http://de.wikipedia.org/wiki/Sonnenstand.
  −
Die (ebenfalls inkludierten) Junit-Tests sind mit den Beispieldaten
   
ausgearbeitet die auf dieser Page angegeben sind, Gleitkomma-Berechnungen
 
ausgearbeitet die auf dieser Page angegeben sind, Gleitkomma-Berechnungen
 
sind generell mit double implementiert.
 
sind generell mit double implementiert.
Zeile 46: Zeile 72:  
nehme ich den Algorithmus aus http://en.wikipedia.org/wiki/Julian_day.
 
nehme ich den Algorithmus aus http://en.wikipedia.org/wiki/Julian_day.
   −
Der Formelautor der Sonnenstand-Page weist darauf hin, dass es sich um
+
[[Category:Projekte]]
Näherungen handelt, die aber trotzdem fast immer eine Genauigkeit von
  −
0.01° erreichen (für Zeitraum 1950 bis 2050); also für die meisten praktischen
  −
Zwecke ausreichend. Der Autor referenziert auch auf genauere
  −
(aber wesentlich kompliziertere) Berechnungen;
  −
[http://de.wikipedia.org/wiki/VSOP87 Planetentheorie VSOP87].
 
33

Bearbeitungen

Navigationsmenü