Nibe/KNV F1145 - Wettersteuerung nachbilden
|
|
||
|
Hallo, ich mache es bei mir wie folgt:
Falls du den Innenraumfühler aktiv nutzt, kannst du diesen Wert auch noch in die Formel packen. Mit dieser Methode verbiege ich zusätzlich auch noch die sehr grobe Heizkurvenoffset Einstellung und kann die Kurve feiner einstellen.
|
||
|
||
|
Vielleicht als Ergänzung, macht die Nibe Wettersteuerung glaube ich nicht: Da unsere Sanierung relativ gesehen ein Vogelhaus ist (und auch noch am Rand einer Siedlung dem Wetter ausgesetzt), berücksichtige ich auch den Wind in meiner manuellen Steuerung. Konkret sieht es so aus, der Returnwert ist der Aufschlag der auf die Basisheizkurvenoffset drauf kommt. Ich verwende übrigens Pyscript via Home Assistant für die Steuerung.
|
||
|
||
|
Darf ich fragen, wie oft werden da Werte an die WP WP [Wärmepumpe] übergeben? Also wieviel Schreibvorgänge habt ihr da? |
||
|
|
||
|
||
|
@Johnny90 , Du verwendest also eine virtuelle Raumsteuerung, um zu adaptieren. Gute Idee. Wie weit schaust Du in die Zukunft? 4h oder länger? @lewurm : Danke für den Hinweis mit dem Wind. Bei mir spielt es eher eine Rolle, ob es sonnig ist oder bedeckt - dazu überlege ich noch, Solcast als PV Prognose einzubetten um bei Sonne die Heizung zurückzufahren. @Ulairi : Ich würde das stündlich machen. |
||
|
||
|
Ähnlich kann man dies mit "sonnig", "bewölkt",... auch machen. Bei mir 0, da alles über den virtuellen RT RT [Raumtemperatur] Fühler/RMU geregelt wird. Falls dieser über HA nicht verfügbar ist, kann man auch über einen kleinen Raspberry Pico (oder größer) + bisschen Elektronikzeugs eine Spannung anlegen, die der gewünschten Temperatur entspricht und diesen als RT RT [Raumtemperatur] Fühler analog verwenden. Dieser wird dann per MQTT gefüttert. Allerdings ist diese Lösung eher für Bastelbegeisterte, aber hat bei mir schon funktioniert. |
||
|
||
|
Das ist denke ich vom Haus abhängig. Bei meiner leichten Holzständerbauweise mit wenig Speichermasse funktionieren 4h gut. Wenn man mehr Speichermasse hat, kann man wahrscheinlich erhöhen. Schau mal auf open-meteo nach. Da bekommst alles. Windgeschwindigkeit, Wettercode (Sonnig, bewölkt, Regen, Schnee,....), Sonnenstunden.... EDIT zu Beitrag oben: Ich meinte den Widerstand vom NTC simulieren. So wars glaube ich |
||
|
||
|
Hi Zusammen, ich plane ähnliches mit Loxone / Loxberry... ich denke ich muss mir die Beiträge nochmal genau durchlesen um eure Regelstrategie zu verstehen und eine eigene zu erarbeiten.... wass ich nun aber sehr spannend finde: Wie kannst du den Widerstand von einem NTC simulieren? Kannst du das detailiert beschreiben? Man müsste doch zumindest die gleiche Spannungsquelle haben, was aber schwierig ist wenn man mit einem externen Controler die Spannung erzeugt oder? |
||
|
||
|
Hi, an den Pi Pico habe ich einen DAC angeschlossen, der tatsächlich eine Spannung erzeugt hatte, die der Spannung entspricht, den die Nibe Steuerung für den NTC bei der entsprechenden Temperatur erwartet hätte. Eigentlich legt die Nibe eine 3,3V Spannung an den NTC an... Warum das funktioniert, das ich keinen Widerstand habe sondern, ebenfalls eine Spannung an die 2 Kabel anlege, weis ich nicht. Bin kein Elektroniker Bei der F-Steuerung hat dies funktioniert. Ich meine aber gelesen zu haben, das es auch Bauteile gibt, die eine variablen Widerstand erzeugen können. Hier mal ein Ausschnitt aus dem micro Python Code. Die Temperatur-Spannungs-Tabelle kommt aus dem Handbuch der Nibe für die verwendeten Temperaturfühler. Mit der Kalibrierkonstante habe ich die angezeigte RT RT [Raumtemperatur] an der WP WP [Wärmepumpe] justiert: # 📌 Kalibrierungskonstante KALIBRIERUNG = 0.9935 # Kalibrierungsfaktor für Spannung # 📌 I2C für MCP4725 DAC i2c = machine.I2C(1, scl=machine.Pin(7), sda=machine.Pin(6), freq=50000) MCP4725_ADDR = 0x60 # Standard I2C-Adresse des DAC # 📌 Temperatur-Spannungs-Datenpunkte (Messwerte) temp_spannung_tabelle = { 10: 2.673, 20: 2.399, 30: 2.083, 40: 1.752 } def temperatur_in_spannung(temperatur): """Interpoliert die DAC-Spannung aus den gegebenen Temperatur-Messwerten.""" temp_werte = sorted(temp_spannung_tabelle.keys()) # [10, 20, 30, 40] # Temperaturgrenzen setzen if temperatur <= temp_werte[0]: return temp_spannung_tabelle[temp_werte[0]] if temperatur >= temp_werte[-1]: return temp_spannung_tabelle[temp_werte[-1]] # Lineare Interpolation zwischen den nächstgelegenen Werten for i in range(len(temp_werte) - 1): t1, t2 = temp_werte, temp_werte[i + 1] if t1 <= temperatur <= t2: v1, v2 = temp_spannung_tabelle[t1], temp_spannung_tabelle[t2] return v1 + (v2 - v1) * ((temperatur - t1) / (t2 - t1)) def schreibe_dac(temperatur): """Berechnet die Spannung aus der Temperatur und schreibt den Wert an den MCP4725 DAC.""" spannung = temperatur_in_spannung(temperatur) # Anwenden der Kalibrierung spannung_kalibriert = spannung * KALIBRIERUNG # Umwandlung in 12-Bit Wert (0–4095) dac_wert = int((spannung_kalibriert / 3.3) * 4095) # Senden an den MCP4725 DAC data = bytearray([dac_wert >> 4, (dac_wert & 0x0F) << 4]) # 12-Bit Wert umwandeln i2c.writeto(MCP4725_ADDR, b'\x40' + data) print(f"🔢 DAC-Wert: {dac_wert} (Kalibrierte Spannung: {spannung_kalibriert:.3f}V)") |
Beitrag schreiben / Werbung ausblenden?
Einloggen
Kostenlos registrieren [Mehr Infos]

