Projekt: Überhitzungsregler

Abend,

ich möchte in diesem Thread einen Teilbereich meines Projektes vorstellen auch mit der Hoffnung dabei von euch zu lernen und hilfreiche Tipps zu bekommen, mein Ziel zu erreichen.

Gesamtprojekt: Speiseeismaschine
Teilprojekt: Steuerung der Kältemaschine und anderen wichtigen Komponenten über Arduino mit Anzeige und Einstellmöglichkeiten.

Vorwort und kurzer einblick in die Grundlagen:
Der wichtigste Bestandteil des elektrischen Teiles ist folgender:
Normalerweise wird bei einer Kleinkälteanlage über ein TEV (Thermostatisches-Einspritz-Ventil) die Einspritzung und vor allem die Überhitzung am ende des Verdampfers geregelt. Dieses Bauteil benötigt in der Regel minimum ein Kapillarrohrfühler an der Saugseite um die Austrittstemperatur zu erfassen und damit die eingespritzte Kältemittelmenge zu regulieren. (Effizienz des Verdampfers und Schutz vor Flüssigkeitsschlägen im Verdichter). Der Druck spielt dabei auch eine essentielle Rolle, wird aber bei einem TEV - da es fest im Kältemittelkreislauf eingebaut wird - nicht seperat benötigt (außer bei TEV mit äußerem Druckausgleich)

Es gibt aber auch EEV´s (Elektronische Einspritz Ventile) die entweder wie ein simples Magnetventil (AKV) arbeiten (schnell gepulstes auf - zu) oder Ventile mit Schrittmotor welcher einer Nadel langsam auf oder zu dreht (zb. Carel E2V)

Vorteil ist zb. eine effizientere Ausnutzung der Verdampfers, da die Überhitzung nicht mehr so groß sein muss. (TEV´s sind recht Träge)
Nachteil ist halt, dass man bei solch einer Einspritzung eine elektronische Regelung braucht. Natürlich bietet jeder Hersteller solcher EEV´s entsprechende Steuerungen an.. Aber wer wären wir, wenn wir sowas nutzen würden XD

In einem Kälteforum bekam ich von einem User eine Dampftabelle und ein paar anfängliche Tipps, wie das zu realisieren ist.

Wichtig zu wissen ist, dass der Druck (in bar absolut) auf der Saugseite immer einer Verdamfpungstemperatur (in °C) entspricht, solange noch flüssiges Kältemittel vorhanden ist.
Die Überhitzung heißt nichts anderes, als dass das vollständig verdampfte Kältemittel um so und so viel °C noch weiter überhitzt wird.

(Analogie zu Wasser:
Wasser hat eine Verdampfungstemperatur von 100°C bei 1,013bar. Ist alles Wasser verdampft und wird der Dampf noch weiter erhitzt, spricht man von Überhitzung - also über 100°C hinaus)

Für mein Projekt heißt das:

-Ein Druckaufnehmer nimmt mir den aktuell vorherrschenden Verdampfungsdruck auf.
-Dieser Druck muss jetzt im Arduino einer Verdampfungstemperatur zugewiesen werden.
-Ein Temperaturfühler nimmt die aktuelle Temperatur an der Saugleitung, direkt nach dem Verdampfer auf.
-Im Arduino wird die gemessene Temperatur mit der erreichneten verglichen und daraus die Differenz errechnet.
-Ergebnis ist die Überhitzung.

Nächster schritt wäre diesen Wert her zu nehmen und über einen Regler ein EEV anzusteuern und die Einspritzung entprechend zu regulieren.

Erster Schritt:
Druck auslesen und über ein Array einer Temperatur zuweisen:

/* Überhitzungsregler by Fr33man
  
  Schritt 1: (22.12.2013)
    Dampftabelle mit IST-Druck vergleichen und 
    Verdampfungstemperatur ausgeben.


*/


// PIN-zuweisungen
#define p0 a0


// Dampftafel R134a
// Werte / 100 entsprechen p abs.
// Arrayposition - 301 / 10 entpricht t0. 
//
// Beispiel:
//
// analogRead(p0) wäre zb. = 101
// In Bar wäre es: 101 / 100 = 1,01 bara
// 101 ist die 39. Position im Array (Zähler in einer For schleife)
// 39 - 301 / 10 = -26,2°C 

int p0h_table [] = {84, 85, 85, 86, 86, 86, 87, 87, 88, 88,
88, 89, 89, 90, 90, 91, 91, 91, 92, 92,
93, 93, 94, 94, 94, 95, 95, 96, 96, 97,
97, 98, 98, 98, 99, 99, 100, 100, 101, 101,
102, 102, 103, 103, 104, 104, 104, 105, 105, 106,
106, 107, 107, 108, 108, 109, 109, 110, 110, 111,
111, 112, 112, 113, 113, 114, 114, 115, 115, 116,
116, 117, 117, 118, 118, 119, 120, 120, 121, 121,
122, 122, 123, 123, 124, 124, 125, 125, 126, 127,
127, 128, 128, 129, 129, 130, 130, 131, 132, 132,
133, 133, 134, 134, 135, 136, 136, 137, 137, 138,
139, 139, 140, 140, 141, 142, 142, 143, 143, 144,
145, 145, 146, 146, 147, 148, 148, 149, 150, 150,
151, 151, 152, 153, 153, 154, 155, 155, 156, 157,
157, 158, 159, 159, 160, 161, 161, 162, 163, 163,
164, 165, 165, 166, 167, 167, 168, 169, 169, 170,
171, 172, 172, 173, 174, 174, 175, 176, 176, 177,
178, 179, 179, 180, 181, 182, 182, 183, 184, 185,
185, 186, 187, 187, 188, 189, 190, 191, 192, 193,
193, 194, 194, 195, 196, 197, 197, 198, 199, 200,
201, 201, 202, 203, 204, 205, 205, 206, 207, 208,
209, 209, 210, 211, 212, 213, 214, 214, 215, 216,
217, 218, 219, 219, 220, 221, 222, 223, 224, 225,
226, 227, 228, 229, 230, 231, 232, 232, 233, 234,
234, 235, 236, 237, 238, 239, 240, 241, 242, 242,
243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
253, 254, 255, 256, 256, 257, 258, 259, 260, 261,
262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
282, 283, 284, 285, 286, 288, 289, 290, 291, 292,
293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
304, 305, 306, 307, 308, 309, 310, 311, 312, 314,
315, 316, 317, 318, 319, 320, 321, 323, 324, 325,
326, 327, 328, 329, 331, 332, 333, 334, 335, 336,
338, 339, 340, 341, 342, 344, 345, 346, 347, 348,
350, 351, 352, 353, 355, 356, 357, 358, 359, 361,
362, 363, 364, 366, 367, 368, 370, 371, 372, 373,
375, 376, 377, 378, 380, 381, 382, 384, 385, 386,
388, 389, 390, 392, 393, 394, 396, 397, 398, 400,
401, 402, 404, 405, 406, 408, 409, 410, 412, 413};



// Variablen

int p0;
int t0;
int bara;


void setup()
{
  Serial.begin(9600);
  pinMode(p0, INPUT);
 



}


void loop()
{
// Druck einlesen (evtl den Rohwert noch mappen oder sowas)
  p0 = analogRead(p0);

// Eingelesenen Wert mit der Tabelle vergleichen
  int i = 0;
  while (p0h_table[i] = p0)
  {
    i++;
  }


// da der Zähler i zur berechnung der Verdampfungstemperatur verwendet wird, wird er 
// hier umgerechnet. Zur Anzeige wird auch gleich noch der Wert in der Variable p0 
// in Bara umgerechnet.
  t0 = i - 301 / 10;
  bara = p0 / 100;
  
  
// Werte werden ausgegeben
  Serial.println( t0);
  Serial.println(bara);

}

Das ist mein aktueller, ungetesteter Stand.

Kann das funktionieren? Verbesserungsvorschläge?

Bis später

Ziemlich kompliziert.
Die Kühlagregate die ich kenne, die analog die Verdampfertemperatur regeln (nicht durch Ein-Ausschalten des Verdichters sondern durch Regelung der Kühlleistung sind Kapillarrohranlagen (keine Regelventile)) haben einen Heizung für des Kapillarrohr bzw erwärmen das Kapillarrohr durch Stromdurchfluß und modifizieren so die Kühlmittelmenge die den Verdampfer erreicht.
Du brauchst eine tiefere Temperatur um etwas zu kühlen. Ist da ein Temperaturunterschied von einigen °C mehr oder weniger so wichtig?
Kommst Du mit R134a überhaupt auf die für die Speiseeisherstellung notwendigen tiefen Temperaturen?

Zu Deinem Sketch. Es ist unsinnig zur Umwandlung den Wert durch Suche der Übereinstimmung des gemessenen Wertes mit dem Arrayelemente und dann den Index als Resultat zu erhalten. Das ist nur Zeitaufwendig. Forme das Array so um daß der gemessenen Wert (mit eventuelle mapping oder umrechnung) als Index des Arrays genommen wird und der gesuchte Wert das Arrayelement ist. Noch besser wäre ein Term zur Umrechnug y=f(x)

Viele Grüße Uwe

uwefed:
Ziemlich kompliziert.
Die Kühlagregate die ich kenne, die analog die Verdampfertemperatur regeln (nicht durch Ein-Ausschalten des Verdichters sondern durch Regelung der Kühlleistung sind Kapillarrohranlagen (keine Regelventile)) haben einen Heizung für des Kapillarrohr bzw erwärmen das Kapillarrohr durch Stromdurchfluß und modifizieren so die Kühlmittelmenge die den Verdampfer erreicht.

hast du bilder, Schemen oder andere Infos dazu?
Das hab ich noch nie gehört.
In der Regel ist ein Verdampfer auf eine Kälteleistung ausgelegt bei der auch eine ganz bestimmte Menge Kältemittel bei vorher berechneter Verdampfungstemperatur verdampfen soll und anschließend noch eine Überhitzung erfahren soll.
Mit einem TEV, EEV, AKV (also "geregelte" Einspritzung) wird nicht die Verdamfpungstemperatur reguliert! Die resultiert aus der Kombination von Verdampfer, Verdichter und gewähltes Einspritzventil. Ein TEV ist ein reiner Überhitzungsregler.
Um so kleiner die Überhitzung ist, umso effektiver wird der Verdampfer genutzt, da noch bis ganz knapp vor seinem Ausgang das Kältemittel verdampft und Energie aus dem zu kühlenden Medium nimmt. Die Überhitzungszone sollte so klein wie möglich sein, was mit einem TEV (weil im Regelverhalten recht Träge) nicht so gut möglich ist. Wird die Überhitzung zu klein eingestellt (Stellschraube am TEV) besteht die Möglichkeit, dass der Verdichter flüssiges Kältemittel ansaugt und die Ventilplatten zerstört werden.

Du brauchst eine tiefere Temperatur um etwas zu kühlen. Ist da ein Temperaturunterschied von einigen °C mehr oder weniger so wichtig?

Nein, rein physikalisch betrachtet, spielt es keine Rolle wieviel kälter ein kalter Gegenstand ist, um einen wärmeren zu kühlen.
Doch für die Berechnung einer Kälteanlage und dimensionierung eines Verdampfers sollten schon genaue Werte zu Grunde gelegt werden. Grad bei tiefen Verdamfpungstemperaturen können ein paar Grad mehr oder weniger schon einige 100Watt Kälteleistung mehr oder weniger bedeuten. (Verdichter evtl zu klein, Verdampfer zu klein, Verflüssiger zu klein....)

Kommst Du mit R134a überhaupt auf die für die Speiseeisherstellung notwendigen tiefen Temperaturen?

Speiseeis hat eine Temperatur von etwa -12°C und ist dabei grade noch Cremig. Mit R134a könnte man theoretisch bis weit unter -30° verdampfen.. Da man dann allerdings auch im Vakuum fährt, sind praktisch nur Temperaturen von etwa -26° sinnvoll. Somit eigentlich ausreichend (Kühlstelle minus deltaT 8 - 10kelvin = Verdampfungstemperatur) aber auch aus anderen Gründen nicht sinnvoll.
Aber: Es ist machbar XD

Jedoch werde ich in der praktischen Umsetzung dann wohl auf R407C oder evlt sogar auf ein natürliches KM wie R290 setzen.
Hab jetzt nur mal mit 134a angefangen, weil ich die Tabelle schon hatte.

Zu Deinem Sketch. Es ist unsinnig zur Umwandlung den Wert durch Suche der Übereinstimmung des gemessenen Wertes mit dem Arrayelemente und dann den Index als Resultat zu erhalten. Das ist nur Zeitaufwendig. Forme das Array so um daß der gemessenen Wert (mit eventuelle mapping oder umrechnung) als Index des Arrays genommen wird und der gesuchte Wert das Arrayelement ist. Noch besser wäre ein Term zur Umrechnug y=f(x)

Viele Grüße Uwe

Ich bin in Sachen Arduino noch nicht wirklich Fitt. Ich hab diese Herangehensweise wie gesagt, von einem aus dem Kälteforum. Natürlich muss dies nicht die beste Methode sein :wink:

Jedoch gibt es angeblich keinen Term dafür, zumindest konnte mir niemand einen nennen, mit dem ein direkter Bezug zueinander herzustellen ist.

Ich könnte Schaltbilder haben aber die darf ich nicht an 3. weitergeben. sorry. Aber die Schaltbilder nutzen Dir wenig. Der Kühlkreislauf muß dafür ausgelegt sein und dazu brauchst Du die Mithilfe eines erfahrenen Kühltechnikers.

Meine Frage: Zu was brauchst Du überhaupt eine Leistungsregelung des Kühlkreislaufs???

Grüße Uwe

Wie gesagt, es handelt sich dabei nicht um eine Leistungsregulierung, zumindest nicht im direkten Sinne.

Es geht dabei einzig darum, die Überhitzung zu regulieren.
Bis auf Kälteanlagen mit einem AEV (automatischen Einspritz Ventil - Arbeitsweise ähnlich eines normalen Druckminderers) hat das jede - mir bekannte - Kältemaschine. Ich glaube sogar bei Kühlschränken mit Kapillarrohreinspritzung ist das durch das in der Saugleitung verlegte und damit direkt in Kontakt mit dem Sauggas(Sauggastemperatur) stehende Kapillarrohr, gelöst.
Bei TEV´s wie gesagt über den Fühler: Animation

Klimatechniker, ja.. erfahren, noch nicht ^^

Gruß

"Erfahren" weil die wenigsten Klimatechniker bzw Kältetechniker jemals eine solche Leistungsregelung gesehen haben. Diese Regelung habe ich in einem Laborgerät gesehen das einen Innenraum unter anderem auf 25°C regeln konnte. Genauigkeit mit elektrischer Nachheizung mindesten Zehntelgrade. Das andere Gerät ist ein Cryostat. Bei dem ich eigentlich nicht weiß, wieso diese Regelung gewählt wurde.
Grüße Uwe

Fr33man:
Ich glaube sogar bei Kühlschränken mit Kapillarrohreinspritzung ist das durch das in der Saugleitung verlegte und damit direkt in Kontakt mit dem Sauggas(Sauggastemperatur) stehende Kapillarrohr, gelöst.

Soweit ich weiß wird das Kapillarror paralell zum Saugrohr geführt damit das flüssige Kühlmitter weiter herunter gekühlt wird und somit bereits auf ca Verdampfertemperatur im Verdampfer ankommt. Denk mal an eine 2 Stufigen Kühlkreislauf.
Grüße Uwe

Ah, ok.. wie gesagt.. die Erfahrung kommt noch... stehe grad am Ende der Ausbildung. Da hat man noch nicht soo viel gesehen :grin:

:blush: Huch.. Ja, natürlich.. zu dem Kühlschrank hast du wohl Recht. Funktionsweise eines IWÜ´s.. wieso ist mir das nicht aufgefallen .. ^^

Aber bin immer offen für Neues :wink:

So, hier mal mein aktueller Entwicklungsstand:

Als Anhang. Code ist zu lang

Anregungen, Verbesserungen und der gleichen sind erwünscht.

Nächster Schritt:

  • Anderen RotaryEncoder besorgen. Meiner macht bei "einer Raste" vier Schritte, bei den nächsten 2 "Rasten" drei Schritte, dann wieder 4.. Irgendwie komisch.
  • I2C-EEPROM einbinden für speichernden Sollwert beim Neustart
  • Unterkühlungsregler genauer "betrachten" für die Steuerung/Regelung des Kondensatorlüfters
  • Korrekturwert für die Temperaturfühler überarbeiten - deltaT von Kältemittel -> über Kupferrohr -> in Fühler. Das geht aber noch nicht so richtig. Jemand einen Tipp/Formel?
  • Anlage Ein/Aus über die vorhandene 4-fach Relaiskarte

und bestimmt noch paar andere dinge :slight_smile:

Ueberhitzungsregler.ino (25.2 KB)