Hoi allen,
Zeer interessante forum, helemaal omdat ik als projectleider in de installatiebranche veel verschillende type WP tegenkom.
Toevallig zelf een Aurea thuis geïnstalleerd en wist vooraf dat beneden de 4 graden Celsius het systeem automatisch overschakelt naar de ketel. (of delta T moet niet zijn gehaald natuurlijk binnen 20 minuten). Ja ik had ook een ander type of merk kunnen doen, maar deze WP heb ik gratis kunnen krijgen dus dan is de keuze gauw gemaakt.
Maar ik zag dat een aantal van jullie hebben zitten experimenteren met de weerstand over de temperatuurvoeler om de WP "voor de gek te houden" met de gedachte dat de pomp dan langer blijft draaien beneden de 4 graden Celsius.
Ik zag dat Escobarry ipv daarvan een systeem had bedacht door een bridge te maken met een 24Kohm weerstand te schakelen tussen de -10 en +5 graden celcius. Hoewel ik het idee wel slim vondt, was de installatie zelf zeker nog niet ideaal.
Dus dacht ik waarom niet zelf zo'n systeem maken op basis van een Arduino Uno r3 die ik nog had liggen. En ik wil deze graag met jullie delen voor diegene die zelf hiermee bezig wil gaan.
Om te beginnen de benodigde materialen zijn als volgt.
- Kniptang
- Striptang
- Spanningszoeker
- Soldeerbout
- Arduino Uno R3 (Bijvoorbeeld van Alixpress) (en hiervoor een 12V voedingskabel + programeerkabel)
- DS18B20 sensor (lengte zelf bepalen, maar heb zelf de 3m variant) (Bijvoorbeeld van Alixpress)
- Weerstanden 1/4 van waarde 24Kohm en 4k7 ohm
- een paar flex jumper kabels M-F lengte van 10cm moet voldoende zijn
- Krimpkousjes
- DPDT relais 5V (
https://nl.aliexpress.com...DZ39&gatewayAdapt=glo2nld)
- en een waterdichte omkasting. Ik heb een waterdichte lasdoos gebruikt.
Oke nu wat te doen. laten we beginnen met de DS18B20 temperatuursensor.
Om de juiste waardes te kunnen meten met de arduino zal er een 4k7 weerstand tussen de + en data lijn van de sensor geplaatst moeten worden. dus als volgt;
Aangezien de Arduino maar 1 5V uitgang heeft heb ik aan de + zijden en de - zijde een splitsing gemaakt door een Jumper kabel male en female aand de + draad en - draad van de temp.sensor te plaatsen. zie hieronder;
Je ziet dat de rode en gele kabels bij elkaar worden gehouden door een krimpkous. dit komt dus omdat tusen de gele en rode draad een weerstand van 4k7 is geplaatst zoals eerder aangegeven.
Goed, dat was het solderen voor dit project. Dan nog het in elkaar zetten van het geheel.
De uitgangen moeten verbonden worden met de arduino.
Rode male (temp.sensor) -> 5V arduino
Rode Female (Tem.Sensor) -> V pin Relais
Zwarte male (temp.Sensor) -> GND arduino
Zwarte Female (temp.sensor) -> GND pin Relais
Gele Male (temp.sensor) -> Pin 2 arduino
En als laatste pin T van Relais naar Pin 8 van Arduino.
Verder moeten we de 24Kohm weerstand tussen relais uitgang NO1 en NO2.
Later kunnen op relaisuitgang NC1 en NC2 de temperatuursensor van de WP aangesloten worden, en COM1 en COM2 met de prinplaat van de WP. (Let wel even op dat je de draden van sensor WP op dezelfde relaiskant aansluit om problemen te voorkomen)
Als je dit alles zoals ik ook een een waterdichte lasdoos hebt gemonteerd krijg je het als volgt;
Nu komen we op het deel van het programmeren van de arduino. hiervoor ben je uiteraard de software nodig van arduino, hiervoor verwijs ik je naar de website van arduino. vergeet in het programma ook niet om de bibliotheek van DallasTemperature.h toe te voegen inclusief de OneWire.h.
Eenmaal aangesloten kun je de volgende code gaan uploaden naar de arduino.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| #include <OneWire.h>
#include <DallasTemperature.h>
// Pin-definities
#define ONE_WIRE_BUS 2 // DS18B20 aangesloten op digitale pin 2
#define RELAY_PIN 8 // Relais aangesloten op digitale pin 8
// Setup voor de DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Variabelen voor temperatuur
float temperatuur;
bool relaisStatus = false; // Houdt de status van het relais bij
void setup() {
// Start de seriële communicatie voor debugging
Serial.begin(9600);
// Start de DS18B20 temperatuursensor
sensors.begin();
// Stel de relaispin in als output
pinMode(RELAY_PIN, OUTPUT);
// Zet het relais uit bij het opstarten (normale toestand uit)
digitalWrite(RELAY_PIN, HIGH);
}
void loop() {
// Lees de temperatuur van de DS18B20 sensor
sensors.requestTemperatures(); // Vraag de temperatuur op
temperatuur = sensors.getTempCByIndex(0); // Lees de temperatuur in °C
// Toon de temperatuur op de seriële monitor
Serial.print("Temperatuur: ");
Serial.println(temperatuur);
// Controleer de temperatuur en schakel het relais aan of uit met een puls
if (temperatuur >= 0 && temperatuur <= 5) {
// Als de temperatuur tussen 0°C en 5°C ligt en het relais nog niet aan is
if (!relaisStatus) {
// Schakel het relais aan met een puls
digitalWrite(RELAY_PIN, LOW); // Korte puls (schakel relais aan)
delay(100); // 100 milliseconden pulsduur
digitalWrite(RELAY_PIN, HIGH); // Zet het relais weer op HIGH
relaisStatus = true; // Relais is nu "aan"
Serial.println("Relais AAN met puls.");
}
} else {
// Als de temperatuur buiten het bereik ligt en het relais nog niet uit is
if (relaisStatus) {
// Schakel het relais uit met een puls
digitalWrite(RELAY_PIN, LOW); // Korte puls (schakel relais uit)
delay(100); // 100 milliseconden pulsduur
digitalWrite(RELAY_PIN, HIGH); // Zet het relais weer op HIGH
relaisStatus = false; // Relais is nu "uit"
Serial.println("Relais UIT met puls.");
}
}
// Wacht 60 seconde voor de volgende meting
delay(60000);
} |
Sommigen zullen zien dat ik de geschakelde temperatuur nu tussen de >0 en <5 graden heb staan, maar niet iedereen zal de programmeertaal van arduino hebben gehad dus hierbij een kleine uitleg.
We beginnen met het defineren van de Pinoutputs van de arduino. hier zie je dat Pin2 voor de Temp.Sensor is en dat Pin8 voor de relais is bedoelt. Verderop in het programma staat ook dat Pin2 als input en Pin8 als output wordt gedefinieerd.
Daarnaast heb ik ook een seriele monitoring toegevoegd, hiermee kun je wanneer de computer is verbonden met de arduino de waardes van de temperatuursensor en status van relais uitlezen. Om dit te zien kun je linksboven onder Tools op de seriele monitor klikken. je krijgt nu een apart scherm waarin de gemeten waardes staan.
Dan het Void Loop deel. het eerste deel staat welke waarde de relais moet gaan schakelen. in mijn code staat deze nu tussen de >0 en <5 graden celcius. dit kan dus zelf aangepast worden naar andere waardes mocht je bijvoorbeeld ook tot beden de 0 graden willen doorgaan.
Aangezien de relais die ik heb gekozen een Pulse relais is (Deze schakelt bij een pulsje en blijft dan de status vasthouden) heb ik een tijdsfunctie ingevoerd om met een Pulse het relais te schakelen. mocht je een ander type relais gebruiken pas dan de code hier ook op aan door deze pulsefunctie te verwijderen.
Als laatste heb ik ingesteld dat er elke 60 seconden een meting wordt gedaan van de buitentemperatuur. dit om te voorkomen dat het relais iedere seconden gaat schakelen als de temperatuur bij de 0 of 5 graden schommelt. mocht je zelf deze metingtijd willen aanpassen kan dit dus.
Goed ik geloof dat ik voor nu voldoende informatie heb gegeven. Mocht je vragen hebben of eventueel ideeën voor verbetering dan hoor ik dat graag.
En mocht je het systeem nog willen testen leg dan de temperatuurvoeler achter in de koelkast (deze is meestal iets koele dan 5 graden). het kan even duren voordat hij schakelt maar dit komt omdat hij dus elke 60 seconden een meting doet en de sensor niet zo snel afkoelt in de koelkast.