Automatische Filamentkalibrierung mittels Filament-Monitor am Beispiel des CHX 350

Tim Schneider

TL;DR

Die Kalibrierung der Extrusionsparameter gehört zu den zeitaufwändigsten und fehleranfälligsten Schritten bei der Inbetriebnahme eines FFF-3D-Druckers. Insbesondere bei industriellen Großformatdruckern, die mit wechselnden Materialien und über einen weiten Geschwindigkeitsbereich arbeiten, reicht die klassische manuelle E-Steps-Kalibrierung nicht aus. Dieser Artikel beschreibt ein automatisiertes Kalibrierverfahren, das den in RepRapFirmware (RRF) integrierten rotierenden Magnet-Filamentmonitor nutzt, um sowohl die Extruder-Schritte pro Millimeter (E-Steps) als auch die geschwindigkeitsabhängige nichtlineare Extrusionskompensation (M592) maschinenseitig und ohne manuelles Messen zu bestimmen. Das Verfahren wurde für den Meltingplot CHX 350 entwickelt und getestet — einen industriellen Großformat-FFF-Drucker mit Core-IDEX-Kinematik und geschlossener Regelschleife in der Bewegungssteuerung.


1. Problemstellung

1.1 Grenzen der konventionellen E-Steps-Kalibrierung

Die klassische Kalibrierung der Extruder-Schritte erfolgt nach einem seit Jahren etablierten Verfahren: Der Bediener markiert das Filament in einem bekannten Abstand vor dem Extruder, lässt eine definierte Länge extrudieren und misst die Differenz mit einem Messschieber. Aus dem Verhältnis von kommandierter zu tatsächlich geförderter Filamentlänge wird der Korrekturfaktor für die E-Steps berechnet.

Dieses Verfahren hat mehrere grundsätzliche Schwächen. Die Messung mit dem Messschieber unterliegt einer Ablesegenauigkeit von bestenfalls ±0,1 mm, was bei einer Messstrecke von 100 mm bereits einem Fehler von ±0,1 % entspricht — bei kürzeren Messstrecken entsprechend mehr. Die Messung findet typischerweise bei einer einzigen Extrusionsgeschwindigkeit statt, üblicherweise bei sehr niedriger Vorschubrate. Der Bediener muss den Drucker manuell vorbereiten, den Vorgang beobachten und die Ergebnisse selbst auswerten. Bei einem Materialwechsel oder nach einem Extrudertausch muss die gesamte Prozedur wiederholt werden.

1.2 Das Problem der nichtlinearen Extrusion

Schwerwiegender als die Ungenauigkeit der E-Steps-Kalibrierung ist ein Effekt, der bei der konventionellen Methode vollständig übersehen wird: Die Extrusionsgenauigkeit ist geschwindigkeitsabhängig. Bei steigendem Volumenstrom erhöht sich der Gegendruck im Hotend, und die Verzahnung des Vorschubrades komprimiert das Filament stärker, bevor es greift. Die Folge ist eine mit der Extrusionsgeschwindigkeit zunehmende Unterextrusion, die — je nach Extruder, Hotend und Material — bei hohen Geschwindigkeiten durchaus 10 bis 20 % betragen kann.

RepRapFirmware adressiert diesen Effekt mit dem Befehl M592 (Nonlinear Extrusion Compensation). Die Firmware multipliziert die kommandierte Extrusionslänge mit dem Faktor max(1, A·v + B·v² + 1), wobei v die momentane Extrusionsgeschwindigkeit in mm/s ist. Die Koeffizienten A und B beschreiben das geschwindigkeitsabhängige Verhalten des jeweiligen Extruder-Hotend-Material-Systems. Bislang werden diese Koeffizienten durch aufwändige manuelle Messreihen bestimmt — ein Prozess, der mehrere Stunden dauern kann und bei jedem Materialwechsel wiederholt werden muss.

1.3 Zielstellung

Ziel des hier beschriebenen Verfahrens ist die vollständige Automatisierung beider Kalibrierungen in einem einzigen Makrozyklus, der ohne Bedienereingriff und ohne externe Messmittel auskommt. Der Filament-Monitor dient dabei als In-situ-Messinstrument, das den tatsächlichen Filamentvorschub direkt am Druckkopf erfasst.


2. Messprinzip und Sensorcharakteristik

2.1 Der rotierende Magnet-Filamentmonitor

Der CHX 350 verwendet den Duet3D Rotating Magnet Filament Monitor in der Version 4. Dieser Sensor erfasst die Filamentbewegung über eine federbelastete Messwalze, die direkt am Filament anliegt und einen Magneten dreht. Ein Hallsensor registriert die Drehbewegung und gibt einen Positionswert zwischen 0 und 1023 zurück.

Die Sensorauflösung ergibt sich aus dem Walzenumfang dividiert durch die 1024 Stufen des Analog-Digital-Wandlers. Bei einer nominalen Sensitivität von 25,3 mm pro Umdrehung resultiert eine Auflösung von etwa 24,7 µm pro Schritt. Die Motorauflösung des Extruders liegt beim CHX 350 bei rund 0,3 µm pro Mikro-Schritt (1/3320 mm), also etwa 82-mal feiner als die Sensorauflösung. Dieses Verhältnis ist entscheidend für die Kalibriergenauigkeit: Der Extruder kann das Filament in wesentlich feineren Inkrementen positionieren als der Sensor auflösen kann, was durch Oversampling-Verfahren ausgenutzt werden kann.

2.2 Mechanische Randbedingungen

Die Messwalze wird durch ein federbelagertes Kugellager gegen das Filament gedrückt. Bei 2,85-mm-Filament mit hoher Biegesteifigkeit — beispielsweise glasfaserverstärktem Nylon — kann die Rückstellkraft des Materials die Federkraft überwinden und den Kontakt zur Walze unterbrechen. Der CHX 350 begegnet diesem Problem durch einen verlängerten Zuführkanal von 50 mm vor der Messwalze, der den maximalen Eintrittswinkel des Filaments auf unter 0,2° begrenzt.

2.3 Getriebe-Backlash und dessen Kompensation

Jeder mechanische Vorschub mit Getriebeelementen weist Backlash (Umkehrspiel) auf. Da die Kalibrierung ausschließlich in Extrusionsrichtung — also in positiver E-Richtung — stattfindet, ist nur der Backlash beim Richtungswechsel von Retraction auf Extrusion relevant. Dieser wird vor der eigentlichen Kalibrierung in einer separaten Messroutine quantifiziert.

Das Messprinzip nutzt die hohe Motorauflösung als Interpolationswerkzeug: Das Filament wird wiederholt auf eine definierte Sensorposition zurückgesetzt (Reset in negativer E-Richtung), anschließend wird in positiver Richtung zur nächsten Sensortransition gefahren. Die gemessene Fahrstrecke bis zur Transition wird für verschiedene Startoffsets in Zehnteln eines Sensorschritts bestimmt. Der Backlash zeigt sich als Knick in der resultierenden Kurve: Solange der Offset kleiner als der Backlash ist, bleibt die gemessene Strecke bis zur nächsten Transition konstant (der Backlash absorbiert den Offset); sobald der Offset den Backlash übersteigt, verkürzt sich die gemessene Strecke linear. Typische Werte liegen im einstelligen Mikrometerbereich und sind damit für die Extrusionskalibrierung vernachlässigbar, werden aber dennoch als Systemkenngröße erfasst und dokumentiert.


3. Automatische E-Steps-Kalibrierung

3.1 Verfahrensbeschreibung

Die E-Steps-Kalibrierung erfolgt als vollautomatisches RRF-Makro, das ohne Benutzerinteraktion abläuft. Das Verfahren nutzt den Filament-Monitor als Referenzsensor, um den Soll-Ist-Vergleich der Filamentförderung direkt durchzuführen.

Der Ablauf gliedert sich in folgende Schritte:

Der Extruder heizt auf die für das geladene Material vorgesehene Drucktemperatur auf, um realistische Gegendruckverhältnisse im Hotend zu erzeugen. Anschließend wird eine definierte Referenzlänge extrudiert — typischerweise 100 mm bei einer moderaten Geschwindigkeit von 1–2 mm/s, die im linearen Bereich der Extrusionskennlinie liegt. Vor und nach der Extrusion wird der Filament-Monitor-Wert ausgelesen. Aus der Differenz der Sensorwerte und der bekannten Sensitivität (mm pro Umdrehung) berechnet das Makro die tatsächlich geförderte Filamentlänge und leitet daraus den Korrekturfaktor für die E-Steps ab.

Die erreichte Messgenauigkeit liegt bei etwa ±1 %, was primär durch die Filament-Durchmessertoleranzen limitiert wird — nicht durch die Sensorauflösung. Empirische Messungen am CHX 350 haben gezeigt, dass der Extruder bei korrekt kalibrierten E-Steps bis zu Volumenströmen von 35 mm³/s mit weniger als 1 % Abweichung fördert und damit deutlich unter seiner mechanischen Leistungsgrenze operiert.

3.2 Firmware-Integration

Die berechneten E-Steps werden per M92-Befehl direkt in die Firmware geschrieben und mit M500 persistent gespeichert. Da der Filament-Monitor im Objektmodell von RRF über sensors.filamentMonitors[n] zugänglich ist, kann das gesamte Verfahren als reines G-Code-Makro implementiert werden, ohne externe Software oder Plugins.

; Vereinfachtes Prinzip der automatischen E-Steps-Kalibrierung
; (Pseudocode, gekürzt)

var referenceLength = 100          ; mm Sollwert
var testSpeed = 60                 ; mm/min (1 mm/s)
var currentSteps = move.extruders[0].stepsPerMm

; Sensor-Startposition erfassen
var sensorStart = sensors.filamentMonitors[0].lastRawPosition

; Referenzlänge extrudieren
G1 E{var.referenceLength} F{var.testSpeed}
M400

; Sensor-Endposition erfassen
var sensorEnd = sensors.filamentMonitors[0].lastRawPosition

; Tatsächlich geförderte Länge berechnen
var actualLength = {(var.sensorEnd - var.sensorStart) * sensors.filamentMonitors[0].mmPerRev / 1024}

; Neue E-Steps berechnen und setzen
var newSteps = {var.currentSteps * var.referenceLength / var.actualLength}
M92 E{var.newSteps}
M500

3.3 Vorteil gegenüber manueller Kalibrierung

Der entscheidende Vorteil liegt nicht in der Genauigkeit einzelner Messungen — ein sorgfältig arbeitender Bediener erreicht mit einem guten Messschieber vergleichbare Ergebnisse. Der Vorteil liegt in der Wiederholbarkeit und Automatisierbarkeit: Das Makro kann bei jedem Materialwechsel im Start-G-Code aufgerufen werden, ohne dass ein Bediener anwesend sein muss. Bei einer Maschine, die im Printer-as-a-Service-Modell beim Kunden steht, ist dies eine Voraussetzung für einen zuverlässigen Betrieb ohne regelmäßige Vor-Ort-Einsätze.


4. Automatische Kalibrierung der nichtlinearen Extrusion

4.1 Physikalischer Hintergrund

Die nichtlineare Extrusion hat ihre Ursache im Zusammenspiel von Extrudervorschub und Hotend-Gegendruck. Bei steigender Extrusionsgeschwindigkeit erhöht sich der Druckverlust im Düsenkanal, da die Schmelze bei höherer Scherrate und gegebener Düsengeometrie einen höheren Strömungswiderstand erfährt. Dieser erhöhte Gegendruck wirkt auf das Vorschubrad zurück: Die Verzahnung (bei Zahnradextrudern) oder die Rändelung (bei Reibradextrudern) muss stärker in die Filamentoberfläche eingreifen, bevor das Material gefördert wird. Bei jedem Zahneingriff wird das Filament kurzzeitig komprimiert, bevor es weitertransportiert wird — ein Effekt, der bei niedrigem Gegendruck vernachlässigbar ist, bei hohem Gegendruck aber zu einer messbaren Differenz zwischen kommandierter und tatsächlicher Förderlänge führt.

Der Effekt ist nicht nur extruder- und hotend-spezifisch, sondern auch materialabhängig: Ein weiches PLA verhält sich anders als ein glasfaserverstärktes PA6, und ein trockenes Material anders als eines mit erhöhtem Feuchtigkeitsgehalt. Damit ist eine materialspezifische Kalibrierung in der Praxis unvermeidlich.

4.2 Konventionelles Kalibrierverfahren

Das etablierte Verfahren zur Bestimmung der M592-Koeffizienten erfordert eine manuelle Messreihe: Der Bediener extrudiert eine definierte Filamentlänge (typischerweise 50 oder 100 mm) bei verschiedenen Geschwindigkeiten, misst jeweils die tatsächlich geförderte Länge mit dem Messschieber und berechnet aus den Messpunkten per Kurvenanpassung die quadratischen Koeffizienten A und B. Der Prozess erfordert typischerweise sechs bis zehn Messpunkte, wobei jeder einzelne Punkt eine Extrusion, eine Messung und eine Protokollierung erfordert.

Zwei Besonderheiten erschweren die konventionelle Kalibrierung zusätzlich: Erstens wirkt die nichtlineare Extrusionskompensation in RRF ausschließlich auf Druckbewegungen mit gleichzeitiger XY-Bewegung — reine Extrusionsbewegungen ohne Achsbewegung (wie sie beim Filament-Laden oder bei Retractions auftreten) werden nicht kompensiert. Das bedeutet, dass jeder Messpunkt eine kombinierte XY/E-Bewegung erfordert, was die Testgeometrie und den Ablauf verkompliziert. Zweitens muss die Messstrecke lang genug sein, um statistische Fehler durch Filament-Durchmesserschwankungen auszumitteln, was bei hohen Extrusionsgeschwindigkeiten zu langen XY-Verfahrwegen führt.

4.3 Automatisiertes Verfahren mit Filament-Monitor

Das am CHX 350 implementierte Verfahren ersetzt den Messschieber durch den Filament-Monitor und eliminiert damit den manuellen Messschritt vollständig. Das Makro führt folgende Schrittfolge durch:

Zunächst erfolgt die Referenzmessung: Bei niedriger Extrusionsgeschwindigkeit (1 mm/s), bei der erfahrungsgemäß keine nichtlineare Abweichung auftritt, wird die Sensitivität des Filament-Monitors kalibriert. Der dabei ermittelte Wert (mm/Umdrehung) dient als Referenz für alle folgenden Messungen.

Anschließend wird eine Messreihe über den relevanten Geschwindigkeitsbereich gefahren. Für jede Geschwindigkeitsstufe wird eine definierte Filamentlänge extrudiert — jeweils mit einer simultanen XY-Bewegung, damit die M592-Kompensation greift. Der Filament-Monitor erfasst die tatsächlich geförderte Länge. Aus dem Verhältnis von Soll- zu Ist-Förderung bei jeder Geschwindigkeit ergibt sich die geschwindigkeitsabhängige Extrusionskennlinie.

Die Messpunkte werden im Makro als Array gespeichert und per polynomialer Regression zweiten Grades ausgewertet. Die resultierenden Koeffizienten A und B werden direkt als M592-Parameter in die Firmware geschrieben.

; Vereinfachtes Prinzip der NLE-Kalibrierung
; (Pseudocode, gekürzt)

; Geschwindigkeitsstufen definieren (mm/s Filament-Vorschub)
var speeds = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
var extrudeLength = 50             ; mm pro Stufe
var travelLength = 50              ; mm XY-Verfahrweg pro Stufe

; Messreihe durchführen
var i = 0
while var.i < #var.speeds
    ; Sensorposition vor Extrusion
    var sStart = sensors.filamentMonitors[0].lastRawPosition
    
    ; Extrusion mit simultaner XY-Bewegung
    ; Feedrate = Extrusionsgeschwindigkeit × 60
    G1 X{var.travelLength} E{var.extrudeLength} F{var.speeds[var.i] * 60}
    M400
    
    ; Sensorposition nach Extrusion
    var sEnd = sensors.filamentMonitors[0].lastRawPosition
    
    ; Tatsächlich geförderte Länge berechnen
    var actual = {(var.sEnd - var.sStart) * var.sensitivity}
    
    ; Abweichung protokollieren
    var deviation = {(var.extrudeLength - var.actual) / var.extrudeLength}
    echo "Speed ", var.speeds[var.i], " mm/s: Deviation = ", var.deviation
    
    ; Rückfahrt ohne Extrusion
    G1 X0 F{var.speeds[var.i] * 60 * 3}
    
    set var.i = var.i + 1

; Koeffizienten A und B per Kurvenanpassung berechnen
; (vereinfacht: in der Praxis als gewichtete Regression implementiert)
; ...
; M592 D0 A{var.coeffA} B{var.coeffB} L0.2
; M500

4.4 Geschwindigkeitsbereich und Messstrategie

Der relevante Geschwindigkeitsbereich richtet sich nach dem Einsatzprofil der Maschine. Beim CHX 350 mit 0,8-mm-Düse und 0,4-mm-Lagenhöhe entspricht ein Volumenstrom von 35 mm³/s einer Filament-Vorschubgeschwindigkeit von rund 5,5 mm/s (bei 2,85-mm-Filament). Die Messreihe umfasst daher den Bereich von 1 bis 10 mm/s Filament-Vorschubgeschwindigkeit, was Volumenströmen von etwa 6,4 bis 64 mm³/s entspricht.

Erfahrungswerte vom CHX 350 zeigen, dass die nichtlineare Abweichung bei korrekt kalibriertem Extruder bis etwa 5,5 mm/s (35 mm³/s) unter 1 % bleibt. Dies belegt, dass die Kombination aus hochwertigem Getriebe-Extruder und korrekter E-Steps-Kalibrierung den nichtlinearen Effekt deutlich reduziert — er wird aber nicht eliminiert, insbesondere bei Materialien mit hoher Viskosität oder bei Düsen mit kurzem Düsenlängenverhältnis (L/D < 1).

4.5 Grenzen und der L-Parameter

Der M592-Befehl enthält einen oft übersehenen Parameter L, der die maximale Kompensation begrenzt. Standardmäßig ist L = 0,2, was bedeutet, dass die Firmware die Extrusion um maximal 20 % erhöhen wird. Für die meisten Anwendungsfälle ist dies ausreichend; bei besonders problematischen Material-Hotend-Kombinationen muss L jedoch angehoben werden, was das Makro automatisch vornimmt, wenn die berechnete Kompensation bei der höchsten Testgeschwindigkeit den Standard-L-Wert übersteigt.

Zu beachten ist, dass die nichtlineare Extrusionskompensation die tatsächliche Filament-Vorschubrate über den vom Slicer kommandierten Wert hinaus erhöht. Wenn die Kompensation den Extruder nahe an seine physikalische Leistungsgrenze bringt, kann dies zu Filament-Slip führen. Das Kalibrierungsmakro erkennt diesen Fall und gibt eine Warnung aus, wenn die kompensierte Rate 90 % der gemessenen maximalen Extrusionsrate überschreitet.


5. Validierung und Ergebnisse

5.1 Messgenauigkeit des Filament-Monitors als Kalibrierwerkzeug

Die Eignung des Filament-Monitors als Messreferenz wurde durch Vergleichsmessungen mit einem Messschieber validiert. Bei einer Messstrecke von 100 mm liegt die Abweichung zwischen Sensor und Messschieber durchgehend unter 0,5 %, wobei der dominante Fehlerbeitrag auf Filament-Durchmesserschwankungen zurückzuführen ist. Der Sensor selbst zeigt eine Wiederholgenauigkeit, die durch die Sensorauflösung von 24,7 µm begrenzt wird — bei 100 mm Messstrecke entspricht das einer relativen Auflösung von 0,025 %.

5.2 Praktische Ergebnisse

Messungen am CHX 350 mit verschiedenen Materialien haben ergeben, dass die automatisch kalibrierten M592-Koeffizienten zu einer Extrusionsgenauigkeit von besser als ±2 % über den gesamten nutzbaren Geschwindigkeitsbereich führen. Bei PLA im Temperaturbereich 220–250 °C und Volumenströmen bis 28 mm³/s (dem typischen Betriebspunkt für Großformat-Bauteile) liegt die Restabweichung nach Kompensation unter 1 %.

Besonders relevant ist dieser Grad an Extrusionsgenauigkeit bei der Fertigung großformatiger Bauteile, bei denen bereits geringe Abweichungen im Volumenstrom zu sichtbaren Effekten führen. Bei einem V-Profil mit 900 mm Kantenlänge konnte empirisch gezeigt werden, dass eine Volumenstromreduktion von nur 3 mm³/s (von 28 auf 25 mm³/s) den messbaren Bauteilschrumpf von 1–2 mm auf Null reduziert — ein Effekt, der nicht auf Unterextrusion zurückzuführen ist (der Extruder fördert bei beiden Geschwindigkeiten korrekt), sondern auf veränderte Die-Swell-Verhältnisse an der Düse.


6. Einordnung und Ausblick

6.1 Closed-Loop vs. Open-Loop Extrusion

Die hier beschriebene automatische Kalibrierung ist ein Offline-Verfahren: Sie wird vor dem Druckstart durchgeführt und liefert statische Kompensationsparameter, die während des Drucks nicht nachgeregelt werden. Sie ist damit eine Vorstufe zur echten geschlossenen Regelschleife im Materialfluss, bei der der Filament-Monitor in Echtzeit den Ist-Volumenstrom erfasst und der Extruder-Vorschub aktiv nachgeregelt wird.

Die Unterscheidung ist strategisch bedeutsam: Während andere Hersteller industrieller FFF-Drucker auf die Regelung der Umgebungsbedingungen setzen — Kammertemperatur, Düsentemperatur, Betttemperatur —, adressiert die Materialflussregelung den Kern des Prozesses: was tatsächlich aus der Düse kommt. Schwankungen in Filament-Charge, Feuchtigkeitsgehalt und Viskosität werden von einer reinen Temperaturregelung nicht erfasst; eine Materialflussregelung kompensiert sie in Echtzeit.

6.2 Integration in den Maschinenbetrieb

Im Betriebsmodell des CHX 350 als Printer-as-a-Service-Maschine ist die automatische Kalibrierung Teil des Start-G-Codes und läuft bei jedem Materialwechsel transparent ab. Der Bediener muss keine Kalibrierungsparameter kennen oder eingeben. Die Ergebnisse werden über die Maschinen-KPI-Erfassung protokolliert und ermöglichen ein Trending der Extruderperformance über die Lebensdauer — eine Grundlage für vorausschauende Wartung, die erkennt, wann ein Extruder verschleißbedingt seine Spezifikation nicht mehr einhält.

6.3 Weitere Entwicklung

Die nächste Ausbaustufe ist die Echtzeit-Regelung des Materialflusses während des Drucks, bei der der Filament-Monitor nicht mehr nur als Kalibrierwerkzeug, sondern als Ist-Wert-Geber in einem geschlossenen Regelkreis dient. Die Herausforderung liegt hier in der begrenzten Bandbreite des Sensors (Sensorauflösung versus Druckgeschwindigkeit) und in der Latenz der Regelstrecke (der Schmelzkanal zwischen Extruderrad und Düse wirkt als Totzeitglied). Darüber hinaus wird eine temperaturabhängige Kalibrierung angestrebt, bei der die M592-Koeffizienten nicht nur geschwindigkeits-, sondern auch temperaturabhängig hinterlegt werden.


Literatur und Referenzen

  • RepRapFirmware G-Code-Dokumentation: M592 — Configure Nonlinear Extrusion (docs.duet3d.com)
  • RepRapFirmware G-Code-Dokumentation: M591 — Configure Filament Monitoring (docs.duet3d.com)
  • Duet3D Forum: Diskussionen zur nichtlinearen Extrusion und Filament-Monitor-Kalibrierung
Zurück zum Blog

Hinterlasse einen Kommentar

Bitte beachte, dass Kommentare vor der Veröffentlichung freigegeben werden müssen.