Vijver filter besturing loopt af en toe vast

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 3
Geregistreerd: 19 Mrt 2016, 12:33

Vijver filter besturing loopt af en toe vast

Berichtdoor DoArduino » 19 Mrt 2016, 13:18

Hallo.
Ik ben een vijverfilter aan het maken en nou dacht ik dat de arduino dat makkelijk moet kunnen aansturen.
er zit een vlotter in de bak en ik heb een handmatige spoelknop met een lampje erin.
als de vlotter aanspringt dan zou ik graag willen dat de 24v motor 5 seconden draait.
Stel dat de vlotter niet meer naar beneden gaat en het filter dus te vies is moet naar 20 seconden dat de vlotter een signaal blijft geven de vijverpomp uitvallen.
en het liefst moet de 24v motor ook nog 1x in de 60 seconden een seconden draaien

even een aantal dingen op een rijtje hoe ik het bedacht had.

Vlotter zit op pin2 input
Knop handmatig zit op pin 3 Input
Vlotter killsignaal op pin4 input

24v motor op pin 13 output
Sproeibaan op pin 12 output
Vijverpomp op pin 11 output

Nou heb ik zelf een programma geschreven alleen deze loopt soms vast
nu even de vraag waar ligt dat aan en is deze code misschien veel eenvoudiger te maken voor de arduino




cpp code
const int Vlotter = 2;     // vlotter sensor
const int VlotterKill = 4; // vlotter sensor
const int Motor = 13; // 24 volt motor op zeef
const int HandKnop = 3; // handmatig spoelen
const int Sproeier = 12; // Sproei installatie
const int Verlichting = 11; // Verlichting handmatige schakelaar
const int Kill = 10; // Killswitch voor de vijverpomp

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(Motor, OUTPUT);
// initialize the LED pin as an output:
pinMode(Sproeier, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(Vlotter, INPUT);
// initialize the pushbutton pin as an input:
pinMode(HandKnop, INPUT);
// initialize the pushbutton pin as an output:
pinMode(Verlichting, OUTPUT);
// initialize the pushbutton pin as an output:
pinMode(Kill, OUTPUT);
// initialize the pushbutton pin as an output:
pinMode(VlotterKill, INPUT);

}

void loop() {

buttonState = digitalRead(VlotterKill);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
delay(10000);
digitalWrite(Kill, HIGH);
delay(20000);

} else {
// turn LED off:
digitalWrite(Kill, LOW);

buttonState = digitalRead(HandKnop);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(Motor, LOW);
digitalWrite(Sproeier, LOW);
digitalWrite(Verlichting, LOW);
delay(5000);

} else {
// turn LED off:
digitalWrite(Motor, HIGH);
digitalWrite(Sproeier, HIGH);
digitalWrite(Verlichting, HIGH);

// read the state of the pushbutton value:
buttonState = digitalRead(Vlotter);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(Motor, LOW);
delay(5000);

} else {
// turn LED off:
digitalWrite(Motor, HIGH);
}
}
}
}


ik ben heel erg benieuwd alvast bedankt

Advertisement

Berichten: 3
Geregistreerd: 19 Mrt 2016, 12:33

Re: Vijver filter besturing loopt af en toe vast

Berichtdoor DoArduino » 20 Mrt 2016, 11:01

Ik denk dat ik er al uit ben althans de arduino houd zich sterk op het moment
het enige wat ik maar niet voor elkaar krijg is de motor 1 keer per minuut een seconde te laten draaien
als ik dat er probeer in te schrijven reageert het programma niet meer op mijn knoppen
heeft iemand misschien een idee hoe ik dat er nog in zou kunnen bakken
de code ziet er nu als volgt uit

as3 code
// aantal sensoren en uitgangen
// met de volgende pinnummers:
const int Vlotter = 2; // vlotter sensor
const int VlotterKill = 4; // vlotter sensor
const int Motor = 13; // 24 volt motor op zeef
const int HandKnop = 3; // handmatig spoelen
const int Sproeier = 12; // Sproei installatie
const int Verlichting = 11; // Verlichting handmatige schakelaar
const int Kill = 10; // Killswitch voor de vijverpomp
const int Paniek = 9; // Killswitch voor de vijverpomp




// variables will change:
int vlotterkill = 0; // variable for reading the pushbutton status
int vlotter = 1; // variable for reading the pushbutton status
int handknop = 2; // variable for reading the pushbutton status

void setup() {
// wat zijn in en outputs
pinMode(Motor, OUTPUT);
pinMode(Sproeier, OUTPUT);
pinMode(Vlotter, INPUT);
pinMode(HandKnop, INPUT);
pinMode(Verlichting, OUTPUT);
pinMode(Kill, OUTPUT);
pinMode(VlotterKill, INPUT);
pinMode(Paniek, OUTPUT);


}

void loop(){




handknop = digitalRead(HandKnop);

// leest de status van de handmatige knop
if (handknop == HIGH) {
//als de handmatige knop word ingedrukt dan.....
digitalWrite(Motor, LOW);
digitalWrite(Sproeier, LOW);
digitalWrite(Verlichting, LOW);
delay(5000); // de duur van een hantmatige spoelbeurt in milli seconde 1000 is 1 seconde

}
else {

digitalWrite(Motor, HIGH);
digitalWrite(Sproeier, HIGH);
digitalWrite(Verlichting, HIGH);




// leest de stattus van de vlotter
vlotter = digitalRead(Vlotter);

// als de vlotter hoog is dan....
if (vlotter == HIGH) {
// turn LED on:
digitalWrite(Motor, LOW);
delay(5000); //de tijd van vlotterhoog tot in storing in milli seconde 1000 is 1 seconde
digitalWrite(Kill, HIGH);
digitalWrite(Paniek, LOW);


}
else {
// turn LED off:
digitalWrite(Motor, HIGH);
digitalWrite(Paniek, HIGH);


vlotterkill = digitalRead(VlotterKill);


// Deze codes staan er in om de kill witch weer naar laag te trekken
// maar het heeft geen enkele functie input 3 moet ook altijd met ground verbonden zijn
if (vlotterkill == HIGH) {
// turn LED on:
delay(10000);
digitalWrite(Kill, HIGH);
delay(20000);

}
else {
// turn LED off:
digitalWrite(Kill, LOW);

}
}
}
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Vijver filter besturing loopt af en toe vast

Berichtdoor nicoverduin » 20 Mrt 2016, 12:59

Ik zou (voor je eigen leesbaarheid) een keer de source formatteren (zit gewoon in de IDE). Dan klopt het inspringen beter. Nu heb je 3 accolades op het eind onder elkaar en dat maakt de code zeer verwarrend.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Vijver filter besturing loopt af en toe vast

Berichtdoor shooter » 20 Mrt 2016, 15:43

ja inderdaad nico een keer ctrl T doen is handig.

@Do
je programma ziet er eigenlijk prima uit, goed commentaar en simpel.
zoals je zelf ook wel ziet zitten er veel delay in. dat betekent echter dat het programma daar gewoon stopt tot de tijd voorbij is.
les 2 van iedereen is blink without delay. probeer dat eens.
vervolgens lijkt het mij handig als je jouw complete programma herdenkt met een state machine en dus een flinke stap vooruit in je programmeerkundigeervaring (kijk nico zonder komma)

zorg ervoor dat de loop heel vaak doorlopen wordt, dan kun je dus heel snel een knop detecteren etc.
dat doe je dus in de loop met if (knop) {functie uitvoeren}
de andere states doe je ook met case , bedenk dan ook dat je dar een timer kunt starten en in de loop vraag je dan if millis()-timestart> wachttijd en de state==...) {functie uitvoeren} let wel op dat je de functie maar eenmalig doet.
paul deelen
shooter@home.nl

Berichten: 3
Geregistreerd: 19 Mrt 2016, 12:33

Re: Vijver filter besturing loopt af en toe vast

Berichtdoor DoArduino » 21 Mrt 2016, 19:47

Bedankt nico en shooter
Ik ben inderdaad nog niet zo lang bezig met de arduino maar kan elke tip goed gebruiken.
Dus als ik jullie goed begrijp kan ik eventueel voor 1 keer in die minuut draaien het beste een timer starten.
Bedankt voor de tips is ga er meteen mee aan de gang.

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 58 gasten