Split-Klima - Einfache Berechnung COP & Wärmeleistung (SimpleCOP)

Hallo Win, nochmals Danke für die Ausführliche Tabelle. Hilft verdammt viel.
Wenn ich das richtig sehe hast Du für die Berechnung des Volumenstroms durchgehend den Wert 327,3 genommen. In deinem Datenblatt sind die Lüftungsstufen angegeben, die Höchststufe mit 678m3. Leider ist Hantech nicht so spendabel, hier ist die Angabe Pauschal 560m3. Also rechnest Du bewusst und aus Erfahrung mit etwas unter der hälfte der Herstellerangabe. Das gute daran ist das dieser 'Abschlagsfaktor' konstant über die ganze Tabelle geht. So müsste ich ein für mich passender Faktor finden und die Welt wäre in Ordnung. Die bei mir bereits Mühevoll ermittelten Werte hätten nach Multiplikation mit dem Faktor weiterhin Bestand. :sweat_smile:
Gruß

P.s. In der Zwischenzeit habe ich (bzw. ein Kollege hier im Forum) doch ein Hantech Datenblatt mit Lüfter Geschwindigkeiten (rpm) der einzelnen Stufen gefunden👍

Schau dir nochmal den ersten Beitrag an. Es geht ja um Faktor X, mit dem man die Leistung berechnet. Den hab ich bei dieser Anlage empirisch feingetunt auf 110.

Den kann man, wie oben auch im ersten Beitrag beschrieben, erstmal so grob z.B. über den zu erwarteten Volumenstrom abschätzen. Oder über bestimmte Werte nach Eurovent. Aber das kann nur eine ganz grobe Orientierung sein, man muss feintunen.

Bei mir ging das z.B. über Heizlüftertest und Vergleich.

Der Volumenstrom ist bei mir durch die zusätzliche Filterbox stärker herabgesetzt. Hätte ich so nicht erwartet, aber bei höchster Lüfterstufe wirkt sich das stark aus. In etwa so: Mit Filterbox x=110, ohne Filterbox x=180. Zumindest so grob, was ich so gegengeprüft habe.

Und ja, alle deine erfassten Daten behalten ihren Wert, wenn man später den Faktor einfach etwas nachjustiert und so neue berechnete Werte herausbekommt. Bei mir ist der Faktor X in einer Zelle in der Excel-Tabelle, über den ich alle Berechnungen mache. Schreibe ich in diese Zelle einen anderen Faktor, ändert sich die Berechnung aller Werte.

Hallo zusammen

Folgendes hab ich im Home assistant Forum Simon42 reingestellt, aber keine große Hoffnung.
Vielleicht kennt sich hier einer genau aus

anfang Home assistant Forum

Hallo

kann so etwas ohne grosser Aufwand realisiert werden? Kenne mich mit YAML nicht aus.

ergebniss =

((entität_temp_2 - entität_temp_1) * 171,474) / entität_leistung * 0,48
Beispiel:


entität_temp_1   = 20,5°
entität_temp_2   = 31,0°
entität_leistung = 440,6 Wh

((31-20,5) * 171,474) / 440,6 * 0,48

ergebnis: 1,96

Das Ergeniss soll dann als Chart (wie z.B. ein Leistungschart) Zeitraum bezogen angezeigt werden.

Wäre mir HA begeisterter aber noch Dummie eine große Hilfe.

Vielen Dank und Gruß aus dem Schwarzwald

Ende Home assistant Forum

Wäre das möglich würde der COP laufend ausgerechnet werden und könnte als chart über Jeden Zeitraum angezeigt werden.

Die 171,474 ist der Faktor zum ausrechnen des Volumenstroms, in diesem Fall zu meinen 510m3.

Der Faktor 0,48 muss jeder selbst feststellen, ich hab hier einfach den Faktor von Wins Tabelle (ausgehend von 678m3) genommen
Da einmal festgestellt, sich die Faktoren nicht ändern, müsste man kaum in HA eingreifen.

Liege ich mit den Überlegungen richtig?

Grüße

P.s In der Zwischenzeit habe ich Rückmeldung von Simon42, dieser Part ist erledigt💪

1 „Gefällt mir“

Hallo Win, Hallo freunde der COP Berechnung.

Mit der Tabelle von Win konnte ich endlich von der praktischen Sache her Arbeiten; Mathe 4-:hugs:

Und da mir wiederkehrende Arbeiten ein Graus sind habe ich den Freund Computer dafür engagiert. Ich hoffe alles ist Bedacht. Der COP meiner drei Arbeitspferde wird jetzt 24/365 festgehalten und ein Vergleich ist jetzt jederzeit ohne Aufwand möglich. Hier ein erster Test:

Die dafür Benötigte Faktoren hab ich im Vorigen Post genannt.
Ihr könnt ja nachrechnen und evtl. Unstimmigkeiten melden.
Gruß

2 „Gefällt mir“

Da hat sich ein "kWh" bei der COP-Tabelle reingemogelt, was da nicht hingehört.

Sehr schön, so eine grafische Aufarbeitung, so lässt sich das gut beobachten.

Ja, das blöde ist nur das Home Assistant eine Einheit zum Rechnen braucht. COP ist nicht dabei. Es gehen nur Kwh oder Wh. Aber so verkehrt sehe ich es nicht : COP = Verhältnis 1, 0 zu x,x kw.

kW / kW kürzt sich weg und damit ist der COP einheitslos. Wie man das umsetzt in HA, weiß ich nicht.

Du hast Recht. Die Berechnung lässt sich auch ohne Kwh durchführen wenn man keine Einheit Energie angibt. Dann lässt sich auch COP als Konstante eingeben. Danke :+1:

Hallo, so sieht's jetzt nach dem Berechtigten Einwand von Win aus.

Sollte jemand interesse haben oder es selbst in Home Assistant einbauen wollen, kein Problem. Bessere Ideen übernehm ich dann einfach😁

Jetzt bleibt nur noch die Feinjustierung der Faktoren. Für Volumenstrom ist easy aus den Lüfterdrehzahlen im Datenblatt, NICHT aus dem Verbrauch der Lüfterstufen. Auch hier hatte Win Recht, ist nicht Linear.
Der Ausgleichsfaktor für den COP ist schon etwas aufwendiger. Ich hab einfach den von Win übernommen. Der scheint auch für mich einigermaßen zu passen. Aber eins zu eins ist nicht möglich, da arbeite ich noch dran.
Gruß

2 „Gefällt mir“
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=deVice-width, initial-scale=1.0">
    <title>COP Rechner</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        .container { max-width: 400px; margin: auto; }
        label, input, select { display: block; width: 100%; margin-top: 10px; }
        button { margin-top: 15px; padding: 10px; width: 100%; cursor: pointer; }
        .result { margin-top: 20px; font-weight: bold; }
    </style>
</head>
<body>
    <div class="container">
        <h2>COP Rechner für Klimaanlagen</h2>
        <label for="model">Klimamodell:</label>
        <select id="model" onchange="updateRPMRange()">
            <option value="ATXD25">ATXD25</option>
            <option value="ATXD35">ATXD35</option>
            <option value="ATXM35">ATXM35</option>
        </select>

        <label for="tempIn">Eingangstemperatur (°C):</label>
        <input type="number" id="tempIn" value="22">

        <label for="tempOut">Ausblastemperatur (°C):</label>
        <input type="number" id="tempOut" value="36">

        <label for="fanRPM">Lüfterdrehzahl (RPM):</label>
        <input type="number" id="fanRPM" value="640">

        <label for="power">Leistungsaufnahme (W):</label>
        <input type="number" id="power" value="300">

        <button onclick="calculateCOP()">COP berechnen</button>
        <div class="result" id="result"></div>
    </div>

    <script>
        const fanData = {
            "ATXD25": [
                { rpm: 620, flow: 366 },
                { rpm: 730, flow: 432 },
                { rpm: 880, flow: 516 },
                { rpm: 1080, flow: 630 }
            ],
            "ATXD35": [
                { rpm: 640, flow: 378 },
                { rpm: 780, flow: 462 },
                { rpm: 950, flow: 564 },
                { rpm: 1160, flow: 690 }
            ],
            "ATXM35": [
                { rpm: 590, flow: 294 },
                { rpm: 730, flow: 390 },
                { rpm: 900, flow: 510 },
                { rpm: 1010, flow: 588 }
            ]
        };

        function updateRPMRange() {
            let model = document.getElementById('model').value;
            let defaultRPM = fanData[model][0].rpm;
            document.getElementById('fanRPM').value = defaultRPM;
        }

        function calculateCOP() {
            let model = document.getElementById('model').value;
            let tempIn = parseFloat(document.getElementById('tempIn').value);
            let tempOut = parseFloat(document.getElementById('tempOut').value);
            let fanRPM = parseFloat(document.getElementById('fanRPM').value);
            let power = parseFloat(document.getElementById('power').value);
            
            if (isNaN(tempIn) || isNaN(tempOut) || isNaN(fanRPM) || isNaN(power) || power <= 0 || fanRPM <= 0) {
                document.getElementById('result').innerText = "Bitte gültige Werte eingeben!";
                return;
            }
            
            let rpmToFlowMapping = fanData[model];
            let volFlow;
            if (fanRPM <= rpmToFlowMapping[0].rpm) {
                volFlow = rpmToFlowMapping[0].flow * (fanRPM / rpmToFlowMapping[0].rpm);
            } else if (fanRPM >= rpmToFlowMapping[rpmToFlowMapping.length - 1].rpm) {
                volFlow = rpmToFlowMapping[rpmToFlowMapping.length - 1].flow * (fanRPM / rpmToFlowMapping[rpmToFlowMapping.length - 1].rpm);
            } else {
                for (let i = 0; i < rpmToFlowMapping.length - 1; i++) {
                    let lower = rpmToFlowMapping[i];
                    let upper = rpmToFlowMapping[i + 1];
                    if (fanRPM >= lower.rpm && fanRPM <= upper.rpm) {
                        let ratio = (fanRPM - lower.rpm) / (upper.rpm - lower.rpm);
                        volFlow = lower.flow + ratio * (upper.flow - lower.flow);
                        break;
                    }
                }
            }
            
            let deltaT = tempOut - tempIn;
            let rho = 1.2;
            let cp = 1005;
            let massFlow = volFlow * rho;
            let Q = (massFlow * cp * deltaT) / 3600;
            let COP = Q / power;
            
            document.getElementById('result').innerText = "Modell: " + model + "\nVolumenstrom: " + volFlow.toFixed(2) + " m³/h\nHeizleistung: " + Q.toFixed(2) + " W\nCOP: " + COP.toFixed(2);
        }
    </script>
</body>
</html>

Für jemand der keine smarthome Software hat oder die benötigten Sensoren sind nicht eingebunden hier ein HTML welches ein COP berechnen kann, die Drehzahl vom Lüfter bekommt man über ein Faikinmodul.

Grüße

2 „Gefällt mir“

Hallo Brezel, leider etwas über mein Wissen :hugs:

Wo muss das eingebunden werden, wie kommen die Eingangswerte rein und kann das den COP kontinuierlich fortschreiben?
Wäre eine Prima Sache um es mit meiner Berechnung zu Vergleichen.
Gruß

Update: Nach einiger Recherche hab ich doch mitbekommen wie man es zum Ausführen bringt :+1: Damit erheben sich meine Fragen.
Dank und Gruß

Hallo carupet,

hätte ich besser erklären sollen, Du hast es herausgefunden aber für andere den es vielleicht auch interessiert versuche ich es mal. Es ist ein HTML Code, also den oben von mir veröffentlichten HTML Code mit copy&paste in einen Editor seiner Wahl kopieren und es nach Wunsch abspeichern, wichtig ist das die Datei mit Endung .htm oder .html abgespeichert wird. Die Datei sollte sich damit unter WIN/MAC/LINUX sowie Android / IOS mittels Browser aufrufen lassen. Ich habe für die Daikin Modelle ATXD25, ATXD35 und ATXM35 die Lüfterumdrehung und die Luftmenge pro Stunde hinterlegt. Also entsprechendes Modell auswählen. Gebraucht werden noch die Eingangstemperatur, Ausblastempertur die mittels Thermometer zu erfassen sind und für die aktuelle Lüfterdrehzahl wird ein Faikinmodul benötigt sowie für die Leistungsaufnahme ein Leistungsmessgerät. Es wird nur die Momente COP berechnet, nichts ausgelesen oder fortgeschrieben oder gespeichert.

Grüße

1 „Gefällt mir“

Hallo, Super Sache um es mit meinen Berechnungen zu Vergleichen :+1:
Und gleich eine Frage (vielleicht auch an WIN):
Warum hat die ATXM35 die schlechtesten Werte. Ist das so korrekt? :hugs:
Gruß

Aufgefallen ist es mir auch schon, erklären kann ich es nicht, gerade das ATXM Innengerät ist im Vergleich zum ATXD nochmals größer und schwerer.

Die Lüfterdrehzahl sowie die Luftmenge sind keine Erfindungen von mir, sondern die habe ich aus der Daikin Spezifikation entnommen.

Grüße

Hallo, ich hab mal den Script um meine Hantech 12000 und die SRK-SRC 25 (von Win) ergänzt um zu sehen ob Übereinstimmung herrscht. Gute Arbeit, passt bei allen dreien :+1:
Aber nicht zu früh freuen. Natürlich muß noch ein ausgleichender Faktor berücksichtigt werden. Win hat einen mit 0.48 für sich ermittelt. Den hab ich erstmal (sorry Win) einfach übernommen. Ist nichts kleines sowas zu ermitteln. Scheint auch bei mir einigermaßen zu passen. Mit diesem Faktor stimmen unsere COP's überein.
Ohne diesen Faktor hätte ich heute 15:45 eine Wunder Hantech mit COP 12 gehabt :rofl: :rofl:

Toller Script, lässt sich einfach anpassen :+1: :+1: :+1:
Gruß

Hallo, ich hab mir erlaubt den Script so umzuwandeln, dass man leichter nach der Vorgabe von WIN arbeiten kann.

Die Hantech (12000 und 9000 haben gleiche Werte) und die SRK SRC 25 habe ich hinzugefügt.
Da wir das Gebläse beim Messen immer auf volle Pulle haben, ist jetzt anstatt die niedrigste die höchste Lüfterstufe vorbelegt. Leider hab ich zu Dimstal keine Werte gefunden, sonst wäre auch diese eingebunden. Der Faktor ist mit 0.4845 vorbelegt und kann geändert werden. Mit diesem Faktor stimmen sowohl die Werte aus WIN's Tabelle als auch meine Langzeitwerte zu 100%.

Richtig cool wäre es wenn die Ergebnisse auf eine csv datei ausgegeben würden. Das ist aber für mich leider zu hoch. Die Ergänzung von Tagestemperatur und ein Schalter ob der aktuelle Test in die Statistik soll wäre das kleinste Problem.
Eine Tabelle wie die von WIN für verschiedene Anlagen wäre doch Superklasse. Aber wie gesagt ein könner muss die Dateiausgabe übernehmen.

Wenn gewünscht Stelle ich den Script hier rein oder Sende ihn zu.
Gruß

1 „Gefällt mir“

Ja, stell mal ein. Verbesserungen sind doch immer nützlich.

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=deVice-width, initial-scale=1.0">
    <title>COP Rechner</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        .container { max-width: 400px; margin: auto; }
        label, input, select { display: block; width: 100%; margin-top: 10px; }
        button { margin-top: 15px; padding: 10px; width: 100%; cursor: pointer; }
        .result { margin-top: 20px; font-weight: bold; }
    </style>
</head>
<body>
    <div class="container">
        <h2>COP Rechner für Klimaanlagen</h2>
        <label for="model">Klimamodell:</label>
        <select id="model" onchange="updateRPMRange()">
            <!-- eigene Anlage an erste Stelle setzen -->
            <option value="SRKSRC25">SRKSRC25</option>
            <option value="Hantech">Hantech</option>
            <option value="ATXD25">ATXD25</option>
            <option value="ATXD35">ATXD35</option>
            <option value="ATXM35">ATXM35</option>
            
        </select>

        <label for="tempIn">Eingangstemperatur (°C):</label>
        <input type="number" id="tempIn" value="22">

        <label for="tempOut">Ausblastemperatur (°C):</label>
        <input type="number" id="tempOut" value="36">

        <label for="fanRPM">Lüfterdrehzahl (RPM):</label>
        <!-- eigene Lüfterdrehzahl setzen -->
        <input type="number" id="fanRPM" value="1130">

        <label for="power">Leistungsaufnahme (W):</label>
        <input type="number" id="power" value="300">
       
        <label for="faktor">Ausgleichsfaktor (FAK):</label>
        <input type="number" id="faktor" value="0.4845">


        <button onclick="calculateCOP()">COP berechnen</button>
        <div class="result" id="result"></div>
    </div>

    <script>
        const fanData = {
            "ATXD25": [
              	 { rpm: 1080, flow: 630 },
                { rpm: 880, flow: 516 },
                { rpm: 730, flow: 432 },
                { rpm: 620, flow: 366 }
            ],
	
            "ATXD35": [
                { rpm: 1160, flow: 690 },
                { rpm: 950, flow: 564 },
                { rpm: 780, flow: 462 },
                { rpm: 640, flow: 378 }

            ],

            "ATXM35": [
	        { rpm: 970, flow: 560 },
                { rpm: 900, flow: 510 },
                { rpm: 730, flow: 390 },
                { rpm: 590, flow: 294 }
            ],

            "SRKSRC25": [
                { rpm: 1130, flow: 678 },
                { rpm: 870, flow: 522 },
                { rpm: 670, flow: 402 },
                { rpm: 590, flow: 354}
            ],

            "Hantech": [
                { rpm: 1020, flow: 510 },
                { rpm: 900, flow: 450 },
                { rpm: 800, flow: 400 }
            ]
        };

        function updateRPMRange() {
            let model = document.getElementById('model').value;
            let defaultRPM = fanData[model][0].rpm;
            document.getElementById('fanRPM').value = defaultRPM;
        }

        function calculateCOP() {
            let model = document.getElementById('model').value;
            let tempIn = parseFloat(document.getElementById('tempIn').value);
            let tempOut = parseFloat(document.getElementById('tempOut').value);
            let fanRPM = parseFloat(document.getElementById('fanRPM').value);
            let power = parseFloat(document.getElementById('power').value);
            let faktor = parseFloat(document.getElementById('faktor').value);
            
            if (isNaN(tempIn) || isNaN(tempOut) || isNaN(fanRPM) || isNaN(power) || power <= 0 || fanRPM <= 0) {
                document.getElementById('result').innerText = "Bitte gültige Werte eingeben!";
                return;
            }
            
            let rpmToFlowMapping = fanData[model];
            let volFlow;
            if (fanRPM <= rpmToFlowMapping[0].rpm) {
                volFlow = rpmToFlowMapping[0].flow * (fanRPM / rpmToFlowMapping[0].rpm);
            } else if (fanRPM >= rpmToFlowMapping[rpmToFlowMapping.length - 1].rpm) {
                volFlow = rpmToFlowMapping[rpmToFlowMapping.length - 1].flow * (fanRPM / rpmToFlowMapping[rpmToFlowMapping.length - 1].rpm);
            } else {
                for (let i = 0; i < rpmToFlowMapping.length - 1; i++) {
                    let lower = rpmToFlowMapping[i];
                    let upper = rpmToFlowMapping[i + 1];
                    if (fanRPM >= lower.rpm && fanRPM <= upper.rpm) {
                        let ratio = (fanRPM - lower.rpm) / (upper.rpm - lower.rpm);
                        volFlow = lower.flow + ratio * (upper.flow - lower.flow);
                        break;
                    }
                }
            }
            
            let deltaT = tempOut - tempIn;
            let rho = 1.2;
            let cp = 1005;
            let massFlow = volFlow * rho;
            let Q = (massFlow * cp * deltaT) / 3600;
            let COP = Q / power * faktor;  
            
            document.getElementById('result').innerText = "Modell: " + model + "\nVolumenstrom: " + volFlow.toFixed(2) + " m³/h\nHeizleistung: " + Q.toFixed(2) + " W\nCOP: " + COP.toFixed(2);
        }
    </script>
</body>
</html>
 

P.s
Habe nachträglich die eigene Anlage in der Auswahl an Erste Stelle gesetzt und Lüfterzahlen von SRKSRC25 richtiggestellt

2 „Gefällt mir“

Interessantes Resultat bei meiner MHI SRC/SRK20:

TA TI TAW P Thub TAW-TI PW COP
13,0 22,8 46,6 598,0 33,6 23,8 2451,40 4,10
14,1 17,7 31,3 176,0 17,2 13,6 1400,80 7,96

Außen-Temperatur war bei beiden Messungen fast identisch. Man kann bei 14 Grad Außentemperatur und unterster Modulation einen COP von knapp 8 erreichen.

Wenn man nun aber die Anlage mit etwas mehr Leistung heizen lässt, also statt 176W auf 598W hoch geht, steigt die Auswurftemperatur auf 46,6 Grad. Und da liegt der COP nur noch bei 4,1, also fast die Hälfte.

Hier zeigt sich auch wieder, dass man sich in Sachen Effizienz vor allem an der Auswurftemperatur orientieren kann.

Hallo und Gruß aus Andalusien

Die Auswurftemperatur hängt aber auch stark von Innen und Außentemperatur ab. Hier eine Messung von einer Mitsubishi AP35 in der Ferienwohnung bei 19° Aussentemperatur.

So toll der COP von fast 8 bei Auswurf von über 44° ist, im Echten Leben find ich es, bei dieser Anlage, Kontraproduktiv. Sie ist deshalb ständig am takten. Besser wäre es wenn sie den Punkt suchen würde mit dem sie länger durchlaufen kann.
Gruß