Solar-Nachführung

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

Re: Solar-Nachführung

Beitrag von Admin »

Bernhard - Fony hat geschrieben: So 9. Jul 2023, 15:39 ..... nur woher weist ihr wo zu zeit die Sonne steht bei bedecktem Himmel?
Also in den Thema hier geht es nur nach Uhrzeit auf ungefähre Sonnenposition.

Und ich habe ein anderes Thema, da geht einfach nur nach dem stärksten Licht, wenn es gleichmässig von allen vier Seiten kommt. Da ist völlig wurst, wo die Sonne gerade theretisch steht. Da wo die Sonne am besten von allen 4 Seiten kommt, sollte auch der beste Futerplatz für die SolarPanels sein. Und das Ding macht ja keinen bestimmten Ablauf, sondern fährt vor, zurück, rauf, runter, egal Hauptsache das beste Licht wird gefunden. Wenn ein schweres Gewitter aufzieht und es daher überall viel zu dunkel ist, geht meines in Parkstellung und kommt erst wieder raus, wenn das Licht wieder mehr hergibt.
woancade
Beiträge: 22
Registriert: Fr 7. Jul 2023, 07:49
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von woancade »

Hallo Franzl.
So, Mechanisch bin ich fertig. Jetzt noch eine kleine Frage zur Schaltung.
Ich habe auf den Spannungsregler verzichtet, Arduino, Uhr und Motortreiber beziehen ihren Strom seperat. (5 V)

Wie stelle ich die Uhr?
Wenn ich das Programm aufspiele, muß das Arduinoboard solo sein oder können alle Komponenten dran sein?

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

Re: Solar-Nachführung

Beitrag von Admin »

Ich stelle die RTC Uhr mit dem Programm:
Die Batterie der Uhr muss drin sein.

Code: Alles auswählen

    // Einstellen der Uhrzeit vom RTC3231
    // Die aktuelle Zeit wird in Setup() eingestellt und beim Start übertragen
    // Dazu wird das Programm ca. 4 Sekunden vor der eingestellten Zeit übersetzt 
    // und übertragen, dann ist es rechtzeitig fertig
    //
    // Matthias Busse 7.11.2016 Version 1.0
    #include "Wire.h"
    #define DS3231_ADDRESSE 0x68
    void setup() {
      Wire.begin();
      Serial.begin(38400);
      // aktuelle Zeit     sek min std wt tag mon jahr
      einstellenDS3231zeit(00, 10, 17, 5, 25,  10,  19);
    }
    void loop() {
      zeigeZeit(); // Zeit ausgeben
      delay(1000); // jede Sekunde
    }
    void einstellenDS3231zeit(byte sekunde, byte minute, byte stunde, byte wochentag, byte tag, byte monat, byte jahr) {
      // Datum und Uhrzeit einstellen
      Wire.beginTransmission(DS3231_ADDRESSE);
      Wire.write(0);
      Wire.write(decToBcd(sekunde)); // Sekunden einstellen
      Wire.write(decToBcd(minute)); // Minuten einstellen
      Wire.write(decToBcd(stunde));
      Wire.write(decToBcd(wochentag)); // 1=Sonntag ... 7=Samstag
      Wire.write(decToBcd(tag));
      Wire.write(decToBcd(monat));
      Wire.write(decToBcd(jahr)); // 0...99
      Wire.endTransmission();
    }
    void leseDS3231zeit(byte *sekunde, byte *minute,byte *stunde, byte *wochentag, byte *tag, byte *monat, byte *jahr) {
      Wire.beginTransmission(DS3231_ADDRESSE);
      Wire.write(0); // DS3231 Register zu 00h
      Wire.endTransmission();
      Wire.requestFrom(DS3231_ADDRESSE, 7); // 7 Byte Daten vom DS3231 holen
      *sekunde = bcdToDec(Wire.read() & 0x7f);
      *minute = bcdToDec(Wire.read());
      *stunde = bcdToDec(Wire.read() & 0x3f);
      *wochentag = bcdToDec(Wire.read());
      *tag = bcdToDec(Wire.read());
      *monat = bcdToDec(Wire.read());
      *jahr = bcdToDec(Wire.read());
    }
    void zeigeZeit(){
    byte sekunde, minute, stunde, wochentag, tag, monat, jahr;
      leseDS3231zeit(&sekunde, &minute, &stunde, &wochentag, &tag, &monat, &jahr);   // Daten vom DS3231 holen
      if (tag < 10) { Serial.print("0");} 
      Serial.print(tag); // ausgeben T.M.J H:M:S
      Serial.print(":");
      if (monat < 10) { Serial.print("0");}
      Serial.print(monat);
      Serial.print(":20");
      Serial.print(jahr);
      Serial.print(" ");
      if (stunde < 10) { Serial.print("0");}
      Serial.print(stunde, DEC); // byte in Dezimal zur Ausgabe
      Serial.print(":");
      if (minute < 10) { Serial.print("0");}
      Serial.print(minute, DEC);
      Serial.print(":");
      if (sekunde < 10) { Serial.print("0"); }
      Serial.println(sekunde, DEC);
    }
    byte decToBcd(byte val) {
    // Dezimal Zahl zu binary coded decimal (BCD) umwandeln
      return((val/10*16) + (val%10));
    }
    byte bcdToDec(byte val) {
    // BCD (binary coded decimal) in Dezimal Zahl umwandeln
      return((val/16*10) + (val%16));
    }
Und dann spiele ich das eigentliche Programm ein. Du kannst alle Komponenten drann lassen, wenn du das Programm einspielst. Auch beim Programm mit dem du die Uhr stellst.

Du hast also zwei Netzteile angeschlossen? Ein 5 Volt und ein 12 Volt ??
Wenn das so ist, müßen die GND Anschlüße von beiden Netzteilen verbunden sein.

Franz
Bernhard - Fony
Beiträge: 73
Registriert: Mo 12. Jun 2023, 17:49
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Bernhard - Fony »

Um die RTC einstellen reicht im Setup

Code: Alles auswählen

  rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); 
dadurch holt sich die RTC die Uhrzeit vom PC, danach das Kommentieren mit// und den Sketch neu laden.
oder

Code: Alles auswählen

rtc. adjust(DateTime(2014, 1, 21, 3, 0, 0));
Beide, so wie dein Beispiel haben den Nachteil das die Zeit zu Realer zeit abweicht.
Muss mal den alten Rechner starten dort habe Sketch wo man bis 1Sek genau die RTC einstellt

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

Re: Solar-Nachführung

Beitrag von Admin »

Also ich habe das immer auf etwa 2-3 Sekunden genau hinbbekommen. Man trägt die Daten ein, und startet das Programm einige Sekunden bevor die eingetragene Zeit erreicht ist. Die Abweichung ist nur die Zeit, bis das Programm hochgeladen und gestartet ist. Um diese Zeit muss man vor erreichen der eingetragenen Zeit starten. Also ich habe das oft auf 1-2 Sek. Abweichung hinbekommen. Und da es bei dem Solarnachführungsprogramm nicht mal um Min. geht, spielt das doch keine Rolle.
Bernhard - Fony
Beiträge: 73
Registriert: Mo 12. Jun 2023, 17:49
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Bernhard - Fony »

Das ist mir schon klar.
Das was ich gezeigt habe hast Du schon im Deinem Sketch vom So 9. Jul 2023, 13:40 drinnen, dadurch bei 115200Baud kommt man auf 2Sek. Genauigkeit, was für die meisten Anwendungen ausreicht :oo:

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

Re: Solar-Nachführung

Beitrag von Admin »

Achja stimmt. Das ist ja im aktuellen Sketch vom Max eh schon drin. Nur ist es auskommentiert. Also einfach nur die beiden // in dieser Zeile zum Zeit stellen raus, dann sollte es passen. Habe nicht an die bessere Methode gedacht. Habe die RTC schon länger nicht mehr gebraucht.
woancade
Beiträge: 22
Registriert: Fr 7. Jul 2023, 07:49
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von woancade »

Hat jemand die Lösung dieses Problems?

Fehlermeldung

In file included from C:\Users\Wolfgang\Desktop\Solarsteuerung\Solarsteuerung_Motordrehzahl\Solarsteuerung_Motordrehzahl.ino:38:0:
C:\Program Files (x86)\Arduino\libraries\RTClib-2.1.1\src/RTClib.h:25:10: fatal error: Adafruit_I2CDevice.h: No such file or directory
#include <Adafruit_I2CDevice.h>

compilation terminated.
exit status 1
Fehler beim Kompilieren für das Board Arduino Uno.
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Du wirst wohl diese Lib nicht auf dem PC haben.

Franz
woancade
Beiträge: 22
Registriert: Fr 7. Jul 2023, 07:49
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von woancade »

Korrekt. Und wie zum Teufel installiere oder Downloade ich die?
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 24 Gäste