jp's plooibank

Arduino specifieke Software
Berichten: 20
Geregistreerd: 15 Okt 2019, 20:00

jp's plooibank

Berichtdoor jean-paul » 19 Dec 2019, 11:27

Beste leden,

ik ben niet zo handig in pc toestanden en hoop dat onderstaande een beetje duidelijk is.Alvast bedankt voor een
mogelijk antwoord.

Automatisatie plooibank. Een plooibank bestaat hoofdzakelijk uit 2 delen, de klembalk (om de plaat te klemmen) en de plooibalk( om de plaat te plooien)
In uitgangspositie drukt de klembalk de msKlemOpen en de plooibalk de msPlooiOpen (ms staat voor microswitch). Deze uitgangspositie heb ik in een latere fase
nodig om een "start automatisch" te kunnen uitvoeren;De klembalk wordt dicht gestuurd met venKlemToe en gecontroleerd door dsKlemToe (drukschakelaar).
Open sturen gebeurd door msKlemOpen. De plooibalk wordt "open" en "dicht" gestuurd door venPlooiOpen en venPlooiToe. Ik heb 3 modi : manueel ( drukknoppen)
, "semi-auto" (pedaal met 2 micrswitches msPedAfloop en en msPedTerug), automatisch (1 startdrukknop). Zowel de manuele modus als de semi-automatische
modus werkt perfect op voorwaarde dat ik de dsKlemToe vervang door een microswitch en deze zelf handdmatig druk;
Het probleem zit namelijk in de dsKlemToe (drukschakelaar). Bij het toesturen van het venKlemToe gaat de klembalk op zeker ogenblik een bepaalde druk
opbouwen. Bij een druk van +- 100bar gaat de dsKlemToe schakelen. Op dat ogenblik wordt het venKlemToe niet meer aangestuurd en gaat de druk dalen
naar +-40 bar. Hierdoor gaat het venKlemToe beginnen togglen.
De oplossing zou zijn het programma aan te passen door de dsKlemToe slechts 1 maal te controleren (opgaande of neergaande flank) en deze gedurende de
afloop en terugloop niet meer te bekijken tot msKlemOpen wordt gedrukt en het systeem terug in uitgangspositie staat.
Het terugvallen van de druk van 100 naar 40 bar is geen enkel probleem. Deze 40 bar is nog ruim voldoende om een plaat te klemmen;



/////////////// I N P U T ////////////

const int msKlemOpen = 22; // Instelbare schakelaar geeft aan klembalk open
const int dsKlemToe = 23; // Instelbare drukschakelaar geeft aan als de klembalk de plaat voldoende heeft geklemd
const int msPlooiOpen = 24; // Instelbare schakelaar geeft aan wanneer de plooibalk volledig terug is gestuurd
const int msPlooiToe = 25; // Instelbare schakelaar geeft aan wanneer de plaat onder de gewenste hoek is geplooid
const int msPedAfloop = 26; // De 1ste gedrukte pedaalschakelaar zorgt voor een automatische afloop bij blijvende bekrachtiging
const int msPedTerug = 27; // De 2de gedrukte pedaalschakelaar zorgt voor een terugloop van de automatische afloop bij blijvende bekrachtiging
const int schManueel = 28; // Driestandenschakelaar : stand manueel
const int schSemiAuto = 29; // : stand semi-automatisch
const int schAuto = 30; // : stand automatisch
const int dkKlemOpen = 31; // Drukknop opent de klembalk
const int dkKlemToe = 32; // Drukknop sluit de klembalk
const int dkPlooiOpen = 33; // Drukknop opent de plooibalk
const int dkPlooiToe = 34; // Drukknop sluit de plooibalk
const int dkAutoStart = 35; // Startdrukknop automatische afloop
const int opContK1 = 36; // Contact nooduitrelais K1 voor resetlamp
const int opContK3 = 37; // Contact resetrelais K3 voor resetlamp

/////////////// O U T P U T ///////////

const int venKlemOpen = 38; // Ventiel stuurt de klembalk open
const int venKlemToe = 39; // Ventiel stuurt de klembalk dicht
const int venPlooiOpen = 40; // Ventiel stuurt de plooibalk open
const int venPlooiToe = 41; // Ventiel stuurt de plooibalk dicht
const int lampAutoStart= 42; // Lamp : - blijvend oplichten : installatie klaar auto start
// - langzaam knipperen : installatie in beweging
// - snel knipperen : installlatie niet in uitgangspositie
const int lampReset = 43; // Lamp : - blijvend oplichten : nooduit is gereset
// - knipperen : nooduit nog te resette
// - uit : nooduit nog te ontgrendelen




int schManueelStat ;
int schSemiAutoStat ;
int schAutoStat ;
int dkKlemToeStat ;
int dkKlemOpenStat ;
int dkPlooiToeStat ;
int dkPlooiOpenStat ;
int venKlemToeStat ;
int venKlemOpenStat ;
int venPlooiToeStat ;
int venPlooiOpenStat ;
int dsKlemToeStat ;
int msKlemOpenStat ;
int msPlooiToeStat ;
int msPlooiOpenStat ;
int dkAutoStartStat ;
int lampAutoStartStat ;
int merker1 ;
int merker2 ;
int merker3 ;
int dt = 200 ;
int ot = 200 ;
int vt =300 ;
int c=0 ;
int msPedAfloopStat ;
int msPedTerugStat ;
int opContK1Stat ;
int opContK3Stat ;
int lampResetStat ;
int rt=200 ;
int ktt=1000 ;
int x ;


void setup() {

Serial.begin(9600);
pinMode (msKlemOpen, INPUT);
pinMode (dsKlemToe, INPUT);
pinMode (msPlooiOpen, INPUT);
pinMode (msPlooiToe, INPUT);
pinMode (msPedAfloop, INPUT);
pinMode (msPedTerug, INPUT);
pinMode (schManueel, INPUT);
pinMode (schSemiAuto, INPUT);
pinMode (schAuto, INPUT);
pinMode (venKlemOpen, OUTPUT);
pinMode (venKlemToe, OUTPUT);
pinMode (venPlooiOpen, OUTPUT);
pinMode (venPlooiToe, OUTPUT);
pinMode (dkKlemOpen, INPUT);
pinMode (dkKlemToe, INPUT);
pinMode (dkPlooiOpen, INPUT);
pinMode (dkPlooiToe, INPUT);
pinMode (dkAutoStart, INPUT);
pinMode (lampAutoStart,OUTPUT);
pinMode (opContK1, INPUT);
pinMode (opContK3, INPUT);
pinMode (msPedAfloop, INPUT);
pinMode (msPedTerug, INPUT);
pinMode (lampReset, OUTPUT);

}

void loop() {
opContK1Stat =digitalRead(opContK1);
opContK3Stat =digitalRead(opContK3);
lampResetStat =digitalRead(lampReset);
lampAutoStartStat=digitalRead(lampAutoStart);
schManueelStat =digitalRead(schManueel);
dkKlemToeStat =digitalRead(dkKlemToe);
dkKlemOpenStat =digitalRead(dkKlemOpen);
dkPlooiToeStat =digitalRead(dkPlooiToe);
dkPlooiOpenStat =digitalRead(dkPlooiOpen);
venKlemToeStat =digitalRead(venKlemToe);
venKlemOpenStat =digitalRead(venKlemOpen);
venPlooiToeStat =digitalRead(venPlooiToe);
venPlooiOpenStat =digitalRead(venPlooiOpen);
dsKlemToeStat =digitalRead(dsKlemToe);
msKlemOpenStat =digitalRead(msKlemOpen);
msPlooiToeStat =digitalRead(msPlooiToe);
msPlooiOpenStat =digitalRead(msPlooiOpen);
schAutoStat =digitalRead(schAuto);
msPedAfloopStat =digitalRead(msPedAfloop);
msPedTerugStat =digitalRead(msPedTerug);
dkAutoStartStat =digitalRead(dkAutoStart);


////////// RESET LAMP //////////

if (opContK1Stat==HIGH && opContK3Stat==HIGH) {
digitalWrite (lampReset,HIGH);
}
if (opContK1Stat==HIGH && opContK3Stat==LOW) {
digitalWrite (lampReset,HIGH);
delay (rt);
digitalWrite (lampReset,LOW);
delay (rt);
}
if (opContK1Stat==LOW && opContK3Stat==LOW) {
digitalWrite (lampReset,LOW);
}


////////// MANUELE MODUS //////////

if (schManueelStat==HIGH ) {

if (dkKlemToeStat==HIGH && dsKlemToeStat==LOW) {
digitalWrite (venKlemToe, HIGH);
}

if (dkKlemToeStat==LOW ) {
digitalWrite (venKlemToe,LOW);
}

if (dsKlemToeStat==HIGH) {
delay (500);
digitalWrite (venKlemToe,LOW);
}

if (dkKlemOpenStat==HIGH && msKlemOpenStat==LOW) {
digitalWrite (venKlemOpen, HIGH);
} else digitalWrite (venKlemOpen, LOW);


if (dkPlooiToeStat==HIGH && msPlooiToeStat==LOW) {
digitalWrite (venPlooiToe, HIGH);
} else digitalWrite (venPlooiToe, LOW);


if (dkPlooiOpenStat==HIGH && msPlooiOpenStat==LOW){
digitalWrite (venPlooiOpen, HIGH);
} else digitalWrite (venPlooiOpen, LOW);

}



//////////// SEMI- AUTOMATIC MODUS ///////////

if (schManueelStat==LOW && schAutoStat==LOW) {


if (msKlemOpenStat == LOW && msPedAfloopStat==HIGH && msPedTerugStat==HIGH) {
digitalWrite (venKlemToe,HIGH);
} else digitalWrite (venKlemToe,LOW);


if (msKlemOpenStat == LOW && msPedAfloopStat==HIGH && msPedTerugStat==LOW) {
digitalWrite (venKlemOpen,HIGH);
} else digitalWrite (venKlemOpen,LOW);


if (dsKlemToeStat == LOW && msPedAfloopStat==HIGH && msPedTerugStat==HIGH) {
digitalWrite (venKlemToe,HIGH);

} else digitalWrite (venKlemToe,LOW);


if (dsKlemToeStat == HIGH && msPedAfloopStat==HIGH && msPedTerugStat==HIGH) {

digitalWrite (venKlemToe,LOW);
digitalWrite (venPlooiToe,HIGH);
} else digitalWrite (venPlooiToe,LOW);


if (dsKlemToeStat == LOW && msPedAfloopStat==HIGH && msPedTerugStat==LOW) {
digitalWrite (venKlemOpen,HIGH);
} else digitalWrite (venKlemOpen,LOW);


if (msPlooiToeStat == LOW && msPedAfloopStat==HIGH && msPedTerugStat==LOW) {
digitalWrite (venPlooiOpen,HIGH);
digitalWrite (venKlemOpen,HIGH);
} else digitalWrite(venPlooiOpen,LOW);




if (msPedAfloopStat==LOW && msPedTerugStat==HIGH) {
digitalWrite (venKlemToe,LOW);
digitalWrite (venKlemOpen,LOW);
digitalWrite (venPlooiToe,LOW);
digitalWrite (venPlooiOpen,LOW); }

}


//////////// AUTOMATIC MODUS ///////////


if (schAutoStat==HIGH ) {

if (schManueelStat==HIGH) {
digitalWrite (lampAutoStart,LOW);
}
if (msKlemOpenStat==LOW || msPlooiOpenStat==LOW ){
digitalWrite (lampAutoStart,HIGH);
delay (rt);
digitalWrite (lampAutoStart,LOW);
delay (rt);}


if (msKlemOpenStat==HIGH && msPlooiOpenStat==HIGH) {
digitalWrite (lampAutoStart,HIGH);}
else digitalWrite (lampAutoStart,LOW);



}







if (msKlemOpenStat==HIGH) {
digitalWrite (venKlemOpen,LOW); }
if (dsKlemToeStat==HIGH) {
digitalWrite (venKlemToe,LOW); }
if (msPlooiOpenStat==HIGH){
digitalWrite (venPlooiOpen,LOW);}
if (msPlooiToeStat==HIGH) {
digitalWrite (venPlooiToe,LOW);}


}

Advertisement

Berichten: 20
Geregistreerd: 15 Okt 2019, 20:00

Re: jp's plooibank

Berichtdoor jean-paul » 19 Dec 2019, 11:36

Misschien is het volgend ook belangrijk.

De klembalk wordt gestuurd door venKlemToe of venKlemOpen.
Beide ventielen sturen een hydrauliek motor aan. De schakelaar dsKlemToe stuurt niet enkel het venKlemToe of venKlemOpen maar ook het venPlooiToe.
De plooibalk wordt gestuurd door 2 cylinders

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: jp's plooibank

Berichtdoor Gij Kieken » 19 Dec 2019, 12:15

Ik heb niet de flow van de hele sketch doorlopen, je zou een variable (lees flag) kunnen Setten wanneer de voorwaarde voor <dsKlemToe> vodaan is.
Deze flag verder in je programma gebruiken i.p.v. <dsKlemToe> en ze pas Resetten als de cyclus doorlopen is.
Zorg er wel voor dat de nodige veiligheidsmaatregelen aanwezig zijn (Veiligheidsscherm dicht,lichtscherm,etc).
Ofwel een extra dsKlemToe_Extra drukschakelaar kunnen toevoegen op een lagere druk ingesteld +-40bar en deze uitlezen in de voorwaarden.

Berichten: 20
Geregistreerd: 15 Okt 2019, 20:00

Re: jp's plooibank

Berichtdoor jean-paul » 19 Dec 2019, 17:54

Hallo GK,

Bedankt voor je snelle antwoord. Dit is volgens mij ook inderdaad ook de oplossing. Ik weet niet echter niet hoe ik zo een sketch moet schrijven met een set en reset.
Kan Je geen korte sketch als voorbeeld schrijven met en set en reset ? Het toepassen in het programma zal dan wel lukken volgens mij

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: jp's plooibank

Berichtdoor Gij Kieken » 19 Dec 2019, 19:29

Hallo Jp, het is niet kwalijk bedoeld maar ik was de mening toe gedaan dat je de sketch zelf had geschreven.
Als je niet snapt wat er nu geschreven is ,is het veel te gevaarlijk om zomaar lukraak verder te experimenteren.
De beste manier voor jouw zou er in bestaan de aanwezige drukschakelaar te verminderen tot de veilige houd druk +-40bar, op die manier blijven je geteste voorwaarden gelden.

Berichten: 20
Geregistreerd: 15 Okt 2019, 20:00

Re: jp's plooibank

Berichtdoor jean-paul » 19 Dec 2019, 20:14

Hoi GK,

Ik heb deze plooibank volledig alleen omgebouwd met een hydromotor en 2 cylinders. Mijn funktie
bij Ford AG destijds was universeel elektromekanieker. Onze job was zowel mechanisch, elektrisch als programmatie van robotten (Kuka,ABB,..) en een klein beetje PLC Siemsens S5, later S7. (ben reeds 13 jaar met rustpensioen)
Bij deze wil ik maar duidelijk maken dat ik weet met wat ik bezig ben. Ik ben slechts kortelings
begonnen met Arduino en ben er nog niet goed in thuis
Je hoeft je helemaal niet te excuseren. Ik vind het zelfs positief dat je zo reageert. Ik heb deze sketch wel degelijk zelf volledig geschreven.
Heb een tijdje geleden ook eens een vraag gesteld over een "merker". Jij en Koepel hebben
daar toen op geantwoord. Heb ook al zitten zoeken op het net naar het setten en resetten, maar
kan daar niets over vinden. Wel over het 'latchen' maar dit gaat ook niet omdat dan de toestand
ook iedere keer wordt bekeken bij verandering.
Het houden van een "veilige" druk van 40 bar ( is trouwens even "pijnlijk" als 100 bar)gaat ook niet.
De druk gaat steeds een beetje schommelen, zodat het ventiel gaat toggelen.
Een mogelijkheid is misschien is een hydraulisch ander 4/3 ventiel waarbij in rust de -A-B-P ingangen
worden verbonden en de T ingang wordt afgesloten. Zelfs dan ben ik niet zeker of het gaat werken. Ook mogelijk misschien is een 2de drukschakelaar. Dit zijn echter mogelijkhydraulische oplossing die erg prijzig zijn en waarvan het resultaat nog af te wachten valt.
De oplossing is het setten van de "dsKlemToe" en na een cyclus deze resetten. Het is misschien
heel eenvoudig maar ik weet niet hoe . Je mag me ook laten weten waar ik dit kan vinden als
je liever geen sketch wil schrijven.
Nogmaals bedankt

groeten
jp

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: jp's plooibank

Berichtdoor Gij Kieken » 19 Dec 2019, 20:42

Ok ,het is goed om te horen dat je weet wat er allemaal speelt.
Inderdaad een 4/3 hydraulisch ventiel die kortsluit zou al een betere hardware oplossing zijn.
Om echt doelgericht te kunnen antwoorden moet ik de sketch beter bekijken, dit inzake veiligheids problemen.
Zal je verder op weg helpen maar zit nu krap in tijd door andere zaken.
Die flag of merker zou een bijkomende boolean variabele zijn (true ) wanneer aan de voorwaarde voldaan is dsKlem dicht
en pas op het einde van de cyclus (werkstuk geplooid en ram terug naar boven) terug op false zetten ,klaar voor het volgende werkstuk.

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: jp's plooibank

Berichtdoor Gij Kieken » 19 Dec 2019, 22:12

Wat gebeurt er als je gedurende de ganse cyclus voor een werkstuk te plooien druk blijft steken op ventiel klem dicht?
Krijgt de olie te warm? gaat de pomp in overdruk?trekt de pomp het niet meer en gaat de termische veiligheid eruit?
Op het eerste gezicht staan de haakjes in automatische mode ook niet helemaal juist, maar der zitten nog een aantal rareteiten in het programma.

Berichten: 20
Geregistreerd: 15 Okt 2019, 20:00

Re: jp's plooibank

Berichtdoor jean-paul » 19 Dec 2019, 23:46

Hoi GK,

Je bent er precies nog mee bezig alhoewel je weinig tijd hebt , bedankt hiervoor.
De pomp blijft continu draaien als er geen ventiel is aan gestuurd of als de klembalk onder druk staat. Vanaf een bepaalde druk gaat het overdrukventiel aan de pomp open. Ik werk zo al jaren manueel ( vroeger werkte dit met relays zonder Arduino) en dit werkt prima. Nooit geen probleem
gehad met opwarmen van olie. Moet natuurlijk geen serie werk produceren is enkel voor eigen gebruik.

Met de automatische modus moet je geen rekening, daar ben ik nog mee aan het rommelen en
had ik eigenlijk nog niet moeten versturen.
Ik ben al de ganse dag op het net aan het zoeken naar een set en reset maar kan echt niet
vinden hoe ik dit moet maken.

groeten
jp
.

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: jp's plooibank

Berichtdoor Gij Kieken » 20 Dec 2019, 13:29

Hallo Jp,
Er zijn verschillende manieren om tot een oplossing te komen.
Maar je moet toch ergens starten.Alles afwijzen en zeggen je
zou beter dit en dat ,daar heb je niet veel aan.
Dus gaan we proberen een oplossing te geven aan je vraag.
Des al niet te min zou het goed zijn om eens te zoeken op
Arduino functies en beetje bij beetje je programma op te delen in een aantal
functies.
Voordeel het wordt overzichtelijker,probeer niet alles in een functie te steken,
een keer je een functie geshreven en getest heb kun je ze verder in je programma
gebruiken,etc...
De bedoeling is dat je de overtollige comentaren en sterretjes er nadien uithaalt.
Voorlopig nemen we ook alleen maar het gedeelte manueel onder de loep,aan jouw om
semi en vol automatisch verder af te werken.
Het voorbeeld van gebruik Merker is ook niet echt het beste,eigenlijk gebruik ik jouw
dsKlemToeStat als merker en merKlemToestand is eigenlijk een variabele
De keuze van variabelen namen is ook aan jouw om die waar nodig aan te passen.
Maak er misschien varKlemToestand en merdsKlemToeStat,dus verwarring alom ,maak ze passend.

Ik moet me wat vertrouwd maken met de namen van je variabelen en overal
HIGH en LOW gebruiken zegt soms ook niet veel vandaar,
In de declaraties,
#define PRESSURE_ON HIGH //Geef betekenis aan HIGH
#define PRESSURE_OFF LOW //Geef betekenis aan LOW
Vervolgens mmak ik een merker aan
bool merKlemToestand; //Twee mogelijkheden 1 of 0
In de loop kijk je wanneer de druk bereikt is en Set je dsKlemToeStat
if (merKlemToestand) { //Als de druk bereikt is schakel dan dsKlemToeStat
dsKlemToeStat = PRESSURE_ON;
Verder in de loop als de microswitch klem open gedrukt is en het ventiel spanningsloos
RESET dsKlemToeStat = PRESSURE_OFF;
De scetch is niet afgewerkt maar het kan een begin zijn.
Gebruik code tags om te plaatsen en druk zo nu en dan eens <ctrl>t in de IDE om alles
wat te schikken.
Als het niet goed werkt dan zijn allicht de voorwaarden en de plaats in de loop voor de
Reset niet goed gekozen.
In de eerste test Run's moet je maar zonder werkstuk werken en de microswitchen ver
genoeg plaatsen dan kan er niet veel mis lopen.
Doe ook iets aan al die HIGH,LOW toestanden,maak er iets leesbaarder van met bv
#define OPEN & DICHT ik zeg maar iets...
Code: Alles selecteren
//Declaraties
#define PRESSURE_ON HIGH //Geef betekenis aan HIGH
#define PRESSURE_OFF LOW //Geef betekenis aan LOW

/////////////// I N P U T ////////////

const int msKlemOpen = 22; // Instelbare schakelaar geeft aan klembalk open
const int dsKlemToe = 23; // Instelbare drukschakelaar geeft aan als de klembalk de plaat voldoende heeft geklemd
const int msPlooiOpen = 24; // Instelbare schakelaar geeft aan wanneer de plooibalk volledig terug is gestuurd
const int msPlooiToe = 25; // Instelbare schakelaar geeft aan wanneer de plaat onder de gewenste hoek is geplooid
const int msPedAfloop = 26; // De 1ste gedrukte pedaalschakelaar zorgt voor een automatische afloop bij blijvende bekrachtiging
const int msPedTerug = 27; // De 2de gedrukte pedaalschakelaar zorgt voor een terugloop van de automatische afloop bij blijvende bekrachtiging
const int schManueel = 28; // Driestandenschakelaar : stand manueel
const int schSemiAuto = 29; // : stand semi-automatisch
const int schAuto = 30; // : stand automatisch
const int dkKlemOpen = 31; // Drukknop opent de klembalk
const int dkKlemToe = 32; // Drukknop sluit de klembalk
const int dkPlooiOpen = 33; // Drukknop opent de plooibalk
const int dkPlooiToe = 34; // Drukknop sluit de plooibalk
const int dkAutoStart = 35; // Startdrukknop automatische afloop
const int opContK1 = 36; // Contact nooduitrelais K1 voor resetlamp
const int opContK3 = 37; // Contact resetrelais K3 voor resetlamp

/////////////// O U T P U T ///////////

const int venKlemOpen = 38; // Ventiel stuurt de klembalk open
const int venKlemToe = 39; // Ventiel stuurt de klembalk dicht
const int venPlooiOpen = 40; // Ventiel stuurt de plooibalk open
const int venPlooiToe = 41; // Ventiel stuurt de plooibalk dicht
const int lampAutoStart = 42; // Lamp : - blijvend oplichten : installatie klaar auto start
// - langzaam knipperen : installatie in beweging
// - snel knipperen : installlatie niet in uitgangspositie
const int lampReset = 43; // Lamp : - blijvend oplichten : nooduit is gereset
// - knipperen : nooduit nog te resette
// - uit : nooduit nog te ontgrendelen

int schManueelStat ;
int schSemiAutoStat ;
int schAutoStat ;
int dkKlemToeStat ;
int dkKlemOpenStat ;
int dkPlooiToeStat ;
int dkPlooiOpenStat ;
int venKlemToeStat ;
int venKlemOpenStat ;
int venPlooiToeStat ;
int venPlooiOpenStat ;
int dsKlemToeStat ;
int msKlemOpenStat ;
int msPlooiToeStat ;
int msPlooiOpenStat ;
int dkAutoStartStat ;
int lampAutoStartStat ;
int merker1 ;
int merker2 ;
int merker3 ;
int dt = 200 ;
int ot = 200 ;
int vt = 300 ;
int c = 0 ;
int msPedAfloopStat ;
int msPedTerugStat ;
int opContK1Stat ;
int opContK3Stat ;
int lampResetStat ;
int rt = 200 ;
int ktt = 1000 ;
int x ;
//**********************************
//Maak een Merker aan ,gebruik bv het voorvoegsel mer
//**********************************
bool merKlemToestand; //Twee mogelijkheden 1 of 0
//**********************************

void setup() {
  Serial.begin(9600);
  pinMode (msKlemOpen, INPUT);
  pinMode (dsKlemToe, INPUT);
  pinMode (msPlooiOpen, INPUT);
  pinMode (msPlooiToe, INPUT);
  pinMode (msPedAfloop, INPUT);
  pinMode (msPedTerug, INPUT);
  pinMode (schManueel, INPUT);
  pinMode (schSemiAuto, INPUT);
  pinMode (schAuto, INPUT);
  pinMode (venKlemOpen, OUTPUT);
  pinMode (venKlemToe, OUTPUT);
  pinMode (venPlooiOpen, OUTPUT);
  pinMode (venPlooiToe, OUTPUT);
  pinMode (dkKlemOpen, INPUT);
  pinMode (dkKlemToe, INPUT);
  pinMode (dkPlooiOpen, INPUT);
  pinMode (dkPlooiToe, INPUT);
  pinMode (dkAutoStart, INPUT);
  pinMode (lampAutoStart, OUTPUT);
  pinMode (opContK1, INPUT);
  pinMode (opContK3, INPUT);
  pinMode (msPedAfloop, INPUT);
  pinMode (msPedTerug, INPUT);
  pinMode (lampReset, OUTPUT);
}

void loop() {
  opContK1Stat = digitalRead(opContK1);
  opContK3Stat = digitalRead(opContK3);
  lampResetStat = digitalRead(lampReset);
  lampAutoStartStat = digitalRead(lampAutoStart);
  schManueelStat = digitalRead(schManueel);
  dkKlemToeStat = digitalRead(dkKlemToe); //Lees de status drukknop klem dicht
  dkKlemOpenStat = digitalRead(dkKlemOpen);
  dkPlooiToeStat = digitalRead(dkPlooiToe);
  dkPlooiOpenStat = digitalRead(dkPlooiOpen);
  venKlemToeStat = digitalRead(venKlemToe);
  venKlemOpenStat = digitalRead(venKlemOpen);
  venPlooiToeStat = digitalRead(venPlooiToe);
  venPlooiOpenStat = digitalRead(venPlooiOpen);
  //*******************************************
  //Het kan anders maar om de trend wat aan te houden
  //*******************************************
  //dsKlemToeStat = digitalRead(dsKlemToe); //Pressiostaat klem dicht
  merKlemToestand = digitalRead(dsKlemToe); //Pressiostaat klem dicht
  //*******************************************
 
  msKlemOpenStat = digitalRead(msKlemOpen);
  msPlooiToeStat = digitalRead(msPlooiToe);
  msPlooiOpenStat = digitalRead(msPlooiOpen);
  schAutoStat = digitalRead(schAuto);
  msPedAfloopStat = digitalRead(msPedAfloop);
  msPedTerugStat = digitalRead(msPedTerug);
  dkAutoStartStat = digitalRead(dkAutoStart);
 
  //***********************************
  //Hier zetten zetten we de Merker AAN
  //Als de toestand van digitalRead(dsKlemToe) nu verandert blijft dsKlemToeStat gezet
  if (merKlemToestand) { //Als de druk bereikt is schakel dan dsKlemToeStat
    dsKlemToeStat = PRESSURE_ON;
  }
  //***********************************
 
  ////////// RESET LAMP //////////
  if (opContK1Stat == HIGH && opContK3Stat == HIGH) {
    digitalWrite (lampReset, HIGH);
  }
  if (opContK1Stat == HIGH && opContK3Stat == LOW) {
    digitalWrite (lampReset, HIGH);
    delay (rt);
    digitalWrite (lampReset, LOW);
    delay (rt);
  }
  if (opContK1Stat == LOW && opContK3Stat == LOW) {
    digitalWrite (lampReset, LOW);
  }
  ////////// MANUELE MODUS //////////
  if (schManueelStat == HIGH ) {
    if (dkKlemToeStat == HIGH && dsKlemToeStat == PRESSURE_OFF) {
      digitalWrite (venKlemToe, HIGH);
    }
    if (dkKlemToeStat == LOW ) {
      digitalWrite (venKlemToe, LOW);
    }
    if (dsKlemToeStat == PRESSURE_ON) { //Als er een halve seconde druk is
      delay (500);
      digitalWrite (venKlemToe, LOW); //Ventiel spanningsloos
    }
    if (dkKlemOpenStat == HIGH && msKlemOpenStat == LOW) {
      digitalWrite (venKlemOpen, HIGH); //Doe de klem terug open
    } else digitalWrite (venKlemOpen, LOW);
    if (dkPlooiToeStat == HIGH && msPlooiToeStat == LOW) {
      digitalWrite (venPlooiToe, HIGH);
    } else digitalWrite (venPlooiToe, LOW);
    if (dkPlooiOpenStat == HIGH && msPlooiOpenStat == LOW) {
      digitalWrite (venPlooiOpen, HIGH); //De ram terug naar boven
    } else digitalWrite (venPlooiOpen, LOW);
    //*********************************
    if ((venKlemOpen == LOW) && (msKlemOpenStat == HIGH)) { //Als de klem open is en spanningsloos
      dsKlemToeStat = PRESSURE_OFF; //Als de klem open is RESET toestand
    }
    //*********************************
  }
  //////////// SEMI- AUTOMATIC MODUS ///////////
  if (schManueelStat == LOW && schAutoStat == LOW) {
    if (msKlemOpenStat == LOW && msPedAfloopStat == HIGH && msPedTerugStat == HIGH) {
      digitalWrite (venKlemToe, HIGH);
    } else digitalWrite (venKlemToe, LOW);
    if (msKlemOpenStat == LOW && msPedAfloopStat == HIGH && msPedTerugStat == LOW) {
      digitalWrite (venKlemOpen, HIGH);
    } else digitalWrite (venKlemOpen, LOW);
    if (dsKlemToeStat == LOW && msPedAfloopStat == HIGH && msPedTerugStat == HIGH) {
      digitalWrite (venKlemToe, HIGH);
    } else digitalWrite (venKlemToe, LOW);
    if (dsKlemToeStat == HIGH && msPedAfloopStat == HIGH && msPedTerugStat == HIGH) {
      digitalWrite (venKlemToe, LOW);
      digitalWrite (venPlooiToe, HIGH);
    } else digitalWrite (venPlooiToe, LOW);
    if (dsKlemToeStat == LOW && msPedAfloopStat == HIGH && msPedTerugStat == LOW) {
      digitalWrite (venKlemOpen, HIGH);
    } else digitalWrite (venKlemOpen, LOW);
    if (msPlooiToeStat == LOW && msPedAfloopStat == HIGH && msPedTerugStat == LOW) {
      digitalWrite (venPlooiOpen, HIGH);
      digitalWrite (venKlemOpen, HIGH);
    } else digitalWrite(venPlooiOpen, LOW);
    if (msPedAfloopStat == LOW && msPedTerugStat == HIGH) {
      digitalWrite (venKlemToe, LOW);
      digitalWrite (venKlemOpen, LOW);
      digitalWrite (venPlooiToe, LOW);
      digitalWrite (venPlooiOpen, LOW);
    }
  }
  //////////// AUTOMATIC MODUS ///////////
  if (schAutoStat == HIGH ) {
    if (schManueelStat == HIGH) {
      digitalWrite (lampAutoStart, LOW);
    }
    if (msKlemOpenStat == LOW || msPlooiOpenStat == LOW ) {
      digitalWrite (lampAutoStart, HIGH);
      delay (rt);
      digitalWrite (lampAutoStart, LOW);
      delay (rt);
    }
    if (msKlemOpenStat == HIGH && msPlooiOpenStat == HIGH) {
      digitalWrite (lampAutoStart, HIGH);
    }
    else digitalWrite (lampAutoStart, LOW);
  }
  if (msKlemOpenStat == HIGH) {
    digitalWrite (venKlemOpen, LOW);
  }
  if (dsKlemToeStat == HIGH) {
    digitalWrite (venKlemToe, LOW);
  }
  if (msPlooiOpenStat == HIGH) {
    digitalWrite (venPlooiOpen, LOW);
  }
  if (msPlooiToeStat == HIGH) {
    digitalWrite (venPlooiToe, LOW);
  }
}

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Clarazkaessew, Google [Bot] en 18 gasten