Regeling tbv pomp vloerverwarming

Toon hier Uw afgeronde projecten aan anderen.
Gebruikers-avatar
Berichten: 6
Geregistreerd: 12 Nov 2013, 17:16

Regeling tbv pomp vloerverwarming

Berichtdoor Erwin Lokhorst » 29 Nov 2013, 16:07

Volgens mij mag dit in afgeronde projecten.

Het betreft een eenvoudig project(je) waarmee er voor wordt gezorgd dat de pomp van de vloerverwarming alleen draait als de CV-ketel daadwerkelijk brand en niet continu, wat meestal wel het geval is.

Hier thuis is de vloerverwarming gelijk de hoofd verwarming en draait het systeem met twee pompen (aparte locaties) welke ook nog eens op de hoogste stand staan.
Elke pomp gebruikt daarmee continu 100W, het hele jaar door. Dag en nacht.
2 pompen x 0,1 KW/h X 24 uur x 365 dagen = 1752 KWh per jaar.
Wat neer komt op zo'n €385,-- per jaar aan stroom.
Terwijl wij 's zomers niet stoken en zelfs in de winter niet continu de CV brandt.
Een redelijke besparing is hier dus wel te halen als de pomp(en) alleen draaien als dat nodig is. 50%?
Het is alleen niet goed voor de pomp om een langere tijd niet stil te staan want dan kan ze vast gaan zitten.

Hier zijn natuurlijk kant en klare aparaatjes voor te krijgen en die kosten ca €60,--/stuk.
Maar het is leuker en leerzamer om dit zelf te maken.

Hiervoor heb ik gebruik gemaakt van een Arduino nano met twee dallas 1820 sensoren voor de temperatuurmeting, een lcd-schermpje met IC2 aansluiting.
De pomp wordt geschakeld door een relais. Deze zit bij mij direct op een print (gestuurd door een transistor) maar hiervoor kun je natuurlijk ook een relaisshield gebruiken. Op de print zit ook een eigen 5V voeding vanuit het lichtnet.

De dallas 1820 sensoren zijn allebei op dezelfde PIN(2) aangesloten en hebben ieder een uniek adres om te kunnen communiceren.
Dit adres moet je handmatig invoeren in de sketch. Om het adres van elke sensor eerst uit te lezen kun je het beste deze link volgen:
http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
In de sketch staat ook een link voor lib voor het lcd, maar dan moet je je wel registreren op dat forum.
De OneWire.h en DallasTemperature.h staan al in de IDE volgens mij, en anders staan die ook op de pagina van de eerste link.

Korte (globale)beschrijving van de werking:
Na de gebruikelijke initialisaties voorafgaand aan de loop wordt eerst de temperatuur van de sensoren bepaald.
Daarna wordt gekeken welke de hoogste waarde is, dit is dan de aanvoer en de lagere sensor van de lagere waarde is de retour.
Bij een temperatuur hoger dan 39C of een verschil in temperatuur tussen aanvoer en retour van meer dan 4C zal de pomp gaan draaien.
Zodra aan deze voorwaarden niet meer wordt voldaan zal de pomp nog voor 10 minuten blijven draaien om vervolgens te worden uitgezet.
Daarna wordt bijgehouden hoelang de pomp al niet meer heeft hoeven draaien. Als dit ongeveer 8 uur geleden is, zal de pomp voor 10 minuten worden aangezet.
Dit gebeurd dus maximaal 3 x per dag en voorkomt dat de pomp komt vast te staan.
Ten alle tijden zal de pomp gaan draaien als er warm water van de CV wordt aangevoerd.

Hier onder de sketch.
Mocht iemand goede ideeën hebben hoor ik het natuurlijk graag.

========================================================================================================


/* Regeling tbv pomp vloerverwarming.

Bij een watertemperatuur van 40C en hoger EN een verschil in temperatuur tussen aanvoer en retour van 4C of meer,
gaat de pomp van de vloerverwarming draaien.
Komt de temperatuur hier onder, dan zal de pomp nog 10 minuten blijven doordraaien en daarna uitschakelen.
Voor de periode buiten het stookseisoen: Als er langere tijd geen warmte aanvoer van de CV is,
zal de pomp na ca elke 8 uur toch voor ca 10 minuten gaan draaien om te voorkomen dat deze vast kan komen te zitten.

Welke sensor op de aanvoer en welke op de retour van de cv zit wordt automatisch bepaald.
/*

/* De data van beide sensoren zit op PIN 2. Het relais wordt aangestuurd via PIN 8.
En voor de lcd geldt:
DEVICE PINOUT (SPI Interface):
PIN 1: GND
PIN 2: +5V
PIN 3: SDA - Connect to Arduino analogue PIN 4
PIN 4: SCL - Connect to Arduino analogue PIN 5
*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2

int relais = 8;
int temp_status = 0;
int teller; // teller voor nalooptijd
int nalooptijd;
word pauzeteller; // teller voor pomp uit tijd
int pomppauze; // tijd in min dat de pomp uit is
int pomp_status;

float aanvoer = 0;
float retour = 0;
float temp1 = 0;
float temp2 = 0;

LiquidCrystal_I2C lcd(0x27,16,2);
/* Library te downloaden via: http://forum.hobbycomponents.com/viewto ... =39&t=1125 (wel registreren)*/

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

DeviceAddress sensor1 = { 0x10, 0x1E, 0x4F, 0xB5, 0x02, 0x08, 0x00, 0x1C };
DeviceAddress sensor2 = { 0x10, 0x21, 0x82, 0xB5, 0x02, 0x08, 0x00, 0x1B };
/* invoeren unieke adressen van de sensoren. zie onderstaande link voor tutorial en sketch.
http://www.hacktronics.com/Tutorials/ar ... inder.html */



void setup()
{
pinMode(relais,OUTPUT);
lcd.init();
sensors.begin();
sensors.setResolution(sensor1, 10);
sensors.setResolution(sensor2, 10);
lcd.begin(16,2);
lcd.clear();
}


void loop()
{
lcd.backlight(); // backlight lcd aan
delay(2000);
lcd.clear();
sensors.requestTemperatures(); // lezen van de sensoren.
float temp1 = sensors.getTempC(sensor1);
float temp2 = sensors.getTempC(sensor2);

if (temp1 == -127.00) { // bij een defect of losraken van een van de sensoren volgt en error.
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Error: sensor 1)");
}
if (temp2 == -127.00) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Error: sensor 2)");
}

if (temp1 >= temp2) { // kijkt welke van de twee sensoren de hoogste temperatuur meet,
aanvoer = temp1; // dit is dan de "aanvoer" en de lagere de "retour".
retour = temp2;
} else {
aanvoer = temp2;
retour = temp1;
}

lcd.clear();
lcd.setCursor(0,0); // geeft de temperatuur van beide sensoren aan op de lcd.
lcd.print("Aanvoer: ");
lcd.print(aanvoer);
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("Retour : ");
lcd.print(retour);
lcd.print(" C");

delay(2000); // er is twee keer een delay van 2 sec = totaal 4 sec per cyclus.

if (temp1 > 39.00 || temp2 > 39.00) { // indien meer dan 39C gemeten (ketel brandt)
temp_status = 1; // voldoende warmte aanvoer om pomp te laten draaien
pomp_status = 1;
} else {
if (aanvoer - retour > 4) { // indien meer dan 4C verschil
temp_status = 1; // voldoende warmte aanvoer om pomp te laten draaien
pomp_status = 1;
} else {
temp_status = 0; // te weinig warmte aanvoer om pomp te laten draaien
pomp_status = 0;
}
}

if (temp_status == 1) { // zo lang er voldoende warmte aanvoer is
teller = 150; // de teller hog zetten voor nalooptijd pomp. ( 150 * 4 = 600 sec = 10 min)
} else {
if (teller > 0) { // tot zo lang de teller nog niet op 0 staat
--teller; // dan loopt de teller af met 1 (4 seconden per keer ivm 2 x delay2000)
nalooptijd = teller / 15; // nalooptijd wordt berekend door de counter te delen door 15 = xxx minuten
pomp_status = 1; // Pompstatus wordt hoog omdat de pomp nog wel zo lang moet blijven draaien

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Pomp gaat uit.");
lcd.setCursor(0,1);
lcd.print("Nalooptijd: ");
lcd.print(nalooptijd);
lcd.print("min"); // weergave op lcd hoelang de pomp nog naloopt.

} else { // geen warmteaanvoer en de teller(nalooptijd) is terug op 0 dan
pomp_status = 0; //hoeft de pomp niet meer te draaien
}

if (temp_status == 0 && teller == 0) { // als er geen warmte aanvoer is EN counter is terug gelopen naar 0
++pauzeteller; // dan loopt deze teller met 4sec per keer op (2x delay 2000ms)
pomppauze = pauzeteller / 15; // de 4 sec vertraging weer corrigeren voor weergave op lcd AANPASSEN (= omrekenen naar minuten)
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Pomp is uit");
lcd.setCursor(0,1);
lcd.print("voor: ");
lcd.print(pomppauze);
lcd.print(" min"); //weergave op lcd hoelang de pomp uit is.
pomp_status = 0; //pomp hoeft niet te draaien
}
if (pauzeteller >= 7200 && pauzeteller <= 7350) { // Pomp moet nu voor 10 minuten draaien *per ca 8 uur) om te voorkomen dat deze vast kan gaan zitten
pomp_status = 1; // Pompstatus wordt hoog omdat deze moet gaan draaien.
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Pomp draait voor");
lcd.setCursor(0,1);
lcd.print(" 10 min");
}
if (pauzeteller == 7350) {
pomp_status = 0; // de pomp hoeft niet meer te draaien
pauzeteller = 0; // teller resetten op 0
}
}
if (pomp_status == 1) { // pomp aan of uitzetten
digitalWrite(relais,HIGH);
} else {
digitalWrite(relais,LOW);
}
}


==================================================================================================================

Advertisement

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

Re: Regeling tbv pomp vloerverwarming

Berichtdoor shooter » 01 Dec 2013, 23:13

veel vloerverwarmingen hebben ook nog elektronische kleppen voor de verschillende zones in huis.
maar je gedachte is goed.
ik zag een delay in je programma zitten en daar heb ik het dan weer niet op. want dan staat je proces gewoon stil en kun je verder niets doen.
beter is het gebruiken van millis() niet zozeer dat je dan kortere tijden kunt gebruiken, maar dan loopt je programma altijd door. en de tijden zijn beter beheersbaar, jij zit aan veel langere tijden (niet erg want dit is toch niet kritisch.
maak ook gebruik van subroutines dan wordt het een beetje overzichtelijker
ik kan me overigens voorstellen dat de retour warmer is dan de aanvoer, zeker bij een cv ketel die uitstaat.

en je zult wat voorzichtig moeten zijn dat als de pomp stilstaat het water in de aanvoer erg in temperatuur kan stijgen , dat op zijn beurt weer barsten en scheuren in de vloer kunnen komen, daar om adviseert men dus om de pomp altijd te laten lopen. Dus als de CV aanstaat moet de vloerpomp altijd lopen totdat de aanvoertemp onder 40 graden is gedaald.
eigenlijk is het verstandig om de hele set in de retourleiding van de radiatoren te zetten, waardoor de restwarmte gebruikt wordt. (radiatoren gaan pas lekker werken boven de 60 graden, maar ja dat is installatietechnisch.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 6
Geregistreerd: 12 Nov 2013, 17:16

Re: Regeling tbv pomp vloerverwarming

Berichtdoor Erwin Lokhorst » 02 Dec 2013, 14:19

Aller eerst bedankt voor je reactie

shooter schreef:veel vloerverwarmingen hebben ook nog elektronische kleppen voor de verschillende zones in huis.

Hier zitten geen kleppen en alle kranen staan open.
Toevallig is alles heel mooi in balans. Het maakt zelfs niet uit of ik de draadloze thermostaat in de ene of de andere woonkamer zet.
Maar volgens mij maakt het ook niet veel uit voor de werking of er verder nog kleppen in zitten.

ik zag een delay in je programma zitten en daar heb ik het dan weer niet op. want dan staat je proces gewoon stil en kun je verder niets doen.
beter is het gebruiken van millis() niet zozeer dat je dan kortere tijden kunt gebruiken, maar dan loopt je programma altijd door. en de tijden zijn beter beheersbaar, jij zit aan veel langere tijden (niet erg want dit is toch niet kritisch.

millis() idd overwogen, maar omdat het niet tijdkritisch is vond ik 2x een delay van 2 sec, tussen twee lcd weergaven, net zo makkelijk.


maak ook gebruik van subroutines dan wordt het een beetje overzichtelijker

Daar moet ik nog wat mee oefenen ;-) Het lukte me niet om variabelen tussen subroutines uit te wisselen, vandaar dat ik ze er maar uit heb gehaald.

ik kan me overigens voorstellen dat de retour warmer is dan de aanvoer, zeker bij een cv ketel die uitstaat.
en je zult wat voorzichtig moeten zijn dat als de pomp stilstaat het water in de aanvoer erg in temperatuur kan stijgen , dat op zijn beurt weer barsten en scheuren in de vloer kunnen komen, daar om adviseert men dus om de pomp altijd te laten lopen. Dus als de CV aanstaat moet de vloerpomp altijd lopen totdat de aanvoertemp onder 40 graden is gedaald.
eigenlijk is het verstandig om de hele set in de retourleiding van de radiatoren te zetten, waardoor de restwarmte gebruikt wordt. (radiatoren gaan pas lekker werken boven de 60 graden, maar ja dat is installatietechnisch.


Radiatoren heb ik niet. Wel enkele voorzieningen hiervoor getroffen maar omdat, bij buiten een buitentemperatuur van -20C binnen nog makkelijk +20C wordt gehaald, deze nooit geinstalleerd .
Overigens bedoel ik met aanvoer en retour de leidingen die vanaf de cv komen en zijn aangesloten op de open verdeler. De temperatuur in de leidingen van de vloerverwarming ligt een stuk lager.
De pomp(en) van de vloerverwarming blijven idd draaien bij een temperatuur van 40C en hoger om te voorkomen dat de ketel wel brandt maar niet zijn warmte kwijt kan.

Werkt tot nog toe perfect.

Berichten: 12
Geregistreerd: 08 Mei 2017, 20:38

Re: Regeling tbv pomp vloerverwarming

Berichtdoor JDD » 08 Mei 2017, 21:20

Leuk project. :)

k Had deze gevonden nadat ik zelf ook iets in elkaar geknutseld had.

Ik had/heb meerdere eisen/wensen voor het systeem.

Ik zal zelf een thread starten onder "Vloerverwarming met kleppen en thermostaten"

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

Re: Regeling tbv pomp vloerverwarming

Berichtdoor Gij Kieken » 08 Mei 2017, 22:14

Ziet er een leuk en doordacht projectje uit.
De pomp(en) regelbaar in snelheid maken zou ook wel een meerwaarde aan je project kunnen zijn en energie besparend.

Berichten: 25
Geregistreerd: 04 Dec 2019, 12:29

Re: Regeling tbv pomp vloerverwarming

Berichtdoor Pipo » 08 Aug 2020, 22:53

erg leuk zo,n programma en zeker verstandig om de pomp van de vloerverwarming uit te zetten
heb ik ook gedaan maar dan net iets anders .
in de meeste cv ketels zit een uitgang die een externe pomp kan schakelen, dit contact stuur normaal dus de vloerverwarming aan.
dit contact heb ik gebruikt en werkt prima.

om vast lopen te voorkomen heb ik er een ds3132 bij gebruikt en de laat de pomp eens per week een 15 minuten lopen en dat gaat prima
jou programma kan overigens op een andere wijze iets doen .
ik ga het gebruiken om in elke ruimte een klep op de radiator te zetten.https://www.amazon.nl/Honeywell-Home-MT ... 6990&psc=1

om dus in en uitgaande temperatuur te kunnen meten kan je dit heel mooi regelen het verschil tussen in een uitgaande temperatuur moet minimaal10 graden zijn.
ik ga de delay er wel uit slopen want dat gaat niet lekker werken .

Thanks

Terug naar Afgeronde projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast