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 »

Ich habe auch schon einen USB-Stick mit der 1.8.19 Portable benutzt. Also habe auf dem Stick gearbeitet. Aber das wird dann schon seeeehr langsam. Aber ich werde vielleicht eine extra Festplatte einbauen, nur für diese Portable IDE Versionen. Mal schauen.

Schönen Tag euch beiden.
Franz
Bernhard - Fony
Beiträge: 73
Registriert: Mo 12. Jun 2023, 17:49
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Bernhard - Fony »

Komischer weise alle IDE der erster Serie haben keine Macken gehabt, habe mit der 1.8.16 angefangen.
Die zweier zwei mall probiert, ist nix für mich.
Wen viel zu schreiben ist nehme Notepad++ Nachteil zum testen muss der Sketsch zurück in die IDE
Bernhard - Fony
Beiträge: 73
Registriert: Mo 12. Jun 2023, 17:49
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Bernhard - Fony »

Nee direkt von USB ist zu langsam das verschieben geht schneller al öffnen
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: Di 1. Aug 2023, 14:16 Wen viel zu schreiben ist nehme Notepad++ Nachteil zum testen muss der Sketsch zurück in die IDE
Ja, der Editor gefällt mir auch sehr gut. Aber um das Programm dann in den Arduino zu laden, wieder zur IDE gefällt mir auch nicht. Zum Schreiben ist der Notepad++ schon besser und übersichtlicher.
woancade
Beiträge: 22
Registriert: Fr 7. Jul 2023, 07:49
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von woancade »

Hallo Franz. Uhr gestellt, Programm aufgespielt, alles kontrolliert (Verdrahtung). Nix passiert!
Wie wäre der Syntax wenn ich nicht jede Stunde drehen will, sondern zu Testzwecken jede Minute für 3 Sekunden.

Jetzt sieht es ja folgendermaßen aus:

if (now.hour() == 9 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 9 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
Bernhard - Fony
Beiträge: 73
Registriert: Mo 12. Jun 2023, 17:49
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Bernhard - Fony »

Zeige dein aktuellen Sketch.
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 kanns nicht testen, aber das hier sollte die Kurzfassung sein. Jeder Schritt eine Minute die 7 Sekunden, die der Motor normal läuft. Der erste Schritt hat 14 Sekunden.

Code: Alles auswählen

 // Programm zur Solarsteuerung mit DS 3231 Modul
#include "RTClib.h"
RTC_DS3231 rtc;
int mot1 = 5;        // Motor Rechts
int mot2 = 6;        // Motor Links
int schalter = 4;    // Endschater
int pwm = 9;
int tempo = 255;
unsigned long aktuellezeit = 0;
// ------millis Deklaration 01 -----------------------
unsigned long pausestartzeit01 = 0; // Eine Minute
const unsigned long pausezeit01 = 60000;

byte MotorR = 0;
byte MotorL = 0;
byte Ende = 0;
byte MotorStart = 0;
//----------------------------------------------------
void setup () {
  Serial.begin(9600);
  pinMode (mot1, OUTPUT);
  pinMode (mot2, OUTPUT);
  pinMode(schalter, INPUT_PULLUP);
  analogWrite(pwm, tempo);
#ifndef ESP8266
  while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
  if (! rtc.begin()) {
    Serial.println("Konnte RTC nicht finden");
    Serial.flush();
    abort();
  }
  Serial.println("Setting the time...");
//  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop () {
  DateTime now = rtc.now();
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  //    Serial.print(rtc.getTemperature());
  //    Serial.println(" C");
  Serial.println();
  Serial.println();

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

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

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

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

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

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

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

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

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

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

  if (now.minute() == 10 && now.second() == 0) {
    digitalWrite(mot1, HIGH); // zustellen
  }
  if (now.minute() == 10 && now.second() == 7) {
    digitalWrite(mot1, LOW); // Stopp
  }
  // Morgenstellung um 19 Uhr
  if (now.minute() == 11 && now.second() == 0) {
    if (MotorStart == 0)
    {
      MotorStart = 1;
    }
  }
  //---------------------------Aktuelle Millis übergeben-----------------------
  aktuellezeit = millis(); // Aktuelle Zeit für alle Millis Aktionen übergeben
  //---------------------------------------------------------------------------
  //---------------------------Motor Links Starten-----------------------------
  if (MotorStart == 1)
  {
    digitalWrite (mot2, HIGH);
    MotorL = 1;
    MotorStart = 2;
    pausestartzeit01 = aktuellezeit; // Eine Minute Abschaltung starten
  }
  //---------------------------------------------------------------------------
  //------------------------Endschalter Kontrolle------------------------------
  Ende = digitalRead(schalter);
  if (Ende == 0)
  {
    digitalWrite (mot2, LOW);
    MotorL = 0;
    digitalWrite (mot1, LOW);
    MotorR = 0;
  }
  //------------------60000 Aktion---------------------------------------------
  if ((aktuellezeit - pausestartzeit01 >= pausezeit01) && (MotorStart > 0)) // Eine Minute abgelaufen??
  {
    digitalWrite (mot1, LOW);
    MotorR = 0;
    digitalWrite (mot2, LOW);
    MotorL = 0;
    MotorStart = 0; // Eine Minute abgelaufen, startbereit für nächsten Rücklauf
  }
  //-----------------------------------------------------------------------------
 
}
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

woancade hat geschrieben: Sa 15. Jul 2023, 10:59 Ich habe auf den Spannungsregler verzichtet, Arduino, Uhr und Motortreiber beziehen ihren Strom seperat. (5 V)
Dann musst du den GND von 5 Volt und den GND von den 12 Volt miteinander verbinden. Diese Verbindung macht normal der DC/DC Regler, den du nicht verwendest!!

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 »

Ich habe gerade den Motortreiber getestet. Normal kann man die PWM Eingänge beide parallel einfach mit dem Tempo PWM 0-255 beschalten und gibt dann mit dem jeweiligen Enable die Richtung frei, die der Motor laufen soll. Das geht bei dem nicht. Also kleine Beschaltungs-Änderung. Auf den beiden Enable Eingängen VCC 5 Volt und auf die PWM Eingänge die Steuereingänge drauf.

Ich ändere den Schaltplan noch, und hänge ihn hier rein.

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 »

So der geänderte Schaltplan ist hier noch. Ich habe jetzt mal im Netz gesucht warum das nicht geht, PWM für beide und mit Enable steuern. Habe da einige User gefunden, die genauso dumm geschaut haben wie ich, weil das bei dem Treiber nicht geht. Macht ja mehr Sinn die Geschwindigkeit über einen PWM Pin für beide einzustellen und über die zwei Enables die Richtung vorzugeben. Aber ok, soll nicht sein. Hat natürlich auch eine Sicherheits-Komponente. Man kann nicht beide gleichzeitig gegeneinander schalten. Beide PWM aktiv, dann geht gar nichts. Hat auch was gutes. So kann bei einem Programmfehler, nicht der Rauch aufgehen, weil sich die PWM Eingänge gegenseitig abriegeln. :(o):

Ich habe bei der Gelegenheit auch gleich den DS18B20 rausgeschmissen, weil du den auch nicht brauchst.
.
Sonnen_Nachführung_Max_V02.JPG
Sonnen_Nachführung_Max_V02.JPG (443.38 KiB) 329 mal betrachtet
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

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