Vaillant Therme analog steuern

Hallo Thomas,

bin erst eben dazu gekommen mal ein wenig zu messen…
Vor dem 220 Ohm-Widerstand liegen ungefähr 3,2 V, dahinter ca. 1,3 V (Pin 2 des 6N137). An Pin 7 und 8 liegen die 15V, aber an Pin 6 nur igendetwas im mV Bereich (Messfehler…).
Ich vermute da die Ursache. Wo ich mir jetzt total unsicher geworden bin: Wo liegt Pin 1 bei dem 6N137?
Der 6N137 hat so eine markante „Stufe“ im Gehäuse, ist das die Seite an der Pin 1-4 sind? Ansonsten wäre er bei mir falsch eingelötet…

Joachim

Sorry für die späte Antwort,
War auf der Baustelle…

Der 6N137 hat so eine markante „Stufe“ im Gehäuse, ist das die Seite an der Pin 1-4 sind?

Ja, dass ist so richtig.
An Pin 6 vom Opto kommt das PWM Signal raus…
Ich kann das jetzt hier nicht messen, da die Schaltung 16km weg ist.

Schau doch mal mit dem Multimeter, was 7 und 9 auf der Thermenseite raus kommt.
Aus dem Kopf, waren das 2.0 - 15.0V bei mir, je nach PWM Signal am Eingang vom Opto.

Hallo Thomas,

bin ein Stück weiter, aber etwas überrascht.
Bei Test mit -25°C Aussentemperatur und 20°C Referenztemperatur kommt bei mir (nach Deiner Formel, sofern Richtung umgesetzt) ein Stellwert von 253 (255 wären 100%, ca. 3,3V) und eine Ausgangsspannung von 1,9V zwischen 7 und 9.
Bei Test mit +30°C und Referenztemperatur 20°C sind es dann 14.8V zwischen 7 und 9, Stellwert wäre da 0 (also 0V am PWM-Ausgang)

Wäre das so erst einmal richtig? Oder ist es „verdreht“?

Zum anderen: In Deinem Skript hast Du für den Sommerbetrieb 11,4V als „Festwert“ angegeben. Woher kommt diese Zahl? Welcher Temperatur entspricht sie?

Joachim

Immer noch grob von :
Vaillant Therme analog steuern

zu PWM Init, im zip ist es drin :

#PWM für Spannungssteuerung Therme
echo "0" > /sys/class/pwm/pwmchip0/export
echo "1000000" > /sys/class/pwm/pwmchip0/pwm0/period
echo "657000" > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
echo "inversed" > /sys/class/pwm/pwmchip0/pwm0/polarity
echo "1" > /sys/class/pwm/pwmchip0/pwm0/enable

echo „inversed“ > /sys/class/pwm/pwmchip0/pwm0/polarity

Und nutze nur die skripte aus der zip !

Hallo Thomas,

kann das gerne zum Test mal machen, einfacher wäre aber, Du sagst mir einfach ob die Eingabe- zu den Ausgabewerten passen…:wink:

Joachim

Hallo Thomas,

nichts ür Ungut…:rolleyes:

Mit der Invertierung des Ausgangssignals passt es - vielen Dank für Deine Geduld und die Unterstützung!:cool:

Warum möchte ich es im Modul haben:

  • Weil ich bei Projekten die an mehreren Stellen Änderungen erordern gerne mal selbst den Überblick verliere, deswegen habe ich es gern „zentral“
  • Weil ich die Möglichkeit Module zu erstellen als eine der wichtigsten Features von IPS halte, denn die Funktionalität kann von „unbedarften“ Nutzern schnell integriert werden, zum anderen besteht absolute Transparenz da der Code öffentlich zugänglich ist, die Funktionalität und Korrektheit der Module steigt in der Regel mit der Anzahl der aktiven Nutzer.
  • Ich möchte der Community gerne durch meine Module - die ich gerne hier teile - etwas von dem zurückgeben, was ich in der Vergangenheit hier an Unterstützung erfahren habe - und immer noch bekomme (siehe auch dieser Thread;))

Joachim

stellwert=((($spannung-10)*61000)+657000); //657000 PWM = 10V,  61000 = +0,1V, Startwert ist 10V für die Berechnung

duty_cycle von „864400“= 13,4V bei 55° berechnet, im Moment.

Hier wird aus der Spannung der $duty_cycle berechnet.

<?
$id = IPS_GetParent($_IPS['SELF']);
$id2= IPS_GetParent($id);
$id3= IPS_GetObjectIDByName("Therme", $id2);
$duty_cycle_id=IPS_GetObjectIDByName("duty_cycle", $id3);
$duty_cycle= (exec ( 'cat /sys/class/pwm/pwmchip0/pwm0/duty_cycle'));
SetValue($duty_cycle_id, $duty_cycle);

$spannung_id=IPS_GetObjectIDByName("Spannung", $id3);
$spannung=getvalue($spannung_id);


//var_dump (exec ( 'cat /sys/class/pwm/pwmchip0/pwm0/period'));
//exec ('echo normal > /sys/class/pwm/pwmchip0/pwm0/polarity');
exec ('echo inversed  > /sys/class/pwm/pwmchip0/pwm0/polarity');
$period = 1000000;
exec ('echo '."$period".' > /sys/class/pwm/pwmchip0/pwm0/period');

$stellwert=((($spannung-10)*61000)+657000); //657000 PWM = 10V,  61000 = +0,1V, Startwert ist 10V für die Berechnung
$duty_cycle = $stellwert;

exec ('echo '."$duty_cycle".' > /sys/class/pwm/pwmchip0/pwm0/duty_cycle');
//var_dump (exec ( 'cat /sys/class/pwm/pwmchip0/pwm0/duty_cycle'));
//var_dump (exec ( 'cat /sys/class/pwm/pwmchip0/pwm0/polarity'));

//var_dump ($stellwert);

?>

Die Werte hatte ich per Multimeter ermittelt.

Alle gut Joachim:D
Auch ich will ein Modul haben, aber erst wenn alles rennt.

Und Joachim.

  • Ich möchte der Community gerne durch meine Module - die ich gerne hier teile - etwas von dem zurückgeben, was ich in der Vergangenheit hier an Unterstützung erfahren habe - und immer noch bekomme (siehe auch dieser Thread)

Das ist auch mein Ding, daher auch immer wieder Info’s, wie ich was mache.

Hier mal der Tagesverlauf der Steuerung vom Wohnzimmer, da nur der Raum im Moment geheizt wird, und die Therme etwas viel unterfordert ist. Taktung der Therme liegt bei max 7 pro Stunde, dass wird sich ändern, wenn das Haus fertig umgebaut ist. Therme ist jetzt auf 9kw (kann 20kw, war auch eingestellt) begrenzt.

Hallo Joachim,

läuft das schon bei dir Life ?
Wrde mal gerne Werte vergleichen, habe gestern den „230V Raumthermostat“ aus meinem Skript rausgeworfen, jetzt läuft nur die Regelung über 789.
Sieht dann so aus, bei Raumtemperatur von 22°C Tag, 18,5°C Nacht soll im Ref.Raum:

Hallo Thomas,

leider bin ich zum „Live-Test“ noch nicht gekommen. An der Heizung ist vor ein paar Tagen dann - was sich schon angekündigt hatte - der Ausgleichsbehälter defekt (Stickstoffblase ist wohl nicht mehr). Der Heizungsmensch hat gesagt das geht schnell, kann ich aber aktuell nicht verifizieren, da er seitdem noch nicht wieder gesehen wurde…:mad:

Habe mich mit einem passendem Gehäuse beschäftigt, und den 3,3kOhm gegen ein 5K-Poti getauscht, letzteres bringt aber nicht den erwarteten Effekt. Ansonsten habe ich noch am Modul das eine oder andere verbessert, ist aber so ohne „Live-Test“ etwas witzlos…:wink:

Joachim

Hallo Joachim,

heute war der Schorni im Haus meiner Tochter, und hat gestaunt, wurde mir berichtet.:smiley:
Und seit SA. läuft die auch nur noch per Aussenregelung (mit Raumaufschaltung vom Referenzraum) über PWM (da aber immer noch meine Skript Lösung, da ich ganz andere PWM Parameter nutze, als di in deinem Modul. Was besser ist, 3x?, da ich nur SA da mal dran bin,:mad: ).
Klappt jetzt richtig gut, die Krücke per 230V Relais ist raus. War halt der erste Schritt, um etwas machen zu können, wie es vorher war, nur mit einem jetzt genutzem Raum.
Mein Problem war, ich kann eine Therme nicht mit meiner Ölheizung vergleichen, da muss ich viele Parameter anders auslegen.
Bei deinem GPIO Modul, würde ich auch mehr im Webfront verstellen wollen, wie Steilheit und Parallelverschiebung.
Und Neu müsste noch der morgendliche „boost“ hin zu kommen, sonst braucht die Therme hier Stunden, um die Referenztemperatur im Raum zu erreichen.
Ich mache nächstes WE mal eine Auswertung der Daten, von der Life Anlage, und dann sehen wir mehr.:slight_smile:

…wie gesagt - alles anpassbar…:slight_smile:

Hatte mal versucht nachzuvollziehen, welche Werte eher „statisch“ sind - also einmal einstellen bzw. besten Werte suchen und gut - oder sich dynamisch ändern, danach erst einmal ins Konfigurationsformular oder eben zur Laufzeit änderbar.
Die Definition für z.B. die Steilheit (Typische Werte: 0,1 - 3,5) ergeben sich aus der Isolierung des Gebäudes (0,1 für sehr gute Isolierung), von daher würde es sich eigentlich nur ändern, wenn entsprechende Verbesserungsmaßnahmen am Haus vorgenommen werden, da dachte ich mir da das nicht so häufig vorkommt, dass man dann auch mal ins Konfigurationsformular gehen kann…:rolleyes:

Den „Boost“ habe ich insofern integriert, das die Vorlauf- mit der Rücklauftemperatur verglichen wird. Ist der Wert größer als der einstellbare Wert (also mehr Wärmeabnahme als vermutet), dann wird „eine Schippe mehr“ Vorlauftemperatur gegeben, umgekehrt führt dadurch eine geringe Differenz als vorgesehen zu einer Reduzierung der Vorlauftemperatur (weil offensichtlich geringe Wärmeabnahme). das Ganze soll dann dynamisch und selbstregelnd sein - Versuche zu der Theorie stehen aber noch aus…:smiley:

Hier wäre ein Thermodynamiker gut…

Habe die Einzelraumregelung auch so nach und nach erweitert (Abwesenheit/Anwesenheit, Temperaturfahrplan, Fenster offen/zu usw.). Der zielwert wird überraschend stabil gehalten - dauert nur ein wenig…

Joachim

Und genau das:

Den „Boost“ habe ich insofern integriert, das die Vorlauf- mit der Rücklauftemperatur verglichen wird. Ist der Wert größer als der einstellbare Wert (also mehr Wärmeabnahme als vermutet), dann wird „eine Schippe mehr“ Vorlauftemperatur gegeben, umgekehrt führt dadurch eine geringe Differenz als vorgesehen zu einer Reduzierung der Vorlauftemperatur (weil offensichtlich geringe Wärmeabnahme). das Ganze soll dann dynamisch und selbstregelnd sein - Versuche zu der Theorie stehen aber noch aus…

läuft da im Haus, und sieht da gut aus, ob das übertragbar ist ?
Ist ein Haus aus Ende der 60er Jahre, und wir gerade Innnen umgebaut. Ich brauche die Parameter im Webfront, da ich nicht vor Ort bin, und es von extern anpasse. Nur so kann ich in der Woche erkennenund eingreifen. Zwickmühle hier…:smiley:
Aber mach erst mal so weite mit deiner Lösungr, wie ich auch mit meiner Lösung, hinterher könnten wir das in einen Topf werfen.

lg Thomas

1 „Gefällt mir“

…sicherlich ist das übertragbar - ist lediglich eine Frage der Einstellungen…:wink:

Du solltest zur IPS-Fernkonfiguration mal über eine VPN-Verbindung zur Konsole nachdenken - funktioniert super und man hat alle Möglichkeiten der Welt!:slight_smile:

Joachim

Hallo Joachim,
heute ist aus meinen Skripten ein PHP-Modul geworden, alles Einstellbar übers Webfront.
Läuft im Moment aber nur per Simulation, hole mir die Werte aus dem Haus meiner Tochter, und vergleiche.
Wenn ich das jetzt noch in schön hin bekomme, verteile ich.
GPIO Einrichtung ist noch von Hand, da werde ich direkt mit Linux arbeiten,
Aber das Modul könnte auch mit anderen Messwertquellen umgehen, nur der PWM Pin für die Spannungserzeugung auf 7-8-9 ist im Moment fix an den Pi gebunden.
Die kleinen Gespräche in Lübeck haben was gebracht.

So,
Modul ist Online, aber bitte erst offline testen.
Und es wird nur auf einem Raspberry Pi mit IPS so laufen.
GitHub - ipstomgr/TS_HeizungsTherme

Hat jemand eine neuere Vaillant-Heizung? Bei meiner sehe ich gerade, dass keine 7/8/9-Klemme mehr existiert sondern nur noch eine 2-polige mit „24V RT“ beschriftet.

Bei mir auch. Da greife ich auf den Ebus zu.

Habe die Steuerung über die zweipolige Klemme realisiert (plus Ebus zum lesen der Istwerte). Moduliere, indem ich den Kontakt öffne, sobald die per Ebus ermittelte Vorlauf-Isttemperatur über dem Soll liegt. Funktioniert sehr gut, die Heizung reagiert sofort auf diesen Kontakt.