Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

Temperaturregelung Extruder

geschrieben von Willy 
Temperaturregelung Extruder
27. December 2011 08:56
Hallo,

auch wenn hier einige der Meinung sind, dass eine Ein-Aus-Regelung des Extruders völlig ausreicht hab' ich es mir nicht verkneifen können, auch etwas zu "spielen" smiling smiley)
Wenn die Extruder-Temperatur von ca. 22°C auf 185°C hochgefahren wird, dann ergibt sich anfangs folgender zeitlicher Verlauf:

Die 3 Kurven zeigen erst nach rund 15 s einen halbwegs geraden Verlauf. Die anfängliche Krümmung kann vereinfacht mit einer "Totzeit" von hier etwa 9 s beschrieben werden. Wenn nun eine Totzeit in einem Regelkreis auftritt, dann sind nach http://de.wikipedia.org/wiki/Totzeit_(Regelungstechnik) P-, PD- und PID-Regler unbrauchbar.

Das folgende Bild zeigt das Regelverhalten verschiedener Regler bei der Soll-Temperatur von 185°C. Zur "Störung" der Regler werden zwei kleine Lüfter, die sich links und rechts an der x-Achse befinden, ein- bzw. ausgeschaltet:

Die PID-Regelung wurde mit den Standard-Parametern (Sprinter) betrieben und hat so sicherlich noch Verbesserungspotential. Doch die vielen Parameter ohne konkrete Angaben zur Bestimmung/Messung haben mich abgeschreckt.

Bei der Totzeit-Regelung, die ich hier jetzt vorstellen möchte, wird die aktuelle Änderung der Temperatur bestimmt (Steigung dT/dt) und die Auswirkung auf die Extruder-Temperatur am Ende der Totzeit wird prognostiziert:
int dt_1 = HEATER_CHECK_INTERVAL; // letztes Zeititervall
unsigned int temp_m1 = 0; // Temperatur bei letzter Messung  
float m_1; // aktuelle Steigung
float m_4; // mittlere Steigung in den letzten Zeitintervallen
unsigned int temp_prog; // Temperaturprognose
int t_tot = 10000; // Totzeit in ms
...
void manage_heater()
{
  dt_1 = millis() - previous_millis_heater; // letztes Zeitintervall merken 
...
      if (temp_m1 == 0) {  // wird am Anfang 1x durchlaufen
        temp_m1 = current_raw; // Startwert
        temp_prog = current_raw; // Startwert
        m_4 = 0.0; // Startwert
      } else {
        m_1 = (float)((float)current_raw - (float)temp_m1) / dt_1; // Steigung dT/dt
        m_4 = 0.25 * (3.0 * m_4 + m_1); // Steigungsänderung dämpfen
        temp_m1 = current_raw; // für's nächste mal merken
        temp_prog = (float)((float)current_raw + m_4 * t_tot); // prognostizierte Temp. nach der Totzeit
//        Serial.print("Steigung "); Serial.println(m_1);
      }
      if (temp_prog >= target_raw) 
//    if (current_raw >= target_raw) // dies ist der Original-Code, ab hier ist nix geändert
Diese Regelung benötigt eigentlich nur die Totzeit, die gemäß der ersten Grafik bestimmt werden kann. Die "Dämpfung" von m_4 bringt nur eine kleine Verbesserung und kann wahrscheinlich für alle Extruder so bleiben. Das HEATER_CHECK_INTERVAL habe ich auf 200 ms stehen. Weiterhin habe ich die Genauigkeit der Temperaturmessung deutlich verbessert, indem bei höheren Temperaturen auf die interne Referenz von 1,1V umgeschaltet wird (statt 5V, d.h. die Temperaturauflösung beträgt jetzt 0,1°C statt 0,46°C bei 190°C). Diese Änderung hat bezüglich der Ausschläge nach einer Störung wenig gebracht, doch die Temperaturkonstanz im Normalbetrieb ist beeindruckend smiling smiley ).

Tester willkommen!

LG, Willy

3-mal bearbeitet. Zuletzt am 28.12.11 14:07.
Re: Temperaturregelung Extruder
27. December 2011 11:56
Hallo Willy schönes Ergebnis.

Aber wenn wir gerade bei einer Software - Lösung für die Temeratursteuerung sind, hier der Ansatz für eine "perfekte" Temperatursteuerung:
Bei unseren Extrudern ist es ja so, dass wir die Störgröße (nämlich die Menge des neu aufzuschmelzenden Kunststoffs= Volumenstrom) sowie den Störzeitpunkt (Aktivierung des Extruders) eigentlich kennen. Bzw. wir nicht aber die Softwaresmiling smiley
Wenn es gelingt alle Störgrößen schon durch Aktivierung der Heizung bevor die Temperstur überhaupt absinkt zu kompensieren haben wir gewonnen. Um bei deinem Beispiel mit 9s Totzeit zu bleiben: 9s bevor der Extruder einsetzt wird die Heizung entsprechend dem Kunststoff-Volumenstrom angehoben. 9s bevor der Extruder stopt wird die Heizung auf Standby heruntergeregelt. Wird langsamer Verfahren geht die Heizleistung 9s vorher schon zurück, wird wieder schneller Verfahren geht die Heizleistung bereits 9s vorher hoch.


Grüßle aus em Schwobaländle
Michael
Re: Temperaturregelung Extruder
27. December 2011 14:39
Toll, dass Du da experimentierst.

Auf dieser Wikipedia-Seite steht ja nun auch, dass für Totzeit ein I- oder PI-Regler geeignet ist. Entsprechend müsste man den D-Teil des PID auf/nahe Null stellen.

Auf die Standardeinstellungen des Reglers würde ich nicht all zu viel geben. Die sind ziemlich sicher mal irgendwie zufällig entstanden und so lange "es druckt", ändert da auch niemand was dran.

Quote

Weiterhin habe ich die Genauigkeit der Temperaturmessung deutlich verbessert, indem bei höheren Temperaturen auf die interne Referenz von 1,1V umgeschaltet wird (statt 5V, d.h. die Temperaturauflösung beträgt jetzt 0,1°C statt 0,46°C bei 190°C).

Bedeutet das nicht auch, dass dieser Widerstand an den Thermistoreingängen zu hoch ist? Eine höhere Vergleichsspannung ist schon nicht schlecht, das verringert die Störanfälligkeit.


Ich frage mich, wo diese Totzeit her kommt. Ist das normal?


Generation 7 Electronics Teacup Firmware RepRap DIY
     
Re: Temperaturregelung Extruder
27. December 2011 15:34
@ Paraman
Die Idee der "vorherbestimmten" Regelung ist prinzipiell gut. Das kann aber nix werden, wie folgende Abschätzungen zeigen:
Kunststoff (speziell ABS, andere dürften aber ähnlich sein) hat eine spezifische Wärmekapazität von cp = 1,3 J / (g K) und eine Dichte von rho = 1,1 g / cm^3. Wenn mit einer 0,5er (= d) Düse mit v = 50 mm/s bei T2 = 240°C gedruckt wird, dann sind v * pi * d^2 * 0,25 * rho * cp * (T2 - T1) = 3,1 J/s (=Watt) erforderlich, um das Material aufzuheizen (T1 = 20°C = Umgebungstemp.).

Der Heizwiderstand gibt bei voller Leistung rund 21 Watt ab (6,8 Ohm an 12 V). Bei obigen Versuchen wurde nicht! gedruckt und trotzdem lag die Heizleistung ohne Lüfter bei 3,4 und mit Lüfter bei 18 Watt (aus den pwm-Werten der PID-Regelung ermittelt). Diese Zahlen zeigen, dass die Heizung u.U. wesentlich mehr von der Umgebung als vom aufzuheizenden Material beeinflusst wird. Wenn sich der Extruder bewegt, dann müsste der Strömungszustand um den Heizblock genau bekannt sein (laminar oder turbulent? Umgebungstemperatur konstant? Fenster geöffnet?). Ich fürchte, an diesen Fragen dürften sich selbst die besten Strömungssimulatoren die Zähne ausbeisen confused smiley .

LG Willy
Re: Temperaturregelung Extruder
27. December 2011 16:26
Traumflug Wrote:
-------------------------------------------------------
> Toll, dass Du da experimentierst.
>
> Auf dieser Wikipedia-Seite steht ja nun auch, dass
> für Totzeit ein I- oder PI-Regler geeignet ist.
> Entsprechend müsste man den D-Teil des PID
> auf/nahe Null stellen.

Noch etwas später steht dann da, dass ein "Smith-Prädiktor" bei totzeitbehafteten Systemen angewandt werden kann. Ich glaube so etwas habe ich hier gemacht (ohne es wirklich zu wissen smiling smiley ) Wenn der D-Teil eleminiert wird, dann bleiben immer noch mindestens 2 Parameter die nur durch "trial and error" einzustellen sind.


> Auf die Standardeinstellungen des Reglers würde
> ich nicht all zu viel geben. Die sind ziemlich
> sicher mal irgendwie zufällig entstanden und so
> lange "es druckt", ändert da auch niemand was
> dran.

Wäre auch sehr mühsam, da es eben keine genaue Vorschrift gibt, wie die Parameter zu ermitteln sind.

> Weiterhin habe ich die Genauigkeit der
> Temperaturmessung deutlich verbessert, indem bei
> höheren Temperaturen auf die interne Referenz von
> 1,1V umgeschaltet wird (statt 5V, d.h. die
> Temperaturauflösung beträgt jetzt 0,1°C statt
> 0,46°C bei 190°C).
> Bedeutet das nicht auch, dass dieser Widerstand an
> den Thermistoreingängen zu hoch ist? Eine höhere
> Vergleichsspannung ist schon nicht schlecht, das
> verringert die Störanfälligkeit.

Würde der Widerstand vor den Thermistoren von jetzt 4k7 auf z.B. 1k verringert, dann wäre die Auflösung bei hohen Temperaturen (im Druckbereich) in der Tat besser. Die Messgenauigkeit (Auflösung) bei Umgebungstemperatur würde jedoch drastisch von jetzt 0,56°C auf dann 2,46°C sinken.

Da eigentlich nur die Temperatur im Bereich von ca. 170°C - 250°C interessiert war ich auch nahe drann, den Widerstand zu ändern - doch die Verwirrungen für neue "Reraper" und die erforderlichen doppelten Temperaturtabellen (fürs Look-up) dürften eine breite Umsetzung der Widerstandsänderung verhindern. Außerdem dürfte die 1,1V Referenz des Prozessors wesentlich genauer sein, als die 5V Versorgungsspannung (mit einem 7805 erzeugt? Genauigkeit bestenfalls +/- 0,1V?). Insofern wird zumindest ein Teil der Störanfälligkeit wieder kompensiert.

> Ich frage mich, wo diese Totzeit her kommt. Ist
> das normal?

Die müsstest Du eigentlich auch sehen. Wenn Du in Printrun "Monitor" einschaltest, dann wird alle 3 s ein Wert ausgegeben (die 3s habe ich gestoppt). Wenn Du genau nach einer Ausgabe die Temperatur hochsetzt (Zeitpunkt "0") und dann ca. 10 Werte notierst und in einer Grafik darstellst, dann wird sich aller Wahrscheinlichkeit nach ein ähnlicher Verlauf wie in meinem Bild zeigen.

LG, Willy
Re: Temperaturregelung Extruder
27. December 2011 18:36
"Diese Zahlen zeigen, dass die Heizung u.U. wesentlich mehr von der Umgebung als vom aufzuheizenden Material beeinflusst wird."


Wie wär es mit simplem Isolieren ?? Schon wäre der Störfaktor aus geschaltet ?


Mfg
Wolfgang
Aller Anfang war schwer - Wolfstrap Reprap-fab.org Meine Meinung

Erfahrungen kann man leider schlecht weiter geben, die muss man selber machen.
Re: Temperaturregelung Extruder
28. December 2011 08:56
Isolieren dürfte zwar die Wärmeverluste erheblich reduzieren, geschätzt um 60% - 90%. Doch für die von Paraman vorgeschlagene vorausberechnende Steuerung der Temperatur müssten die Wärmeverluste praktisch komplett eliminiert werden. Das geht schon deshalb nicht, weil die Düsenspitze nicht isoliert werden kann und auch sonst nicht beliebig viel Raum für Isoliermaterial da ist.

LG Willy
Re: Temperaturregelung Extruder
28. December 2011 11:17
Ok, dieser nicht kalklulierbare Wärmeverlust durch Konvektion kann in der Realität nicht komplett eliminiert werden, aber doch, durch Isolieren beträchtlich verringert werden. Somit ist auch diese Störgrößen beträchtlich verringert.
Der bei einer isolierten Düse vorhandene "Bewegungsabhängige" Wärmeverlust dürfte unter der Aufheizleistung des neu in den Extruder gekommenen Kunststoffs sein. Ich meine jetzt hier nicht den gesammten Temperaturverlust des Extruders sondern nur den "schwankenden" Teil bei Stillstand und im Eilgang. Wenn diese bewegungsabhängige Störgröße so klein ist, macht es schon Sinn den Extruder voreilend zu heizen.

Vieles läuft meiner Meinung nach auf eine Verkleinerung der Totzeit hinaus. Die hängt wohl sehr stark von der Entfernung zwischen Heizung und Extruderbohrung und von dem dazwischen liegendem Material bzw. evtl. Luftspalte ab.
Mit einem schnelleren Temperaturansprechen der Heizung bzw. des Sensors, kann auf alle Störgrößen schnell reagiert werden.


Grüßle aus em Schwobaländle
Michael
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen