Standkachel besturen

algemene C code
Berichten: 12
Geregistreerd: 17 Jan 2019, 20:50

Standkachel besturen

Berichtdoor Bartsmetsers » 17 Jan 2019, 21:08

Ik heb een oude Eberspacher D4L. Dit is een 24v diesel standkachel. Het is een oudje met defecte besturing. ook niks meer van leverbaar uiteraard.
Nu wil ik de hele besturing overnemen met een arduino.
ik heb een uno, 2 voudig relais module hoog actief, 1 voudig 30A relais modulle voor gloeier, transistor swich en zo nodig de ne555.

het eerst aan laten gaan van de ventilator,
dan gloeien,
luchtklep open,
brandstof pompje aansturen

Dit krijg ik dan nog wel in een programmatje

maar het brandstofpompje moet 3x per sec een 24v puls krijgen. dat weet ik nog steeds niet hoe ik dit beste kan doen.
dan moet het programma ook nog door blijven lopen om intussen 2 temperaturen, 1 beveiligingscontact en 2 schakelaartjes in de gaten te houden ivm beveiliging en bediening.


wie o wie wil en kan mij hier bij helpen.

het is voor mij wat lastig het code schrijven onder de knie te krijgen.
ben nog bezig met andere vele grotere project. neem hier gewoon flink de tijd voor en dat lukt uit eindelijk wel.
Helaas is dit projectje een enorme spoed gevalletje. die kachel moet zsm werken.
mijn hele bootje is aan het schimmelen nu

Advertisement

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

Re: Standkachel besturen

Berichtdoor Gij Kieken » 17 Jan 2019, 21:16

Het Bartsmetsers,
Je zal je soelaas moeten vinden in Blink W/O Delay denk ik.
Zo wordt je code niet blocking en kan je andere zaken monitoren.

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

Re: Standkachel besturen

Berichtdoor shooter » 17 Jan 2019, 21:18

In de loop een timer opnemen,zoals
cpp code
if(pomp && ((millis()-tijd1)>=wachtijd))
{tijd1=millis();// reset of timer
if pompaan {zet pomp uit;
wachttijd=stoptijd;}
else {zet pomp aan;wachtijd=werktijd;
}

probeer maar eens
paul deelen
shooter@home.nl

Berichten: 12
Geregistreerd: 17 Jan 2019, 20:50

Re: Standkachel besturen

Berichtdoor Bartsmetsers » 17 Jan 2019, 21:49

ik moet ff bootschapje doen dan ga ik aan de gang hier mee.
zal eerst even precies de schakel volgorde, tijden, pinout ect uitschrijven.
vervolgens het programma schrijven.


zal dan eerst even de reactie van shooter eens uitproberen.


Vrees dat ik jullie hulp flink nodig ga hebben hier bij mensen.
dit gaat en moet nu veel te snel voor mijn gestreste koppie.

Berichten: 12
Geregistreerd: 17 Jan 2019, 20:50

Re: Standkachel besturen

Berichtdoor Bartsmetsers » 18 Jan 2019, 03:00

het puls probleem is snel opgelost. er zit gewoon een pulserend contact in de ventilator gebouwd.
Heb in middels een beetje een blokschema opgezet zoals het programma in grote lijnen moet doen.
Krijg het er niet bij gezet nu.
voor de gene die me serieus willen helpen mail ik het graag naar je
.


ik zie voor mij meteen een aantal struikelblokken,


hoe krijg ik het zo dat ik het stuk van het drukken op de startknop tot aan de 40sec timer gezien word als de start procedure.

ik zal bij een mis start terug moeten naar het begin van de start functie namelijk.
dit zelfde zal ik met de error functie moeten doen.


is er iemand die het code schrijven makkelijk af gaat die me wil helpen met een 1e opzetje?

nog maals ben niet te lui om het zelf te leren. ben daar ook mee bezig maar heb daar mijn tijd voor nodig.
en tijd ontbreekt in dit geval enorm

Berichten: 12
Geregistreerd: 17 Jan 2019, 20:50

Re: Standkachel besturen

Berichtdoor Bartsmetsers » 19 Jan 2019, 20:11

heb de opstart procedure werkend. nu zit ik met de volgende problemen.
A op het moment dat het starten word uitgevoerd moet na het starten gekeken worden naar de vlamschakelaar.
Als deze niet gemaakt is in middels moet de start procedure op nieuw beginnen.
dit mag 3x waar na het programma de ventilator aan moet houden maar verder volledig alles uit en volledig blokkeren tot de reset knop 10sec word ingedrukt. hoe krijg ik dit er nu in?


di is wat ik nu heb:

float pressLength_milliSeconds = 0;

// Define the *minimum* length of time, in milli-seconds, that the button must be pressed for a particular option to occur
int optionOne_milliSeconds = 100;
int optionTwo_milliSeconds = 2000;

//The Pin your button is attached to
int startstop = 6;
int reset = 7;
int vlamschakelaar = 8;
int tempschakelaar = 9;

//Pin your functions are attached to
int ventilator = 5;
int gloeispiraal = 4;
int luchtklep = 2;
int brandstofpomp = 3;
int volhalfvermogen = 10;

void setup(){

// Initialize the pushbutton pin as an input pullup
// Keep in mind, when pin 2 has ground voltage applied, we know the button is being pressed
pinMode(startstop, INPUT_PULLUP);
pinMode(reset, INPUT_PULLUP);
pinMode(vlamschakelaar, INPUT_PULLUP);
pinMode(tempschakelaar, INPUT_PULLUP);

//set the Function pins as outputs
pinMode(ventilator, OUTPUT);
pinMode(gloeispiraal, OUTPUT);
pinMode(luchtklep, OUTPUT);
pinMode(brandstofpomp, OUTPUT);
pinMode(volhalfvermogen, OUTPUT);

//Start serial communication - for debugging purposes only
Serial.begin(9600);

} // close setup


void loop() {

//Record *roughly* the tenths of seconds the button in being held down
while (digitalRead(startstop) == LOW ){

delay(100); //if you want more resolution, lower this number
pressLength_milliSeconds = pressLength_milliSeconds + 100;

//display how long button is has been held
Serial.print("ms = ");
Serial.println(pressLength_milliSeconds);

}//close while


//Different if-else conditions are triggered based on the length of the button press
//Start with the longest time option first

//Option 2 - Execute the second option if the button is held for the correct amount of time
if (pressLength_milliSeconds >= optionTwo_milliSeconds){

digitalWrite(gloeispiraal, LOW);
Serial.print(gloeispiraal);
digitalWrite(brandstofpomp, LOW);
Serial.print(brandstofpomp);
digitalWrite(luchtklep, LOW);
Serial.print(luchtklep);
delay(120000);
digitalWrite(ventilator, LOW);
Serial.print(ventilator);

}

//option 1 - Execute the first option if the button is held for the correct amount of time
else if(pressLength_milliSeconds >= optionOne_milliSeconds){

digitalWrite(ventilator, HIGH);
Serial.print(ventilator);
delay(5000);
digitalWrite(gloeispiraal, HIGH);
Serial.print(gloeispiraal);
digitalWrite(luchtklep, HIGH);
Serial.print(luchtklep);
delay(16000);
digitalWrite(brandstofpomp, HIGH);
Serial.print(brandstofpomp);
delay(45000);
digitalWrite(gloeispiraal, LOW);
Serial.print(gloeispiraal);

}//close if options


//every time through the loop, we need to reset the pressLength_Seconds counter
pressLength_milliSeconds = 0;

} // close void loop

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

Re: Standkachel besturen

Berichtdoor shooter » 20 Jan 2019, 21:11

gebruik een vlag (een digitaal signaal waaraan je kunt zien dat je in een procedure zit.) zoiets als kachelstartmaarbrandnogniet en kijk eens hoe je dit op kunt lossen met een statusprogramma. Ofwel maak eens een state diagram vande kachel en verwerk dat in je programma.
paul deelen
shooter@home.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten