2-achsiger Solartracker, gesteuert mit astronom. Formeln
Verfasst: 16 Feb 2018, 13:22
Hallo,
ich möchte euch hier einen mit fischertechnik gebauten 2-Achs-Solartracker vorstellen,
der von einem Arduino-Uno-Mikrocontroller gesteuert wird.
Zur Positionierung werden hier - im Gegensatz zu vielen anderen Umsetzungen - keine lichtempfindlichen Widerstände eingesetzt,
sondern astronomische Sonnenstandsformeln, die nur den Breiten- und Längengrad, den Tag im Jahr und die "wahre Sonnenzeit" (oder UTC-Zeit) als Input benötigen.
Eingesetzt werden für die Verstellung des Höhenwinkels (Elevation) ein Longruner-180-Grad-Modellbauservo,
und für den Horizontalwinkel (Azimut) ein Pololu-Schrittmotor, der über ein fischertechnik-Schneckengetriebe
ein waagerecht lagerndes Stirnrad mit aufmontiertem Solarpanel antreibt.
Ein 10-Gang-Drehpotentiometer (20 kOhm) liefert die aktuelle Azimutposition (Istwert) des Solarpanels
an einen Analogeingang des Arduinos. Diese Position wird ständig mit der berechneten astronomischen Azimutposition
(Sollwert) verglichen.
Ist der Istwert kleiner als der Sollwert, dreht der Schrittmotor vorwärts.
Ist der Istwert größer als der Sollwert, dreht der Schrittmotor rückwärts.
Die Anzahl der Schritte (steps) beträgt jeweils 3 , sie kann aber bei Bedarf angepasst werden.
Auf diese Weise steht das Solarpanel (mit etwa +- 1-2 Grad Abweichung) immer exakt zur horizontalen Sonnenrichtung (Azimut).
Der Schrittmotor läuft bei der Positionseinstellung im MICROSTEP-Modus; nur beim schnellen Rücklauf von NW nach NO (s. unten) läuft er im DOUBLE-Modus.
(Grundsätzlich könnte statt eines Steppermotors auch ein normaler DC-Motor eingesetzt werden, aber die Positionsbestimmung
verläuft damit wesentlich unruhiger und nicht so exakt).
Der Höhenwinkel (Elevation) wird vom Servomotor unter Umsetzung des berechneten astronomischen Wertes direkt angesteuert,
so dass sich das Solarpanel immer optimal zur Sonneneinstrahlung neigt.
Abends beim Erreichen der NW-Position erfolgt nach Sonnenuntergang (Elevation = 0) ein schneller Rücklauf des Solarpanels nach NO.
Dort bleibt das Solarpanel "in Nullstellung" stehen bis zum Sonnenaufgang des nächsten Tages, womit ein neuer Tageszyklus beginnt
und die Positionen wieder wie beschrieben angefahren werden.
NW statt West und NO statt Ost wird deswegen genommen, weil am 22. Juni die Sonne im NO aufgeht und im NW untergeht.
Es ist aber auch sinnvoll, statt der Azimutwerte den Elevationwert als Kriterium zu nehmen.
Der Elevationwert ist = 0 (Zeitpunkt ist jahreszeitenabhängig!), wenn die Sonne abends gerade untergegangen ist bzw. morgens gerade noch nicht aufgegangen ist.
Allerdings wird bei dieser Methode die diffuse Helligkeit direkt vor Sonnenaufgang bzw. direkt nach Sonnenuntergang für die Solarstromerzeugung nicht effizient genutzt).
Die Aktualisierung der beiden Positionen Elevation und Azimut erfolgt ca. alle 3 sec (variierbar), Datum und Uhrzeit liefert ein RTC-Echtzeituhr-Modul.
Auf einem 20 x 4-LCD-Display werden die wichtigsten Parameter (Datum und Uhrzeit, Tag im Jahr, Azimut (Sollwert), Azimut (Istwert), Elevation, Spannung des Solarpanels,
Himmelsrichtung, Tageslänge, Tag im Jahr und die Drehrichtung des Schrittmotors) angezeigt.
Das Steuerprogramm liegt als Arduino-Sketch (ähnlich C / C++ Code) vor.
Es kann von meiner Website kopiert und direkt in die Arduino-Entwicklungsumgebung eingefügt werden.
Aktuelle Änderungen: Nun wird durch 2 LED angezeigt, ob sich das Solarpanel vorwärts (grün) oder rückwärts (rot) dreht.
Dazu werden 2 Digitalausgänge des Arduino verwendet.
Statt des Potentiometerwertes (Pot) wird an dieser Stelle nun der aktuelle Spannungswert am Solarpanel angezeigt.
Das Solarpanel liefert max. 3 Volt und passt daher zum Spannnungsbereich eines Arduino-Analogeingangs (0 - 5 Volt).
Hardware-Liste:
. Arduino-Uno-Mikrocontroller (REV)
· AZDelivery-DataLogger-Shield mit SD-Card-Slot und DS3231-RTC-Echtzeituhr
· Adafruit-Motor-Shield v2.3 (Anschlüsse für 4 DC-Motoren oder 2 Steppermotoren und 2 Servos)
· POLOLU-1207-Stepper-Motor 7.4 VDC (wird bei höherer Spannung sehr heiss!)
· Longruner-17kg-Digital High-Torque Robot-Servo-Motor 7.5 VDC (versagt bei kleineren Spannungen den Dienst)
· SainSmart IIC/I2C/TWI Serial 2004 Character 20x4 LCD Display Modul 5 VDC (funktioniert nicht zusammen ??? mit der Datenaufzeichnung auf SD-Card)
· 10-Gang-Drehpotentiometer R = 20 kOhm
· diverse Fischertechnik-Bauteile (ohne fischertechnik-Motoren, ohne TXT-Steuereinheit)
· 1 rote und 1 grüne Leuchtdiode, 1 x 100-Ohm-Widerstand.
Mehr Informationen, Bilder und den Arduino-Programmcode gibt es unter
http://www.mi-schu.de/solartracker.htm.
Mehr dazu bzw. Änderungen und Verbesserungen demnächst hier in diesem Forum.
Für Rückmeldungen, Kritik, Anregungen und Verbesserungsvorschläge bin ich immer sehr dankbar.
mischu
ich möchte euch hier einen mit fischertechnik gebauten 2-Achs-Solartracker vorstellen,
der von einem Arduino-Uno-Mikrocontroller gesteuert wird.
Zur Positionierung werden hier - im Gegensatz zu vielen anderen Umsetzungen - keine lichtempfindlichen Widerstände eingesetzt,
sondern astronomische Sonnenstandsformeln, die nur den Breiten- und Längengrad, den Tag im Jahr und die "wahre Sonnenzeit" (oder UTC-Zeit) als Input benötigen.
Eingesetzt werden für die Verstellung des Höhenwinkels (Elevation) ein Longruner-180-Grad-Modellbauservo,
und für den Horizontalwinkel (Azimut) ein Pololu-Schrittmotor, der über ein fischertechnik-Schneckengetriebe
ein waagerecht lagerndes Stirnrad mit aufmontiertem Solarpanel antreibt.
Ein 10-Gang-Drehpotentiometer (20 kOhm) liefert die aktuelle Azimutposition (Istwert) des Solarpanels
an einen Analogeingang des Arduinos. Diese Position wird ständig mit der berechneten astronomischen Azimutposition
(Sollwert) verglichen.
Ist der Istwert kleiner als der Sollwert, dreht der Schrittmotor vorwärts.
Ist der Istwert größer als der Sollwert, dreht der Schrittmotor rückwärts.
Die Anzahl der Schritte (steps) beträgt jeweils 3 , sie kann aber bei Bedarf angepasst werden.
Auf diese Weise steht das Solarpanel (mit etwa +- 1-2 Grad Abweichung) immer exakt zur horizontalen Sonnenrichtung (Azimut).
Der Schrittmotor läuft bei der Positionseinstellung im MICROSTEP-Modus; nur beim schnellen Rücklauf von NW nach NO (s. unten) läuft er im DOUBLE-Modus.
(Grundsätzlich könnte statt eines Steppermotors auch ein normaler DC-Motor eingesetzt werden, aber die Positionsbestimmung
verläuft damit wesentlich unruhiger und nicht so exakt).
Der Höhenwinkel (Elevation) wird vom Servomotor unter Umsetzung des berechneten astronomischen Wertes direkt angesteuert,
so dass sich das Solarpanel immer optimal zur Sonneneinstrahlung neigt.
Abends beim Erreichen der NW-Position erfolgt nach Sonnenuntergang (Elevation = 0) ein schneller Rücklauf des Solarpanels nach NO.
Dort bleibt das Solarpanel "in Nullstellung" stehen bis zum Sonnenaufgang des nächsten Tages, womit ein neuer Tageszyklus beginnt
und die Positionen wieder wie beschrieben angefahren werden.
NW statt West und NO statt Ost wird deswegen genommen, weil am 22. Juni die Sonne im NO aufgeht und im NW untergeht.
Es ist aber auch sinnvoll, statt der Azimutwerte den Elevationwert als Kriterium zu nehmen.
Der Elevationwert ist = 0 (Zeitpunkt ist jahreszeitenabhängig!), wenn die Sonne abends gerade untergegangen ist bzw. morgens gerade noch nicht aufgegangen ist.
Allerdings wird bei dieser Methode die diffuse Helligkeit direkt vor Sonnenaufgang bzw. direkt nach Sonnenuntergang für die Solarstromerzeugung nicht effizient genutzt).
Die Aktualisierung der beiden Positionen Elevation und Azimut erfolgt ca. alle 3 sec (variierbar), Datum und Uhrzeit liefert ein RTC-Echtzeituhr-Modul.
Auf einem 20 x 4-LCD-Display werden die wichtigsten Parameter (Datum und Uhrzeit, Tag im Jahr, Azimut (Sollwert), Azimut (Istwert), Elevation, Spannung des Solarpanels,
Himmelsrichtung, Tageslänge, Tag im Jahr und die Drehrichtung des Schrittmotors) angezeigt.
Das Steuerprogramm liegt als Arduino-Sketch (ähnlich C / C++ Code) vor.
Es kann von meiner Website kopiert und direkt in die Arduino-Entwicklungsumgebung eingefügt werden.
Aktuelle Änderungen: Nun wird durch 2 LED angezeigt, ob sich das Solarpanel vorwärts (grün) oder rückwärts (rot) dreht.
Dazu werden 2 Digitalausgänge des Arduino verwendet.
Statt des Potentiometerwertes (Pot) wird an dieser Stelle nun der aktuelle Spannungswert am Solarpanel angezeigt.
Das Solarpanel liefert max. 3 Volt und passt daher zum Spannnungsbereich eines Arduino-Analogeingangs (0 - 5 Volt).
Hardware-Liste:
. Arduino-Uno-Mikrocontroller (REV)
· AZDelivery-DataLogger-Shield mit SD-Card-Slot und DS3231-RTC-Echtzeituhr
· Adafruit-Motor-Shield v2.3 (Anschlüsse für 4 DC-Motoren oder 2 Steppermotoren und 2 Servos)
· POLOLU-1207-Stepper-Motor 7.4 VDC (wird bei höherer Spannung sehr heiss!)
· Longruner-17kg-Digital High-Torque Robot-Servo-Motor 7.5 VDC (versagt bei kleineren Spannungen den Dienst)
· SainSmart IIC/I2C/TWI Serial 2004 Character 20x4 LCD Display Modul 5 VDC (funktioniert nicht zusammen ??? mit der Datenaufzeichnung auf SD-Card)
· 10-Gang-Drehpotentiometer R = 20 kOhm
· diverse Fischertechnik-Bauteile (ohne fischertechnik-Motoren, ohne TXT-Steuereinheit)
· 1 rote und 1 grüne Leuchtdiode, 1 x 100-Ohm-Widerstand.
Mehr Informationen, Bilder und den Arduino-Programmcode gibt es unter
http://www.mi-schu.de/solartracker.htm.
Mehr dazu bzw. Änderungen und Verbesserungen demnächst hier in diesem Forum.
Für Rückmeldungen, Kritik, Anregungen und Verbesserungsvorschläge bin ich immer sehr dankbar.
mischu