Solar-Nachführung
- Admin
- Administrator
- Beiträge: 1251
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Solar-Nachführung
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
Schönen Tag euch beiden.
Franz
-
- Beiträge: 76
- Registriert: Mo 12. Jun 2023, 17:49
- Kontaktdaten:
Re: Solar-Nachführung
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
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
-
- Beiträge: 76
- Registriert: Mo 12. Jun 2023, 17:49
- Kontaktdaten:
Re: Solar-Nachführung
Nee direkt von USB ist zu langsam das verschieben geht schneller al öffnen
- Admin
- Administrator
- Beiträge: 1251
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Solar-Nachführung
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.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
Re: Solar-Nachführung
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
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
-
- Beiträge: 76
- Registriert: Mo 12. Jun 2023, 17:49
- Kontaktdaten:
Re: Solar-Nachführung
Zeige dein aktuellen Sketch.
- Admin
- Administrator
- Beiträge: 1251
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Solar-Nachführung
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
}
//-----------------------------------------------------------------------------
}
- Admin
- Administrator
- Beiträge: 1251
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Solar-Nachführung
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
- Admin
- Administrator
- Beiträge: 1251
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Solar-Nachführung
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
Ich ändere den Schaltplan noch, und hänge ihn hier rein.
Franz
- Admin
- Administrator
- Beiträge: 1251
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Solar-Nachführung
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.
Ich habe bei der Gelegenheit auch gleich den DS18B20 rausgeschmissen, weil du den auch nicht brauchst.
.

Ich habe bei der Gelegenheit auch gleich den DS18B20 rausgeschmissen, weil du den auch nicht brauchst.
.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast