Solar-Nachführung

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

Re: Solar-Nachführung

Beitrag von Max »

Hallo Franz,
danke für die Tipps,
den Schaltplan habe ich auf (PULLUP)- Anschluß geändert.
zum Testen muß ich wohl die Steuerung ausbauen und am Akku testen.
Ich melde mich wieder falls ich Erfolg, oder auch nicht, habe.

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: Fr 2. Dez 2022, 17:31 Hallo Franz,
danke für die Tipps,
den Schaltplan habe ich auf (PULLUP)- Anschluß geändert.
zum Testen muß ich wohl die Steuerung ausbauen und am Akku testen.
OK, das mit dem gleich zu Anfang losfahren Richtung Morgenstellung war das "MotorStart = 1" in der Deklaration. Da muss ne "0" hin. Und dass der Endschalter nicht erkannt wird ist auch klar, weil wir damit einen Minus am Endschalter brauchen. Also sind beide Dinge danach behoben. Dann sollte es gehen. Das einzige was noch stören könnte, sind lange Wartereien in den beiden Lib´s. Aber sowas sollte man eigentlich in Lib´s nicht machen. Da kann man davon ausgehen, dass es die nicht gibt. Nur in seltenen Fällen scheit es das zu geben.

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

Re: Solar-Nachführung

Beitrag von Admin »

Und wie schauts aus? Alles gut?

Franz

PS: Ich bin morgen bei einer Augen OP.
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Dann wünsche ich dir alles Gute
und eine gute Genesung
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 »

Danke Max,
heute kommt der Deckel wieder runter glaube ich. Aber ich bin es schon gewohnt nur mit einem Auge was brauchbares zu sehen. Kann also nur besser werden. :lol:

I
Deckel ist weg.
Ich sehe wieder richtig gut. Viel besser als gedacht. :(V): Schon einen Tag nach der OP. Das ist suuuuuuper :(oo):

Wie schauts bei dir aus. klappt das Programm inzwischen oder fehlt noch was?

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

Re: Solar-Nachführung

Beitrag von Admin »

Schade, dass ich nichts mehr höre, wie es läuft? Ich wollte auch mal fragen warum du keine DS3231 Uhr verwendest. Kostet so um die 5.- Euro und hat eine Gang Ungenauigkeit von etwa 1 Minute im Jahr und man ist dann nicht mehr auf die GPS - Verbindung angewiesen. Alle 2-3 Jahre mal die Uhr wieder neu stellen und alles ist gut.

Franz

Hätte mich auch mal interessiert, ob du ein Solarpannel mal Leihweise für ein paar Wochen übrig hättest. Vielleicht hast du ja eines rumliegen, das nicht im Einsatz ist. Ich möchte mal real testen, wieviel Licht so ein Pannel braucht, um sinnvoll arbeiten zu können. Diese kleinen Panels die ich hier benutze sind ja nicht wirklich tauglich zu Strom erzeugen. Um die Grenze Morgens und Abends mal zu erfahren. Wenn ich dafür extra eines kaufe, mit 18 Volt, 50-100 Watt, sind das wenigstens 35 - 90 Euro. Ich weiß nur noch nicht, ob ich das dann für irgend was brauche.
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Hallo Franz,

ja so ein 10W Modul (36x36 cm) liegt bei im Keller.
Für erste Versuche würde es bestimmt reichen.

Mit dem Programm für die Testanlage mit Millis komme ich leider nicht weiter.
Zu den Vorgegebenen Zeiten schalten zwar die Motorausgäne aber nur ganz kurz
und nicht nach der eingegebenen Zeit. Das Zurückfahren ist auch nur ein kurzer Impuls.
Das einzige was funktioniert ist der Endschalter, der schaltet bei jeder Betätigung.

Code: Alles auswählen

// Solarsteuerung mit GPS Modul
// 
// aufgespielt: 

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

// 2 Pin für serielle Ausgabe wählen (Pin 2=TX, Pin 3=RX)

int RXPin = 3; //2  
int TXPin = 2; //3  
int mot1 = 5;
int mot2 = 6;
int pwm = 9;
int stopp = 4;  //Endschalter Morgenstellung
int stoppstatus= 0;
 static uint32_t previousMillis = 0; 

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_PULLUP);  // Endschalter Morgenstellung 
  stoppstatus = digitalRead(stopp);
  gpsSerial.begin(GPSBaud);

}
//________________________________________  

//void zustell(){
//  Serial.println("zustellen");
//  digitalWrite(mot1, HIGH);
//  digitalWrite(mot2, LOW);
// }
//void zurueck(){
//  Serial.println("zurueckfahren");
//    digitalWrite(mot1, LOW);
//    digitalWrite(mot2, HIGH);}

//void halt(){
//    digitalWrite(mot1, LOW);
//    digitalWrite(mot2, LOW);}
    
//void Morgenstellung(){    
  
 
//_______________________________
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.minute()== 00 && gps.time.second()== 0){ digitalWrite(mot1, HIGH); //zustellen 
  digitalWrite(mot2, LOW);}          //hier Zeit einstellen   
if (gps.time.minute()== 00 && gps.time.second()== 7){digitalWrite(mot1, LOW); //halt
    digitalWrite(mot2, LOW);}
if (gps.time.minute()== 01 && gps.time.second()== 0){ digitalWrite(mot1, HIGH); // zustellen
  digitalWrite(mot2, LOW);}                        
if (gps.time.minute()== 01 && gps.time.second()== 7){digitalWrite(mot1, LOW);
    digitalWrite(mot2, LOW);}         
if (gps.time.minute()== 02 && gps.time.second()== 0){ digitalWrite(mot1, LOW);
    digitalWrite(mot2, HIGH);}
   if (digitalRead(stopp) == LOW)  //HIGH Abfrage ob der Taster gedrückt ist    
  {  Serial.println("Endschalter");
//  previousMillis = millis();
    digitalWrite(mot1, HIGH);
    digitalWrite(mot2, LOW);
  previousMillis = millis();  
  } 
   if (millis() - previousMillis > 4 * 1000UL)
{
       digitalWrite(mot1, LOW);
       digitalWrite(mot2, LOW);  
  }}      
  

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);
}
Vielleicht wäre ein Umstellen auf DS3231 die Lösung. Wegen den geringen Ungenauigkeiten
bin ich damals auf GPS gekommen aber es hätte bestimmt keine Rolle gespielt.
Nur weiß ich nicht, wie ich das Programm dazu anpassen sollte.
Die Anlagen im Garten funktionieren, wie schon erwähnt, gut mit meiner "Delay" Variante.
Sicherheit habe ich nachgerüstet (Endschalter Motorstrom).

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: Fr 16. Dez 2022, 17:30 ja so ein 10W Modul (36x36 cm) liegt bei im Keller.
Für erste Versuche würde es bestimmt reichen.

Zu den Vorgegebenen Zeiten schalten zwar die Motorausgänge aber nur ganz kurz
und nicht nach der eingegebenen Zeit. Das Zurückfahren ist auch nur ein kurzer Impuls.
Das einzige was funktioniert ist der Endschalter, der schaltet bei jeder Betätigung.
OK, Schaue ich mir nochmal an. Ich muss mal schauen dass ich es doch mal auf na CPU laufen lasse. Muss ich halt das mit dem GPS rausschmeißen, weil ich das Modul nicht haben.

Das mit dem 10 Watt Modul leihweise wäre suuuuper. Dann könnte ich mich damit bischen Spielen :(oo):

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

Re: Solar-Nachführung

Beitrag von Max »

Servus Franz,

schicke mir bitte privat deine Anschrift, dann schicke ich dir das 10W Panel.

Nun habe ich ein Programm für ein RTC1303 gemacht und siehe da alles funktioniert soweit.
Jetzt muß ich halt meine Steuerung von GPS auf RTC1307 umrüsten.
Du verwendest ja das DS3231 Modul, ist das genauer oder wie?

Code: Alles auswählen

#include <RTClib.h>

RTC_DS1307 rtc;
 int mot1 = 5;
 int mot2 = 6;
 int schalter = 4;  
 int buttonState = 0; 
char daysOfTheWeek[7][12] = {
  "Sonntag",
  "Montag",
  "Dienstag",
  "Mittwoch",
  "Donnerstag",
  "Freitag",
  "Samstag"
};

void setup () {
  Serial.begin(9600);
  pinMode (mot1, OUTPUT);
  pinMode (mot2, OUTPUT);
  pinMode(schalter, INPUT_PULLUP);
  buttonState = digitalRead(schalter);
  // SETUP RTC MODULE
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    while (1);
  }

  // automatically sets the RTC to the date & time on PC this sketch was compiled
  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void stopp(){
   if (digitalRead(schalter) == 0){
    digitalWrite(mot2, LOW);
  } 
  
}
void loop () {
  DateTime now = rtc.now();

  Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
  Serial.print(") ");
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.println(now.second(), DEC);
if (now.hour()== 8 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 8 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp
 
if (now.hour()== 9 && now.minute()== 0 && now.second()== 7) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 9 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp 

if (now.hour()== 10 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 10 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp

if (now.hour()== 11 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 11 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp

if (now.hour()== 12 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 12 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp

if (now.hour()== 13 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 13 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp

if (now.hour()== 14 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 14 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp

if (now.hour()== 15 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 15 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp

if (now.hour()== 16 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 16 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp

if (now.hour()== 17 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 17 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp

if (now.hour()== 18 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, HIGH);} // zustellen 
if (now.hour()== 18 && now.minute()== 0 && now.second()==0) {digitalWrite(mot1, LOW);} // Stopp

if (now.hour()== 19 && now.minute()== 0 && now.second()== 0) {digitalWrite(mot2, HIGH);} // Zurueck
  stopp();
}
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: Sa 17. Dez 2022, 18:34 ............auf RTC1307 umrüsten. Du verwendest ja das DS3231 Modul, ist das genauer oder wie?
Ja, deshalb nehme ich die 3231. Und auch alle anderen, die damit schon Erfahrung haben, machen das so. Wenn man andere nimmt als diese DS3231, dann kann es sein, dass die schon in ein paar Wochen um 10 Min. falsch laufen. In den beiden Arduino Foren gibt es immer einen Regelrechten "Aufschrei" von allen, wenn jemand nicht die DS3231 verwendet :) Ich muss sagen, ich habe das mit der gar nicht ausprobiert, weil ich solche Dinge dann gleich überspringe, und gleich mit der Empfohlenen Uhr arbeite, wenn ich sowas lese. Deshalb war es keine eigene Erfahrung, dass die so falsch geht, sondern nur die Erfahrungen einiger Erfahrener Leute in den Arduino-Foren :) Ich lerne immer in den beiden Arduino Foren, wenn jemand mit irgend was Probleme hat. Wenn jemand berichtet, dass er/sie was mit einem bestimmten Sensor nicht hinbekommt, und mich das Thema interessiert, bestelle ich mir das Teil, und schaue ob ich klar komme damit. In der Regel hat es eigentlich immer geklappt, also wirkliche Probleme waren das eigentlich nie, die haben halt einfach irgendwas falsch gemacht. Aber so bin ich zu den ganzen Sensoren gekommen, die ich hier schon habe. Immer wenn mich das Ding interessiert, kommt das her, und ich teste damit einige Programme.

Das schicken dess Panels wäre natürlich super :) Ansonsten hätte ich es mal geholt, wenn es wieder schöner Wetter ist.

Aber klar, wenn das geht.
Meine Adresse ist:
Franz Köhler
Am Bachfeld 20
82441 Ohlstadt

Danke
Franz
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast