Solar-Nachführung

Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Solar-Nachführung

Beitrag von Max »

Hallo miteinander,
vor einigen Jahren habe ich zwei kleine Photovoltaikanlagen (je ca. 1qm) auf je einen Masten gebaut.
Diese Anlage richtet sich in etwa nach der Sonne aus und das Ganze ist Zeitgesteuert.
Die Panele liefern ca 20V zusammen mit einem Laderegler und zwei Optima 55Ah AGM Batterien entstehen
damit 12V. Mit dem Strom wird die gesamte Kellerbeleuchtung, Hofbeleuchtung, Teichpumpen und die Panel-
steuerung betrieben.
Angetrieben wird die Panelverstellung mit einem 12V Wischermotor,
übersetzt mit einem Schneckentrieb von der Fa. Mädler.
Die Elektronik ist Eigenbau, zunächst mit Controllern von C-Control und DCF 77 Zeitmodul.
Nun bin ich dabei die Elektonik umzurüsten auf Arduino Nano. Der Zeitimpuls kommt nun von einem GPS-Modul.
Der Umstieg auf Arduino hat aber noch seine Probleme.
Falls das Thema interessant für Euch wäre, würde ich gerne mehr darüber berichten.

Grüße
Max
Dateianhänge
P1100252.JPG
P1100252.JPG (40.38 KiB) 1347 mal betrachtet
P1100253.JPG
P1100253.JPG (34.96 KiB) 1347 mal betrachtet
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Hallo Max.
Du schreibst "Zeitgesteuert". Heißt das, du hast keine Lichtsensoren, mit denen du nach der besten Lichteinstrahlung suchst, sondern du sagst, "um die Zeit steht die Sonne auf diesen Koordinaten" und fährst dort hin. Rechnest also immer die genaue Pos. der Sonne aus. Du fährst aber nur eine Achse. Reicht das um rel. genau in die Sonne zu schauen?

Franz

PS: Ich habe mir schon manchmal überlegt, ob ich man Ein Gerät mit zwei Sevos und vier/acht Lichtsensoren baue, um dann mit dem Solarpanel immer voll an der Sonne zu bleiben. Habe es aber noch nie umgesetzt.
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Servus Franz,

so kompliziert ist meine Anlage nicht.
Früher hatte ich mal mit zwei LDR Widerständen den Sonnenstand ermittelt.
Das funktioniert bei Sonnenschein optimal, wenn sich aber eine Wolke vorschiebt oder es trübe ist,
gelingt die Zustellung nicht immer.
Das Panel hat eine feste Neigung von ca. 40°, allzu viel Machanik erhöht die Ausfallquote der Anlage.
Nach der Umstellung auf Zeitsteuerung hatte ich diese Probleme nicht mehr. Die DCF77-Abfrage hat aber
auch sehr selten mal gestreikt, dann wurde halt nicht nachgestellt. Die Zustellung des Panels erfolgt ab
8 Uhr bis 18 Uhr, alle Stunden ein mal. Abends um 19 Uhr fährt das Panel in die Morgenstellung,
dies erfolgt durch einen Reedschalter.
Nun habe ich, siehe Bild, die Steuerung auf Arduino und Zeitmessung durch GPS umgestellt.
Die Anlage fährt gerade in Probebetrieb.Ich hoffe, dass alles funktioniert.
Verwendet wird das "GPS Neo-6m", hierbei werte ich nur die Uhrzeit aus.
Die Motorstufe ist mit einem "L298N bestückt, dieser ist doppelt Belegt auf 4A Ausgangsleistung.

Gruß
Max
Dateianhänge
IMG_20221017_161151_109.jpg
IMG_20221017_161151_109.jpg (290.85 KiB) 1341 mal betrachtet
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Hi Max.
Wieviel Grad drehst du maximal um an der Sonne zu bleiben, von Morgens bis abends? Ich frage um zu wissen ob ein Servo für den Testaufbau reicht, oder ob ich besser einen Schrittmotor nehme.

Franz
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Servos Franz,

der Verstellweg ist maximal 180°.
Für eine kleine Testanlage ist ein Servo oder ein Stepper oK
aber bei einer freistehenden Anlage mit 1qm sind diese Ansteuerungen
wegen ev Stürme ungeeignet.
Bei einem heftigen Sturm verstellt sich meine Anlage auch schon mal
trotz Schneckentrieb aber am nächsten Tag passt die Position dann wieder.

Gruß
Max
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Max hat geschrieben: Mo 17. Okt 2022, 16:44 der Verstellweg ist maximal 180°.
Ja, dann ist das ein bischen knapp. Die Servos, die ich hier habe, machen gerade mal 180 Grad, glaube ich. Ich habe hier noch nen Nema17 rumliegen. Dann nehme ich den, baue ein Getriebe dran, und für die zweite Verstellung den Servo, da reicht ja ein rel. kleiner Bereich. Windwiderstand hat das kleine Ding kaum.

Muss ich mir mal überlegen.
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Servus Franz,

das ist meine Elektronik zur Solar-Nachführung
Wer gerne lötet kann ja die Schaltstufe selber machen, spart Geld.
img033.jpg
img033.jpg (342.06 KiB) 1325 mal betrachtet
img035.jpg
img035.jpg (330 KiB) 1325 mal betrachtet
Das Programm dazu ist folgendes: :geek:

Code: Alles auswählen

// Solarsteuerung mit GPS Modul
// erstellt: 21.11.2021
// aufgespielt:13.10.2022
// aufgespielt: Anlage test

#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>

// 2 Pin für serielle Ausgabe wählen (Pin 2=TX, Pin 3=RX)
//bool geschaltet = false;      // geschaltet dient zur Speicherung des Schaltzustandes
int RXPin = 2; //2  
int TXPin = 3; //3  
int mot1 = 5;
int mot2 = 6;
int pwm = 9;
int stopp = 4;  //Endschalter Morgenstellung


int GPSBaud = 9600;

// Create a TinyGPS++ object
TinyGPSPlus gps;

// Erstellen Sie einen seriellen Software-Port namens "gpsSerial" 
SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
  // Start the Arduino hardware serial port at 9600 baud
  Serial.begin(9600);
  pinMode(mot1, OUTPUT);
  pinMode(mot2, OUTPUT);
  digitalWrite(pwm,HIGH); //  digitalWrite(ein, HIGH);  PWM dauerhaft eingeschaltet 
  pinMode(stopp, INPUT);  // Endschalter Morgenstellung 

  gpsSerial.begin(GPSBaud);
// pinMode(led, OUTPUT); 
}
//________________________________________  

void zustell(){
  digitalWrite(mot1, HIGH);
  digitalWrite(mot2, LOW);
 }
void zurueck(){
    digitalWrite(mot1, LOW);
    digitalWrite(mot2, HIGH);}

void halt(){
    digitalWrite(mot1, LOW);
    digitalWrite(mot2, LOW);}
    
void Morgenstellung(){    
    if (digitalRead(stopp) == HIGH)  // Abfrage ob der Taster gedrückt ist 
  {  //geschaltet = true; 
     digitalWrite(mot1, LOW);
     digitalWrite(mot2, LOW);
     delay(200);
//geschaltet = false; 
    digitalWrite(mot1, HIGH);  // dient zum Freifahren vom Endschalter
    digitalWrite(mot2, LOW); 
  delay(4000); 
    digitalWrite(mot1, LOW);
    digitalWrite(mot2, LOW);          
  }
}
//_______________________________
void loop() {  

  while (gpsSerial.available() > 0)
    if (gps.encode(gpsSerial.read())){
      displayInfo();}

  // Wenn 5000 Millisekunden vergehen und keine Zeichen eingehen 
  // über den seriellen Anschluss der Software den Fehler "Kein GPS erkannt" 
  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
   Serial.println("Kein GPS erkannt");
    while(true);
  }
// ab hour=10 bitte 010+0 schreiben, ab 17 Uhr bitte 016+1 schreiben usw. 
        //  if (gps.time.hour()== 016+2 && gps.time.minute()== 56 && gps.time.second()== 00){zustell();}  hier Zeit einstellen  
    if (gps.time.hour()== 8+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
    if (gps.time.hour()== 8+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();} 
if (gps.time.hour()== 9+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
if (gps.time.hour()== 9+0 && gps.time.minute()== 01 && gps.time.second()== 8){halt();} 
      if (gps.time.hour()== 010+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
      if (gps.time.hour()== 010+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();} 
if (gps.time.hour()== 011+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
if (gps.time.hour()== 011+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();} 
      if (gps.time.hour()== 012+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
      if (gps.time.hour()== 012+0 && gps.time.minute()== 01 && gps.time.second()== 8){halt();}
if (gps.time.hour()== 013+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
if (gps.time.hour()== 013+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();} 
      if (gps.time.hour()== 014+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
      if (gps.time.hour()== 014+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();} 
if (gps.time.hour()== 015+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
if (gps.time.hour()== 015+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();} 
      if (gps.time.hour()== 016+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
      if (gps.time.hour()== 016+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
if (gps.time.hour()== 016+1 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
if (gps.time.hour()== 016+1 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
      if (gps.time.hour()== 016+2 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
      if (gps.time.hour()== 016+2 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
if (gps.time.hour()== 016+3 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();}          //hier Zeit einstellen   
if (gps.time.hour()== 016+3 && gps.time.minute()== 01 && gps.time.second()== 01){halt();}
         
  if (gps.time.hour()== 016+3 && gps.time.minute()== 02 && gps.time.second()== 00){zurueck();}
  Morgenstellung();        
  }   

void displayInfo()
{  
  Serial.print("Date: ");
  if (gps.date.isValid())
  {
   
    Serial.print(gps.date.day());
    Serial.print(".");
    Serial.print(gps.date.month());
    Serial.print("/");
    Serial.println(gps.date.year());
  }
  else
  {
    Serial.println("Nicht verfügbar");
  }

  Serial.print("Time: ");
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour()+01);
    Serial.print(":");
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(":");
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
  }
  else
  {
    Serial.println("Nicht verfügbar");
  }

  Serial.println();
  Serial.println();

  delay(100);
}
Grüße
Max
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Was macht der DS18B20 Sensor? Wird die Endstufe so heiß, dass die Kontrolle nötig ist? Hast du den Strom mal überprüft / gemessen, den der Motor zieht?

Franz
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Servus Franz,

Was macht der DS18B20 Sensor? Wird die Endstufe so heiß, dass die Kontrolle nötig ist? Hast du den Strom mal überprüft / gemessen, den der Motor zieht?

Den Temperaturwächter habe ich gar nicht eingebaut in meine Schaltung.
Der Motor zieht zwar maximal 4A, aber warm wird der L298N nicht bei so einem
kurzen Betrieb unter Teillast.

Grüße
Max
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Ja, ich habe im Programm schon danach gesucht, wo du den DS18B20 abfragst. Habe aber nix gefunden. OK, dann ist das klar, wenn du das gar nicht verwendest.

Ich werde noch ein bischen brauchen, bis ich meinen Test aufbaue. Ich muß auch mit den Lichtsensor bischen Testen, wie stark ich den Lichteinfall dämpfen muß, dass ich auf die mir wichtigen Werte komme. Es hilft ja nichts, wenn ich bei halber Sonneneinstrahlung schon Vollgas-Werte habe.

Ich bin noch ein wenig angeschlagen wegen der bis vor einer Woche durchgemachten Corona-Infizierung. Jetzt laufe ich für mein Gefühl noch nicht mal auf halber Kraft. Da ist die Luft noch ziehmlich raus bei mir. Und ich habe noch Umfangreiche Termine beim Kieferchirurgen, wegen Implanteten und beim Augenartz wegen Grauer Staar. Lauter schöne Sachen.

Aber ich komme wieder :(oo): muss mich noch ein wenig stärken :hng:

Und ich bin schon sehr gespannt, ob das was ich mir für das Testgerät zur Solarnachführung vorstelle, auch das ist was ich erreichen kann. :agt:
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste