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 28: |
Zeile 29: |
| Für Arduino sind allerdings Anpassungen notwendig. Insbesondere müssen die Formeln | | Für Arduino sind allerdings Anpassungen notwendig. Insbesondere müssen die Formeln |
| zur Berechnung des | | zur Berechnung des |
− | [http://de.wikipedia.org/wiki/Julianisches_Datum Julianischen Datums] modifiziert werden, sodass | + | [http://de.wikipedia.org/wiki/Julianisches_Datum Julianischen Datums] modifiziert werden, damit |
− | dieser Tag trotz ''Arduinopräzision'' richtig heraus kommt. | + | dieser Tag trotz ''Arduinopräzision'' richtig heraus kommt. |
| + | |
| + | Für ältere Arduino IDE (0023 und früher) sollte folgendes Programm plus Libraries verwendet werden: |
| + | {{zip|SolarTracker4Arduino.zip|14KB|Version from 09.03.2011}} |
| + | |
| + | 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== | | ==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=== | | ===Wikipedia Sonnenstand=== |
| Die Berechnung nach den Formeln im Wikipediaartikel [http://de.wikipedia.org/wiki/Sonnenstand Sonnenstand] | | Die Berechnung nach den Formeln im Wikipediaartikel [http://de.wikipedia.org/wiki/Sonnenstand Sonnenstand] |
− | scheint fehlerhaft zu sein. (Stand Februar 2011)
| + | konnte ich nicht verifizieren. (Stand Februar 2011). |
− | Einige (Diskussions)Autoren haben kritische Anmerkungen hinterlassen, die zum Teil unbeantwortet und
| + | Ich habe die Formeln im hier vorliegenden Javaprogramm nachvollzogen, alle Zwischenergebnisse |
− | -bearbeitet geblieben sind.
| + | und auch das Endergebnis des Wikiartikels kommt richtig raus; allerdings eben nur für das eine |
− | [[Image:SonnenstandberechnerGUI.png|thumb|GUI zur Sonnenstandberechnung]]
| + | angegebene Beispiel, bei anderem Datum, Tageszeit oder Ort kommen Werte raus, die |
− | Ich habe das Programm Sonnenstandsberechner nach diesen Formeln entwickelt, | + | nicht mehr mit [http://www.sunearthtools.com/dp/tools/pos_sun.php?lang=de sunearthtools] |
− | es kann (theoretisch) der jeweilige
| + | zusammen stimmen. |
− | Sonnenstand (Azimut und Höhe) aus aktuellem Datum, Zeit und
| |
− | [http://de.wikipedia.org/wiki/Geographische_Koordinaten geographischen Koordinaten] berechnet werden. | |
| | | |
− | Als ich aber die Ergebnisse mit den Daten auf
| + | Zur Kontrolle belasse ich das Programm online. |
− | [http://www.sunearthtools.com/dp/tools/pos_sun.php?lang=de sunearthtools]
| |
− | verglichen habe, kommt es ''nur für das eine Beispiel'' im Wikipediaartikel richtig raus.
| |
− | Zur Kontrolle belasse ich das Programm aber vorläufig 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 (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 61: |
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. |
| | | |
− | ==SPA Algorithmus==
| + | [[Category:Projekte]] |