Heizungsmischer steuern

Begonnen von Steve, 29 Januar 2013, 21:04:11

Vorheriges Thema - Nächstes Thema

Steve

Hallo,

ich komme von der Idee nicht ab, meinen Mischer der Heizung mit FHEM zu
regeln.

An Vor.-und Rücklauf habe ich 1-Wire Sensoren angebracht, die über NETIO
ausgewertet werden.

Für mich stellt sich die Frage was besser zu realisieren ist. Einerseits
gibt es die Möglichkeit, meinen vorhanden Mischer mit zwei Relais vom NETIO
anzusteuern, oder ich baue den HM-CC-VD dran. Wobei ich den Vorteil beim HM-CC-VD
sehe, da ich mir einbilde, darüber den Öffnungsgrad des Mischers einsehen zu können.

Ich denke das dafür grundsätzlich die PID-Regelung in Frage kommt.

Gibt es dafür schon Lösungsansätze, oder wurde so ein Projekt schon einmal umgesetzt?

Grüße


ollir

Hi Steve,

überlege auch schon ein paar Tage darüber.
Ein HM-CC-VD umzubauen wird nicht so leicht gehen.
Reflexlichtschranke für die Umdrehungen, Hubweg etc. ????

Meine Überlegung ist:
Ein 1wired für Vorlauf_tmp und einen für Außen_tmp.
Zwei Relais steuern über meinen Net-IO ein Getriebemotor und den Mischer.
Zwei Öffner für die Endabschaltung.
Ein Schiebe-Poti auf einen ADC des Net-IO für die Stellung des Mischers.

Gruß
Olaf

ollir

Die Berechnung der Heizkurve funktioniert schon mal.
Bestelle die Tage die "Hardware".
Unten mein Log der Vorlauf-Temperatur in Abhängigkeit der Außen_tmp


(siehe Anhang / see attachement)

Steve

Hi Olaf,

schön das es noch Jemanden gibt, der sich mit dem Thema beschäftigt.

Ich arbeite auch mit NETIO und der Relaisplatine. Außerdem habe ich
Sensoren am Warmwasser,im Kessel,Aussentemperatur, Vor.- und Rücklauf.
Außerdem habe ich noch einen HM-LAN-Adapter.

Ich habe schon im Forum gelesen, das der HM-Antrieb nicht funktioniert ohne Raumthermostat.
Mit FS20 möchte ich jetzt auch nicht anfangen, da ich dann noch einen CUL brauche.

Also wird es auf die Variante hinaus laufen, mit Relais zu arbeiten.

Leider bin ich nicht so fit was Perl betrifft, d.h. ich bin ein wenig auf Hilfe aus dem Forum angewiesen.

Was für Hardware bestellst du?

Grüße Steve

Steve


Der Motor vom Mischer sollte ja eine Charakteristik von
einem Schrittmotor haben.(Dreipunktregler)

Ich habe im Forum schon verschieden Beiträge für eine Heizungssteuerung
gefunden, aber da geht es nur um ein schlichtes EIN oder AUS.

Die Aufgabe ist, zwei Relais anzusteuern (Mischer AUF-ZU),womit
dann die IST-Temperatur im Vorlauf konstant nach Vorgabe(Heizkurve)
gehalten wird.


ollir

Hi Steve,

ich wollte ein Getriebemotor nehmen mir einer geringen Umdrehung/Minute.
Bei Pollin gibt es z.B. diesen Getriebemotor
Die Ansteuerung des Motors über ein Wechselrelais für links/rechts und ein Relais für Motor an/aus.
Der Motor wird immer nur kurz angesteuert. Dann erfolgt eine erneute Messung usw.
Die Endabschaltung Öffner und Dioden.

VG
Olaf

Steve

Moin,

hast Du einen Mischer mit radialen oder axialen Antrieb? Ich
überlge eben, wie der Motor an einen Mischer passen kann.
Oder ist der nur zum testen?

Ich habe ein Dreiwegeventil,was mit einem Stellmotor geregelt wird.
Der Stellmotor hat leider nur eine Endabschaltung bei ZU, und mei MAX
läuft der Motor durch.(Rutschkupplung)

Ich habe aber leider keine Codeschnippsel gefunden, wo die Funktion
für einen Mischerbetrieb beinhaltet ist.
Es ist meistens nur die Rede vom Thermostatventil FS20,und da wird
zur einen bestimmten Tageszeit der Prozentwert des Öffnungsgrades geändert.

Hast Du schon einen Ansatz für das Umsetzten in Fhem?

Grüße Steve

ollir


(siehe Anhang / see attachement)
Hi Steve,

hier mein Mischer.

ollir


(siehe Anhang / see attachement)
Die Platte des Getriebemotors


ollir


(siehe Anhang / see attachement)
Und die Motoransteuerung


ollir

In der Schaltung des Motors ist ein Fehler.
Ein Umschaltkontakt muss natürlich anders herum belegt seim.

VG
Olaf

Steve

Mach dich mal schlau, ob der Motor das passende Drehmoment besitzt,
um die Welle zu bewegen.

In der Beschreibung steht da was vom Spielzeugantrieb.

Ansonsten sieht das ganz gut aus.

ollir

Hab gestern u.a. den Motor bestellt.
Er sollte vom Drehmoment reichen.
Ich werde berichten, wenn die Teile gekommen sind.

VG Olaf

Steve

Hi Olaf,

was für eine Vorlauftemperatur hast Du zur Zeit?

Probiere eben deine Version.

VG Steve

ollir

Zitat von: Steve schrieb am Do, 14 Februar 2013 21:47Hi Olaf,

was für eine Vorlauftemperatur hast Du zur Zeit?

Probiere eben deine Version.

VG Steve

Hi Steve,

2013.02.14 22:57:51 3: Temperatur Vorlauf_soll:39.855
2013.02.14 22:57:51 3: Temperatur Vorlauf_ist:40.3
2013.02.14 22:57:51 3: Temperatur Aussen:-0.9
2013.02.14 22:57:51 3: Steilheit Kennlinie:0.95

Wobei die Vorlauf Temperatur_ist schwangt. Zum einen durch die Regelung und zum anderen durch das Nachheizen des Brenners.

2013-02-14_22:56:13 vorlauf_ist temp: 41.1
2013-02-14_22:56:15 vorlauf_ist temp: 41.1
2013-02-14_22:57:24 vorlauf_ist temp: 40.3
2013-02-14_22:57:25 vorlauf_ist temp: 40.3
2013-02-14_22:57:53 vorlauf_ist temp: 40.0
2013-02-14_22:58:10 vorlauf_ist temp: 39.7
2013-02-14_22:58:43 vorlauf_ist temp: 39.4
2013-02-14_22:59:10 vorlauf_ist temp: 39.2
2013-02-14_22:59:44 vorlauf_ist temp: 38.9
2013-02-14_23:00:10 vorlauf_ist temp: 38.8
2013-02-14_23:00:44 vorlauf_ist temp: 38.8
2013-02-14_23:01:10 vorlauf_ist temp: 39.1
2013-02-14_23:01:44 vorlauf_ist temp: 39.6
2013-02-14_23:02:10 vorlauf_ist temp: 40.4
2013-02-14_23:02:44 vorlauf_ist temp: 40.9
2013-02-14_23:03:11 vorlauf_ist temp: 41.3

VG
Olaf

Steve

Hi Olaf,

wo bekommst Du die Werte her?

Bei mir schaltet weder ein Relais noch steht im Logfile eine Info
das überhaupt etwas passiert.

Hast Du zusätzlich noch Einstellungen, die in die Regelung einwirken?

Grüße Steve

ollir

Hi Steve,

n_Vorlauf {
my $TempVorlauf=0;
my $TempAussen=ReadingsVal("temp_aussen","temp","nA");
my $TempVorlauf_ist=ReadingsVal("vorlauf_ist","temp","nA");
my $Steilheit=0.95;
my $TempVorlauf=((($TempAussen - 20) * (0 - 1) * $Steilheit ) +20);
if ($TempVorlauf < $TempVorlauf_ist) {fhem("set Rel3 on; set Rel2 on; sleep 0.9; set Rel2 off")};
if ($TempVorlauf > $TempVorlauf_ist) {fhem("set Rel3 off; set Rel2 on; sleep 0.9; set Rel2 off")};
fhem("set Vorlauf Vorlauf_Soll: $TempVorlauf");
fhem("set Vorlauf Vorlauf_ist: $TempVorlauf_ist");
fhem("set Vorlauf Temp_Aussen: $TempAussen");
fhem("set Vorlauf Kennlinie: $Steilheit");
Log(3,"Temperatur Vorlauf:" .  $TempVorlauf);
Log(3,"Temperatur Vorlauf_ist:" .  $TempVorlauf_ist);
Log(3,"Temperatur Aussen:" .  $TempAussen);
Log(3,"Steilheit Kennlinie:" .  $Steilheit);
}




n_Vorlauf ist für die Berechnung und wird von einem at Job aufgerufen +*00:01:00 trigger n_Vorlauf
temp_aussen ist ein 1wired Sensor vom AVR-Net-io und wir auch über at aktuallisiert +*00:05:00 get temp_aussen temp
vorlauf_ist ist ein 1wired Sensor vom AVR-Net-io und wir auch über at aktuallisiert +*00:00:30 get vorlauf_ist temp
Rel2 und Rel3 sind zwei Relais vom AVR-Net-io
Vorlauf ist ein Dummy für die Werte
und die letzten Zeilen fürs loggen

VG
Olaf


Steve

Hi Olaf,

danke für die Erklärung, war sehr hilfreich.

Ich habe aber noch eine Fehlermeldung

>2013.02.17 18:05:04 3: n_Vorlauf return value: Bareword "temp_aussen" not allowed while "strict subs" in use at (eval 208778) line 1.
>Bareword "vorlauf_ist" not allowed while "strict subs" in use at (eval 208778) line 1.

cfg:
-----------------------------------------------------------------------------------------------------------------------------------------------
#Test
define Rel2 ECMDDevice RELAIS 04
define Rel3 ECMDDevice RELAIS 08



define n_Vorlauf1 at +*00:01:00 trigger n_Vorlauf

define TempAussen at +*00:00:30 get temp_aussen temp
define TempVorlauf at +*00:00:30 get vorlauf_ist temp

define vorlauf_ist ECMDDevice ONEWIRE 1089595b02080094
define temp_aussen ECMDDevice ONEWIRE 10cbbb4d020800e7

define Vorlauf dummy


define n_Vorlauf notify n_Vorlauf {\
my $TempVorlauf=0;;\
my $TempAussen=ReadingsVal(temp_aussen,"temp","nA");;\
my $TempVorlauf_ist=ReadingsVal(vorlauf_ist,"temp","nA");;\
my $Steilheit=0.95;;\
my $TempVorlauf=((($TempAussen - 20) * (0 - 1) * $Steilheit ) +20);;\
if ($TempVorlauf < $TempVorlauf_ist) {fhem("set Rel3 on;; set Rel2 on;; sleep 0.9;; set Rel2 off")};;\
if ($TempVorlauf > $TempVorlauf_ist) {fhem("set Rel3 off;; set Rel2 on;; sleep 0.9;; set Rel2 off")};;\
fhem("set Vorlauf Vorlauf_Soll: $TempVorlauf");;\
fhem("set Vorlauf Vorlauf_ist: $TempVorlauf_ist");;\
fhem("set Vorlauf Temp_Aussen: $TempAussen");;\
fhem("set Vorlauf Kennlinie: $Steilheit");;\
Log(3,"Temperatur Vorlauf:" .  $TempVorlauf);;\
Log(3,"Temperatur Vorlauf_ist:" .  $TempVorlauf_ist);;\
Log(3,"Temperatur Aussen:" .  $TempAussen);;\
Log(3,"Steilheit Kennlinie:" .  $Steilheit);;\
}
----------------------------------------------------------------------------------------------------------------------------------------------

Kannst Du einen Fehler erkennen?

Ansonsten ist es eine super Arbeit von dir.

Gibt es  eine plausible Erklärung für den Code,damit ich
die Funktionen nachvollziehen kann?

VG Steve



Puschel74

Hallo

das

my $TempAussen=ReadingsVal(temp_aussen,"temp","nA");;\
my $TempVorlauf_ist=ReadingsVal(vorlauf_ist,"temp","nA");;\


zu dem

my $TempAussen=ReadingsVal("temp_aussen","temp","nA");;\
my $TempVorlauf_ist=ReadingsVal("vorlauf_ist","temp","nA");;\


und weiter Fehlermeldungen bitte posten.
Ich hab nur eben schnell drüber geschaut und da ist mir nur das aufgefallen.

Grüße

Edit: Die "" haben gefehlt bei den Device-Namen
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Steve


Hab den Fehler gefunden, die Gänsefüßchen  haben gefehlt.

VG Steve