INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hilfe beim Problem mit dem Delay
13.06.2015, 09:50 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2015 09:58 von raspido.)
Beitrag #1
Hilfe beim Problem mit dem Delay
Hey Leute,

ich habe ein kleines Problem mit meinem Programm, das nachfolgende Programm habe ich auf das Board übertragen und es soll etwa im groben folgendes machen:

  1. Pumpe 1 einschalten und Meldeleuchte einschalten
  2. Magnetventil 1 öffnen und nach Zeit wieder schließen, und dieses nach und nach bei allen 5 Ventilen
  3. Pumpe 1 ausschalten und Meldeleuchte ausschalten
  4. eine Stunde Warten
  5. Pumpe 2 einschalten und Meldeleuchte einschalten
  6. vordefinierte Zeit Warten
  7. Pumpe 2 ausschalten und Meldeleuchte ausschalten
  8. 11 Stunden Warten
  9. und dann alles von vorne


Folgendes führt er aber leider nur durch:
  1. Pumpe 1 einschalten und Meldeleuchte einschalten
  2. Magnetventil 1 öffnen und nach Zeit wieder schließen, und dieses nach und nach bei allen 5 Ventilen
  3. Pumpe 1 ausschalten und Meldeleuchte ausschalten
  4. und dann alles von vorne nur ohne Pausen


Sprich es erfolgt keine Pause zwischen dem Ausschalten von Pumpe 1 und dem Neubeginn. Und auch Pumpe 2 wird nicht angesteuert. Ich habe auch die Delays im Loop auch über Variabeln mit Zahlen versorgt aber auch ohne erfolg :-(

ich habe folgenden Code auf das Arduino Mega übertragen:
Code:
/*
  *****************
  * Magnetventile *
  *****************
  
  Reserveplaetze = 24, 26, 28
*/

int vent[] = {30, 32, 34, 36,
              22, 24, 26, 28};


/*
  *****************
  * Grosse Pumpen *
  *****************
  
  Reserveplaetze = 33, 35, 37, 23, 25, 27, 29
*/

int grPum[] = {31, 33, 35, 37,
               23, 25, 27, 29};
              
/*
  *****************
  * Meldeleuchten *
  *****************
  
  Reserveplaetze = 49, 51, 53
  Rot    = 39
  Gelb   = 41
  Gruen  = 43
  Blau   = 45
  Weiss  = 47
*/

int melde[] = {39, 41, 43, 45,
               47, 49, 51, 53};

/*
  **********************
  * Sonstige Variablen *
  **********************
*/

byte anzSen = 5;  // Anzahl der Sensoren
int pinCount = 8;
                  
byte melder = 1; // Gruen
byte ventAkt = 0;
byte grPumAkt = 0; // keine Aktiv (große Pumpe)

// Zeitvariablen
// *************
int PumVorlauf = 200;
int l_test = 500;

//int pause = 3600000; // Millisekunden
long pausegr = 39600000; // Millisekunden == 11 Stunden           --> Zeit zwischen den Giesvorgängen
long pausekl = 3600000; // Millisekunden == 1 Stunde              --> Ablaufzeit in Eimer

int giesZeit[] = {20000, 20000, 20000, 10000, 5000};    // Millisekunden
//int giesZeit[] = {2000, 2000, 2000, 2000, 2000};    // Millisekunden
int umfuellzeit = 10000;

void setup() {
  for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    pinMode(vent[thisPin], OUTPUT);
    digitalWrite(vent[thisPin], HIGH);
  }
  
  for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    pinMode(grPum[thisPin], OUTPUT);
    digitalWrite(grPum[thisPin], HIGH);
  }
  
  for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    pinMode(melde[thisPin], OUTPUT);
    digitalWrite(melde[thisPin], HIGH);
  }
  delay(l_test);

  setMelde(0, 1);
}


void loop() {
  Giessen();
  delay(3600000);
  ueberlauf_leeren();
  delay(39600000);
}


// Giessvorgang
// ============

void Giessen() {
  setMelde(4, 1);
  setgrPum(0, 1);
  delay(PumVorlauf);  
  for (int thisPin = 0; thisPin < anzSen; thisPin++) {
    setVent(thisPin, 1);
    delay(giesZeit[thisPin]);
    setVent(thisPin, 0);
  }
  setMelde(4, 0);
  setgrPum(0, 0);
}

// Ueberlaufgefaess leeren
// =======================

void ueberlauf_leeren() {
  setgrPum(1, 1);
  setMelde(3, 1);
  delay(umfuellzeit);
  setgrPum(1, 0);
  setMelde(3, 0);
}



// Ventilansteuerung
// =================

void setVent(byte VentAkt, bool Zustand) {
  if (Zustand) {  
      digitalWrite(vent[VentAkt], LOW);
  }
  else {
    digitalWrite(vent[VentAkt], HIGH);
  }
}

// gr. Pumpenansteuerung
// =====================

void setgrPum(byte grPumAkt, bool Zustand) {
  if (Zustand) {  
    digitalWrite(grPum[grPumAkt], LOW);
  }
  else {
    digitalWrite(grPum[grPumAkt], HIGH);
  }
}

// Funktion zum Setzen der Meldeleuchten
// =====================================

void setMelde(byte melder, bool Zustand) {
  if (Zustand) {  
    digitalWrite(melde[melder], LOW);
  }
  else {
    digitalWrite(melde[melder], HIGH);
  }
}


Ich habe den Arduino, die Relais und Pumpen und co über ein altes PC Netzteil versorgt um nicht 2 Netzteile seperat zu haben. Den Arduino habe ich über die 5V vom Netzteil über den Pin "Vin" angeschlossen. Dachte ich gebe das noch als Informations, auch wenn ich nicht sehe das da irgendwas kurz wegsackt oder so.

Danke schon mal für eure Hilfe.


Michael

PS: Ich weiß, die Pins sind nicht der Reihenfolge oben in den Arrays, hat damit zutun, dass ich beim Anschluß einwenig was verdreht habe, daher diese Reihenfolge.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.06.2015, 10:30 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2015 10:36 von raspido.)
Beitrag #2
RE: Hilfe beim Problem mit dem Delay
Ja kann ich auf Dauer gerne noch machen.

Nur das ganze muss ab Montag für eine Woche laufen und so schnell komme ich an sowas nicht dran.

Habe mir an sich ein RTC Chip an sich schon bestellt, ist aber noch nicht da. Das ganze soll erstmal nur ein "Provisorium" sein.

Nur wie gesagt die langen Delays ignoriert er total.

Oder gibt es da ggf. noch eine andere Möglichkeit was ähnliches zu machen? Nur die Ausgänge müssen auf HIGH bleiben, damit Relais aus sind.



Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.06.2015, 11:20
Beitrag #3
RE: Hilfe beim Problem mit dem Delay
Hey,

vielleicht ist ja das was für dich:

http://playground.arduino.cc/code/time

Ohne Uhrenbaustein fängt die Uhr nach dem starten bei 0:00 an.

Gruß..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.06.2015, 11:23
Beitrag #4
RE: Hilfe beim Problem mit dem Delay
...schreib doch einfach mal
long unsigned int delayvariable; als Datentyp.... millis() und delay() arbeiten damit... int ist dazu einfach zu klein um das zu verarbeiten. Wertebereich Exclamation

lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.06.2015, 12:13 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2015 12:13 von Thorsten Pferdekämper.)
Beitrag #5
RE: Hilfe beim Problem mit dem Delay
Hi,
wenn Du einfach so eine Zahl hinschreibst, dann wird sie (glaube ich) als int aufgefasst. Wenn Du eine long-Konstante haben willst, dann musst Du L dahinterschreiben. Also z.B.:
Code:
unsigned long pausegr = 39600000L;
Ich bin mir nicht 100%ig sicher, aber das wäre einen Versuch wert.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.06.2015, 15:23
Beitrag #6
RE: Hilfe beim Problem mit dem Delay
So Leute,

ich habe das Problem gefunden und wie folgt gelöst:

Code:
void loop() {
  ueberlauf_leeren();  
  Giessen();
  delay(39600000L);
}

Problem war scheinbar, da ich extern übers Netzteil versorgt habe und parallel dazu per USB verbunden war. Muss mir da evtl. was bauen. Entweder ein USB Kabel ohne Spannungsversorgung zum Programmieren oder alternativ dazu einen Schalter einbauen um ein Art Programmiermodus zu erzeugen.

Also dass man einfach Verbindung zwischen Netzteil und Arduino trennen und nur noch USB Versorgt.

Müsste mir da was überlegen. Das ist mir aufgefallen, wo ich einfach mal eine Verbindung getrennt hatte. Oder gibt es evtl. eine andere Alternative? Da ich lediglich 5 und 12V zum Angebot habe.


Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.06.2015, 08:28
Beitrag #7
RE: Hilfe beim Problem mit dem Delay
(13.06.2015 15:23)raspido schrieb:  Problem war scheinbar, da ich extern übers Netzteil versorgt habe und parallel dazu per USB verbunden war.
Das kann ein Problem sein, aber ich glaube nicht, dass Deine Symptome daher kommen.

Zitat:Oder gibt es evtl. eine andere Alternative? Da ich lediglich 5 und 12V zum Angebot habe.
Hast Du vielleicht die 5V am Vin-Pin hängen? Das ist zu wenig für Vin. Wenn Du mit stabilisierten 5V versorgen willst, dann musst Du an den Vcc-Pin.
Besser wäre aber in Deinem Fall wahrscheinlich, einfach die 12V an den Vin-Pin (NICHT Vcc!!!) hängen. Dann kannst Du ohne Stress USB anstöpseln, da der Arduino eine Schaltung hat, die in so einem Fall die 12V als Spannungsversorgung verwendet.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.06.2015, 08:40 (Dieser Beitrag wurde zuletzt bearbeitet: 14.06.2015 08:47 von raspido.)
Beitrag #8
RE: Hilfe beim Problem mit dem Delay
Okay, werde ich später dann umhängen. Also den Vin Pin auf 12V (auf der Stiftleiste auch?).

Nur hab die Nacht gemerkt, dass die Relais anfingen zu "Flattern" wärend der Pausenzeit. Kann das auch daher rühren oder gibt es noch einen anderen Verdacht? Netzteil sollte von Leistung ausreichen. Es kann bis zu 30A bei 5 V und 12 V liefern.

Vorallem weil selbst als ich ein und ausschalten des Netzteils (über Stunden / 12V UND 5V) keine Änderung bekommen habe. Muss gleich mal Gehäuse öffnen und Reset Drücken. Werde aber dafür mal einen Taster nach außen Legen.



Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Flipper (Pinball) brauche hilfe 7Til7 7 208 08.11.2016 17:06
Letzter Beitrag: Tommy56
  Oszilloskop für 10.-- / Bitte Hilfe bei Sketchzusammenführung recycler 8 2.638 13.03.2016 15:04
Letzter Beitrag: hotsystems
  Anfänger baut CNC Fräse und braucht Hilfe danieljan 6 1.950 13.01.2016 22:48
Letzter Beitrag: danieljan
  Benötige Hilfe bei der Projektumsetzung - Dosierung durch Trapezgewindespindel MadMaetz 19 3.323 14.12.2015 18:54
Letzter Beitrag: Binatone
  Hilfe bei Bluetooth Taster Street 14 2.805 11.09.2015 20:07
Letzter Beitrag: hotsystems
  Suche Hilfe: Arduino + Raspberry +RGB LED + Funk wuast94 7 2.573 13.08.2015 23:27
Letzter Beitrag: wuast94
  Brauch mal bitte eure hilfe holzwurm 2 1.606 26.07.2015 20:06
Letzter Beitrag: holzwurm
  Positionsleuchten an einem Modellflugzeug benötige Hilfe thermikflieger 6 1.719 12.07.2015 09:28
Letzter Beitrag: thermikflieger
  Hilfe bei Bluetooth controlled robot Arduino car usert23 5 2.612 11.06.2015 08:32
Letzter Beitrag: Thorsten Pferdekämper
  Hilfe für Delta Roboter Jonas_91 3 3.086 08.06.2015 10:40
Letzter Beitrag: fraju

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste