Forum: Digitale Signalverarbeitung / DSP / Machine Learning Frage zur Regelung von Wasserdampftemperatur


von Anton A. (bingo_)


Lesenswert?

Hallo,

Ziel
Ich will konstante einstellbare Dampf-Temperatur in einer kleinen Box 
haben.

Aufbau
Wasserkocher erzeugt Wasserdampf, dieser geht durch einen Schlauch zu 
der Box. In der Box in ein digitaler Temperatursensor verbaut.
Der Wasserkocher kann AUS/EIN geschaltet werden (per elektronischem 
Relais).

Software (C++ Code) mit Display & Knopf (für Eingabe) Temperatursensor 
ect läuft schon alles.

Meine Frage zu dem Regler

Kann man, wenn man nur zwischen EIN/AUS wählen kann einen normalen 
Software PID Regler verwenden?

Welcher Regler ist am sinnvollsten PI, PD, PID?

Anmerkung
Dass Wasserdampf normalerweise 100°C hat weiß ich. Da ich auch nicht den 
Druck steuern kann ist höchstwahrscheinlich die Temperatur nur sehr 
begrenzt einstellbar (schlimmstenfalls soll es bloß die Temperatur 
halten).
Das ganze ist ein Dampfkasten um Holz mit Wasserdampf weich zu bekommen 
dass man es anschließend gut biegen kann.

Ich Hoffe das man meinen Aufbau samt Frage versteht...
Danke!

von blub (Gast)


Lesenswert?


von Frank(d*m#m.) (Gast)


Lesenswert?

blub hat Recht

Zweipunktregler(Zwei-Zustände) ist das Stichwort, nix mit PI, PID... 
dein Relais wird also nicht zur Ruhe kommen :-)

von Anton A. (bingo_)


Lesenswert?

1
//init
2
boolean oben = false;  
3
  
4
//Polling loop
5
   if ((temperatur <= (solltemperatur+1)) && !oben) heat();
6
   else oben = true;
7
      
8
   if ((temperatur >= (solltemperatur-1)) && oben) noheat();
9
   else oben = false;
10
11
//heat()   schaltet Heizung EIN
12
//noheat() schaltet Heizung AUS

so müsste es funktionieren oder? Hab ganz schön geknobelt...

von Frank(d*m#m.) (Gast)


Lesenswert?

Hallo Rolf,


so müsste es funktionieren. Wozu benötigst du die bool-variable oben? 
Der Code könnte auch kürzer sein:


if (momentaneTemperatur >= sollTemperatur) {

  heizungAus();
}
else {

  heizungAn();
}

Alternativ:

if (momentaneTemperatur > maxTemperatur) heizungAus();
if (momentaneTemperatur < minTemperatur) heizungAn();


Dein Regler wird genauer je öfter du die if-Abfrage bzw. je aktueller 
der momentane gemessene Temperaturwert ist. Zudem ist zu überlegen wo 
dein Sensor liegt, in der Mitte oder am Rand? Da in der Mitte die 
Temperatur schneller ansteigt als am Rand.

Liegt dein Sensor in der Mitte benötigst du einen Puffer/Buffer. Das 
heißt eine gewisse Zeitspanne darf geheizt werden obwohl der Sensor eine 
Höhere Temperatur mitteilt.

Bsp:

int buffer = XX; // als Beispiel entspricht XX ~ YY °C

if (momentaneTemperatur-buffer > maxTemperatur) heizungAus();
if (momentaneTemperatur+buffer < minTemperatur) heizungAn();

Beste Grüße
Frank

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Gesättigter Wasserdampf hat bei Atmosphärendruck immer die gleiche 
Temperatur und das sehr genau. Darauf kann man nicht regeln.

Mit einem Temperatursensor kann man bestenfalls feststellen, ob 
überhaupt Dampf vorhanden ist.

Wenn ich das richtig verstanden habe, soll ja auch eher der Volumenstrom 
des Dampfs geregelt werden. Das ist einfach über einen Leistungssteller 
vor dem Dampferzeuger möglich. Die Dampfmenge ist im eingeschwungenen 
Zustand direkt proportional zu der Heizleistung. Ein einfacher 
Phasenanschnittdimmer genügt dafür.

Grüße,

Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.