Vaillant Therme analog steuern

…der Effekt sollte ja auch durch die von mir angedachte Ausführung eintreten.
So wie es bei Dir ist - Vor- und Rücklauftemperatur liegen dicht beieinander, so sollte es ja eigentlich sein.
Bin daher gespannt auf Deine Ergebnisse…

Joachim

Hallo Joachim,

habe vorhin noch 2 DS18b20 fertig gemacht, um die morgen an die Therme zu hängen.
Da ich mir bei dem Bus etwas sorgen machen (Kabellänge …) habe ich mal einen 2ten GPIO 1wire Bus am Pi eingerichtet, und die Skripte angepasst. Das geht aber erst seit den neueren Versionen.
config.txt eintrag :

dtoverlay=w1-gpio,gpiopin=4
dtoverlay=w1-gpio,gpiopin=5

und das erweiterte skript „Temperaturen_lesen“ um w1_bus_master2 zu lesen :

<?
$id = IPS_GetParent($_IPS[‚SELF‘]);
$id2= IPS_GetParent($id);
$id3= IPS_GetObjectIDByName(„GPIO Temperatur“, $id2);
//------------------------------------------------------------------------------
if($_IPS[‚SENDER‘] == „Execute“) // nur wenn bei „Ausführen“
{
CreateVariableByName($id3, „onewireId“, 3);
CreateVariableByName($id3, „onewirezaehler“, 1);
$onewireID = IPS_GetObjectIDByName(„onewireId“, $id3);
SetValue($onewireID, „“);
$vid = CreateVariableByName($_IPS[‚SELF‘], „Running“, 0);
$eid = CreateEventIDByName($_IPS[‚SELF‘], „StartStop“, 0);
IPS_SetEventActive($eid, true);
IPS_SetEventTrigger($eid, 0, $vid);
IPS_SetEventScript($eid, $_IPS[‚SELF‘]);
$zaehler = intval(exec(‚cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slave_count‘));
$onewirezaehlerID = IPS_GetObjectIDByName(„onewirezaehler“, $id3);
SetValue($onewirezaehlerID, $zaehler);

$datei = file("/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves");
$i=1;
foreach($datei AS $dallas_id)
{
$ds_id[$i]= $dallas_id;
$wire = GetValue($onewireID);
$wire = „“.$wire." ".$ds_id[$i];
SetValue($onewireID, $wire);
$i++;
}

$zaehler = $zaehler + (intval(exec(‚cat /sys/bus/w1/devices/w1_bus_master2/w1_master_slave_count‘)));
$onewirezaehlerID = IPS_GetObjectIDByName(„onewirezaehler“, $id3);
SetValue($onewirezaehlerID, $zaehler);

$datei = file("/sys/bus/w1/devices/w1_bus_master2/w1_master_slaves");
$i=1;
foreach($datei AS $dallas_id)
{
$ds_id[$i]= $dallas_id;
$wire = GetValue($onewireID);
$wire = „“.$wire." ".$ds_id[$i];
SetValue($onewireID, $wire);
$i++;
}

}
//------------------------------------------------------------------------------
// if($_IPS[‚SENDER‘] == „TimerEvent“) //
$onewireID = IPS_GetObjectIDByName(„onewireId“, $id3);
$onewirezaehlerID = IPS_GetObjectIDByName(„onewirezaehler“, $id3);
$zaehler = GetValue($onewirezaehlerID);
//$zaehler = intval(exec(‚cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slave_count‘));

$wire = GetValue($onewireID);
$ds_id = explode(" ", $wire);
for ($i = 1; ; $i++)
{
if ($i > $zaehler) {
break;
}
$ds_id[$i]= trim($ds_id[$i]);
$temp = exec(‚cat /sys/bus/w1/devices/‘.$ds_id[$i].’/w1_slave |grep t=’);
$crc = exec(‚cat /sys/bus/w1/devices/‘.$ds_id[$i].’/w1_slave | grep crc | sed „s/^.*(…)$/\1/“’);
$temp = explode(‚t=‘,$temp);
//The power-on reset value of the temperature register is +85°C
if($crc ==„YES“ and $temp[1] !== „-62“ and $temp[1] !== „85000“) //Fehler raus, -1.2 °C ,85°C und CRC
{
$temp = $temp[1] / 1000;
$temp = round($temp,2);
$id = CreateVariableByName($id3, $ds_id[$i], 2);
SetValue($id, $temp);
}
}
//------------------------------------------------------------------------------
if($_IPS[‚SENDER‘] == „Variable“)
{
if($_IPS[‚VALUE‘])
{
IPS_SetScriptTimer($_IPS[‚SELF‘], 10); // Sekunden-Takt
} else {
IPS_SetScriptTimer($_IPS[‚SELF‘], 0);
}
}
//------------------------------------------------------------------------------
//##############################################################################
function CreateVariableByName($id, $name, $type)
{
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid===false) {
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
}
return $vid;
}
//##############################################################################
function CreateEventIDByName($id, $name, $type)
{
$eid = @IPS_GetEventIDByName($name, $id);
if($eid===false) {
$eid = IPS_CreateEvent($type);
IPS_SetParent($eid, $id);
IPS_SetName($eid, $name);
}
return $eid;
}
?>

Hallo Thomas,

darüber brauche ich mir keine Sorgen machen - ist doch alles in meinem IPS2GPIO-Modul schon drin…Klick, Klack, auf Zack…[emoji2]

Joachim

Hallo Thomas,

drei Fragen noch mal zur Hardware:

  1. Ich vermute mal, das zwischen 7 und 8 eine Brücke eingebaut werden muss, wenn keine Steuerung verwendet wird? (Kann ist aktuell nicht selbst prüfen)
  2. Im Schaltplan gibt es GND und GNDA, bedeutet das, dass der GND von Pi und GND der Heizung nicht zusammengebracht werden darf/soll?
  3. Ist es sinnvoll den 3,3KOhm-Widerstand vielleicht als Poti auszuführen um hier noch mal es anpassen zu können?

Joachim

P.S.: Das mit der Pinbelegung des Op-Amp hat sich erledigt, war mein Fehler - stimmt alles überein…:rolleyes:

Hi Joachim,

sitze gerade vor der Therme auf der Baustelle, und vergleiche die Daten, sieht sehr gut aus.
Die PWM vom Pi gehen auf den Optokoppler und ist daher getrennt von der Therme (24V-DATA-GND)

Bei 7 und 8 darf keine Brücke drin sein, wenn keine Steuerung angeschlossen ist !

Bei 3 und 4 (Raumthermostat 230V !) muss ne Brücke rein, da habe ich noch das Relais vom Raumthermostaten dran, und schalte ab, wenn der Referenzraum zu warm ist. Das kommt später anders…

Ob es Sinn macht, den 3k3 durch nen Poti zu ersetzen, glaube ich nicht, aber versuch mal.
Ich werde die Schaltung noch mal aufbauen, damit eine zu Hause liegt, und ich damit versuchen kann.

Hier vor Ort klappt soweit alles, auch die Daten die über 7-8-9 in die Therme gehen, passen mit der Sollwertabfrage an der Therme überein.
Habe da aber jetzt die Reglersperrzeit auf 10min runtergesetzt, und es sieht viel besser aus.
Pumpennachlaufzeit auch etwas hochgesetzt.

Hallo Joachi,
hier mal das este Ergebnis von Heute :

Da von 11 - 12 Uhr die orginal einstellungen der Therme, an 17 Uhr der Regler aus IPS mit den veränderungen der Therme.

Und noch der Raum Ist Wert von heute:
Zwichen 11 - 15 Uhr habe ich gespielt, mit den Sollwerten !

Und hier noch ein Bild von der Therme mit 7-8-9 und RJ :

Was geht an RJ ?

Hallo Thomas,


Hier mal Bilder des Raspbberry-Pi-Vaillant-Hats (auf dem ersten Bild ohne den 1-Wire-I²C-Adapter, wird erst eingelötet wenn der Rest funktioniert).
Leider habe ich jetzt keine 24V zur Verfügung um den „Leistungsteil“ zu testen…:frowning:

Was bedeutet „Regelersperrzeit“? Das zwischen dem Setzen neuer Werte 10 Minuten vergehen? Im Moment habe ich es so, dass eine Neuberechnung angestossen wird, wenn sich Aussentemperatur oder Referenztemperatur ändern (hier kann man in gewissenen Maße steuern, indem man die Aktualisierungszeit entsprechend anpasst). Man könnte es aber auch so machen, dass eine Neuberechnung erfolgt, wenn eine bestimmte Zeit vergangen ist (z.B. alle 10 Minuten) würde aber auf eine Änderung der Referenztemperatur (die ja sicherlich von jemanden getriggert wird) sofort reagieren…

So etwas das wie „RJ“ aussieht habe ich bei mir nicht gesehen…

Joachim

Zitat aus Installations- und Wartungsanleitung:

7.2.5 Brennersperrzeit einstellen
Um ein häufiges Ein- und Ausschalten des Brenners zu
vermeiden (Energieverlust), wird der Brenner nach
jedem Abschalten für eine bestimmte Zeit elektronisch
verriegelt („Wiedereinschaltsperre“).
Die Brennersperrzeit wird nur für den Heizbetrieb aktiviert.

Hallo Thomas,

aktuell kämpfe ich noch mit der Schaltung…
Habe jetzt mein Notebook-Netzteil genommen (18,5 V, 45W).
Wenn ich aber Spannung auf den Schaltungsteil legen, bricht die Spannung scheinbar auf etwas über 1 V zusammen. Habe noch mal alle Verbindungen geprüft, könnte aber keinen Fehler feststellen, es geht keine Sicherung durch, es wird nichts fühlbar heiß…

Einen Tipp für mich wie das angehen kann??

Joachim

Hi

Was ist das für ein LM741.
Ist das ein C oder P. Der C kann nur 18V vertragen und der P 22V

…ein „CN“, liegt ja aber hinter dem 7815…

Joachim

Schau doch mal, ob die 15V ohne Schaltung hinter dem 7815 ankommen, also „Lastteil“ abklemmen…

Habe gerade noch was anderes gefunden :
Vaillant X6 Schnittstelle – Old Ethersex

An der Therme von meiner Tochter ist die Schnittstelle dran, wie man oben aus den Bildern sehen kann.
Mal sehen, ob ich da mal noch was mache, muss mir mal ein paar ADUM’s besorgen, dann kann ich das galvanisch getrennt einfach mit an den Pi hängen.

…habe mal ein 12V-Netzteil genommen, dann sind hinter dem 7815 ca.10,6 V…[emoji15]

Muss ich nachher mal in Ruhe probieren…
Die Kinder wollen jetzt in den Wildpark zur Helloween-Wanderung…

Joachim

Kannst du von unterenteil der Platine auch mal ein Pic machen

Das klappt mit dem 7815 nicht ! Du musst mit der Eingangsspannung da, um mehr als 18V liegen. Am Ausgang vom 7815 müssen zwingend die 15V anliegen, sonst kommt pei PWM nur Mist raus, zu dem was wir brauchen.
Und viel Spaß, bei der Helloween-Wanderung:D, muss sein !

Hallo Thomas,

Du hast richtig gelegen - habe jetzt ein Notebook-Netzteil rausgesucht, dass 19V macht - damit habe ich dann sekundär die 15V!
Auf den ersten Blick sehen die Spannungen auf 7 komisch aus, muss da aber noch mal in Ruhe messen…

Joachim

Danke für die Rückmeldung Joachim.

Falls auf die schnelle mal Fragen sind, können wir auch telefonieren…

Und bitte mach mal Bilder deiner Heizungssteuerung (Therme), wenn du mal Zeit hast…