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:
  • 1 Bewertungen - 1 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
PZS Problem mit Ausgang schalten
28.06.2019, 15:53
Beitrag #1
PZS Problem mit Ausgang schalten
Hallo zusammen,
nach etwas längerer Pause kann ich wieder an meinen Programm für eine Pendelzugsteuerung arbeiten (klingt ja komisch "arbeiten").
Grundfunktionen laufen einwandfreu, Pendelsimulation mit Anzeige der einzelnen High/ Low ansteuerungen via LEDs klappt.
Dabei ist mir etwas aufgefallen:
in einen "Abschnitt" kann ich einen Ausgang nicht wie gedacht einschalten.
Obwohl, einschalten scheint ja zu gehen, aber die vorgesehene Einschaltdauer wird nicht erreicht.
Problemkind wird in den Zeilen 115, 149 und 157 geschaltet.
Vielleicht erkennt ja jemand den flaschen Fähler und zeigt mir auf, wie man es richtig macht.
Danke und einen schönen Grillabend!

der Code:

Code:
/*Pendelzugsteuerung
Ziel Y-Strecke im Pendelbetrieb
Aktuell Hin- und Rückfahrt A-B/ B-A
Version V5.2
HSQ1 -HSQ3= Hallsensoren
Staus_x dient der Verfolgung der einzelnen Schritte
Taster als Eventual Position
*/
//***** Angaben zum Entprellen*****
  #include <Bounce2.h>// Taster entprellen
  Bounce debouncer = Bounce();
  
//***** Konstanzen Zuordnung der Taster/ Hallsensoren*****

const int Taster = 2;
const int HSQ1 = 3;
const int HSQ2 = 4;
const int HSQ3 = 5;

boolean ausgeloest1 = false;
boolean ausgeloest2 = false;
boolean ausgeloest3 = false;
boolean ausgeloest4 = false;
//*************** Einschaltverzögerung *******

const uint32_t Wartezeit_1 = 5000; // xx sec. warten bevor Einschaltung
const uint32_t Ein_1 = 5000;       // xx sec. Einschaltdauer
uint32_t Startzeit_1,Einzeit_1;    //

const uint32_t Wartezeit_2 = 5000; // xx sec. warten bevor Einschaltung
const uint32_t Ein_2 = 5000;       // xx sec. Einschaltdauer
uint32_t Startzeit_2,Einzeit_2;    //

const uint32_t Wartezeit_3 = 5000; // xx sec. warten bevor Einschaltung
const uint32_t Ein_3 = 5000;       // xx sec. Einschaltdauer
uint32_t Startzeit_3,Einzeit_3;    //
//***** Konstanten Zuordnung der Ansteuerung Relais*****

const int Relais_HSQ1 = 7;
const int Relais_HSQ2 = 8;
const int Relais_HSQ3 = 9;
const int Relais_Weiche_Abz = 10;
const int Relais_Weiche_Ger1 = 11;
const int Relais_Fahrstrom_Hin = 12;
const int Relais_Fahrstrom_Rueck = 13;
const int Relais_Fahrstrom= 14;
const int Relais_Weiche_Ger2= 15;
const int TestC=16;
//***** Variablen der Startzeiten*****

unsigned long Startzeit1 =0;
unsigned long Startzeit2 =0;
unsigned long Startzeit3 =0;
unsigned long Startzeit4 =0;
unsigned long Startzeit5 =0;
unsigned long Startzeit6 =0;
unsigned long Startzeit7= 0;
  
//************************************

//*****Beginn Setup Bereich***********
void setup()
{
Serial.begin(9600);
  
//*****Pin Modus Input Hallsensoren/ Taster******

pinMode(Taster,INPUT); // Pin2 Reserve für spätere Funktion
pinMode(HSQ1,INPUT);   // Pin 3
pinMode(HSQ2,INPUT);   // Pin 4
pinMode(HSQ3,INPUT);   // Pin 5

//*****Pin Modus Output Relais ************

pinMode(Relais_HSQ1,OUTPUT); // Pin 7
pinMode(Relais_HSQ2,OUTPUT); // Pin 8
pinMode(Relais_HSQ3,OUTPUT); // Pin 9
pinMode(Relais_Weiche_Abz,OUTPUT); // Pin 10
pinMode(Relais_Weiche_Ger1,OUTPUT); // Pin 11
pinMode(Relais_Fahrstrom_Hin,OUTPUT);  // Pin 12
pinMode(Relais_Fahrstrom_Rueck,OUTPUT);   // Pin 13
pinMode(Relais_Fahrstrom,OUTPUT);      // Pin 14
pinMode(Relais_Weiche_Ger2, OUTPUT);
pinMode (TestC,OUTPUT);
//***** Entprellen vom Taster*****
debouncer.interval(5);
}
//*****Ende Setup Bereich*****
//*****Beginn Loop Bereich*****    
void loop()
{
static uint8_t status1 = 0;
static uint8_t status2 = 0;
static uint8_t status3 = 0;
uint32_t aktuelle_Millis = millis();

//*****Abfrage Hallsensoren HSQ1**********
//*****Fahrt von A nach B*******
Serial.println(status1);
if ((digitalRead(HSQ1)==LOW)&& (ausgeloest1==false)&&(status1==0))
{
  ausgeloest1= true;
  digitalWrite(Relais_Fahrstrom,LOW);
  digitalWrite(Relais_Fahrstrom_Hin,LOW);
  
//*****Abschalten Rückfahrt*****definierten Zustand herstellen

  digitalWrite(Relais_HSQ1,HIGH);
  digitalWrite( Relais_Fahrstrom,LOW);
  digitalWrite(Relais_Fahrstrom_Rueck,LOW);
  ausgeloest2= false;
  
//*****vorbereiten Abfahrt*****

  digitalWrite(Relais_Weiche_Ger1,HIGH); // Problem
  digitalWrite(Relais_Fahrstrom_Hin,HIGH);
  Startzeit1=millis();
}
else if (millis()-Startzeit1>=2000)
  {
   digitalWrite(Relais_HSQ1,LOW);
   digitalWrite(Relais_Weiche_Ger1,LOW);        
  }
if (status1 == 0 && !digitalRead(HSQ1))
{
  Startzeit_1=aktuelle_Millis;
  status1 = 1;
}
if (status1 == 1 && aktuelle_Millis - Startzeit_1 >= Wartezeit_1)
  {
   Einzeit_1 = aktuelle_Millis;
   digitalWrite(Relais_Fahrstrom,HIGH);
   status1 = 2;
  }
//*****Ankunft B*****    
//******Auschalten********
if ((digitalRead(HSQ2)==LOW)&& (ausgeloest2==false))
{
  ausgeloest2= true;      
  digitalWrite(Relais_Fahrstrom,LOW);
  digitalWrite(Relais_Fahrstrom_Hin,LOW);
  status1 = 3;
}
//*****Rückfahrt ******
//*****Fahrt von B nach A*****
if (status1==3)
{
  digitalWrite(Relais_HSQ2,HIGH);
  digitalWrite(Relais_Weiche_Ger1,HIGH); // Problem!
  digitalWrite(Relais_Fahrstrom_Rueck,HIGH);
  digitalWrite(Relais_Weiche_Ger2,HIGH);
  Startzeit2=millis();  
}
else if (millis()-Startzeit2>=2000)
{
  digitalWrite(Relais_HSQ2,LOW);
  digitalWrite(Relais_Weiche_Ger1,LOW);// Problem!
  digitalWrite(Relais_Weiche_Ger2,LOW);
}
if (status1 == 3 && !digitalRead(HSQ2))
{
  Startzeit_2=aktuelle_Millis;
  status1 = 4;
}
if (status1 == 4 && aktuelle_Millis - Startzeit_2 >= Wartezeit_2)
{
  Einzeit_2 = aktuelle_Millis;
  digitalWrite(Relais_Fahrstrom,HIGH);
ausgeloest1=false;
  status1 = 0;
}  


} // Ende Loop
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  I2C: Arduino DUE -- DS3231: Merkwürdiges Problem GuaAck 9 302 16.11.2019 22:39
Letzter Beitrag: hotsystems
  Problem mit Fingerprintlib nanofanman 10 268 16.11.2019 11:54
Letzter Beitrag: nanofanman
  Zustand vom Seriellen Ausgang auf Pin kopieren Holzauge 8 359 01.11.2019 16:51
Letzter Beitrag: Holzauge
  Problem mit den Daten aus dem CAN BUS Gary 10 445 19.10.2019 10:21
Letzter Beitrag: Gary
  Mp3-Modul library Problem Prospekteur 1 373 28.09.2019 20:30
Letzter Beitrag: hotsystems
  Problem mit #define GuaAck 6 396 24.09.2019 21:30
Letzter Beitrag: Tommy56
  16er Relay schalten funktioniert nur bis 8 Otter 4 741 11.03.2019 16:04
Letzter Beitrag: Otter
  Problem mit UniversalTelegramBot edi_ying 8 964 09.02.2019 15:11
Letzter Beitrag: Tommy56
Question (Denk)Problem mit char array[] ? ManfredH 3 694 05.02.2019 12:01
Letzter Beitrag: ManfredH
  USB Problem mit Linux HeikeF 5 964 03.02.2019 17:04
Letzter Beitrag: Tommy56

Gehe zu:


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