Klipper: Unterschied zwischen den Versionen
Af0815 (Diskussion | Beiträge) (→Klipper Befehle: Z_SCAN_OFFSET und SAVE_CONFIG hinzugefügt) |
Mhier (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(25 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[category:Klipper]] | [[category:Klipper]] | ||
Klipper ist eine Firmware für 3D Drucker. Diese kann alternativ zu der Repetier-basierten Original-Firmware von Conrad oder der auf dieser Original-Firmware basierenden Community-Version auf den Druckern RF1000, RF2000 oder RF2000v2 verwendet werden. Die dafür nötige Konfiguration ist | Klipper ist eine Firmware für 3D Drucker. Diese kann alternativ zu der Repetier-basierten Original-Firmware von Conrad oder der auf dieser Original-Firmware basierenden Community-Version auf den Druckern RF1000, RF2000 oder RF2000v2 verwendet werden. Die dafür nötige Konfiguration ist für die Drucker RF2000 und RF2000v2 noch nicht vollständig. '''Für den RF1000 ist die Konfiguration abgeschlossen und wird seit Jahren bereits produktiv eingesetzt zum Drucken und Fräsen.''' Für die anderen Drucker werden Tester gesucht, die bereit sind, die Konfiguration an das jeweilige Modell anzupassen und beizusteuern. | ||
== Einleitung == | == Einleitung == | ||
Zeile 21: | Zeile 21: | ||
** Interpolation zwischen den Punkten des Meshes ist deutlich besser, daher sollten weniger Punkte ausreichen | ** Interpolation zwischen den Punkten des Meshes ist deutlich besser, daher sollten weniger Punkte ausreichen | ||
* Z-Offset-Scan | * Z-Offset-Scan | ||
** Korrigiert nicht mehr die Matrix/das Mesh, sondern | ** Korrigiert nicht mehr die Matrix/das Mesh, sondern kalibriert die Z-Koordinate des Z-Endstop. | ||
** Ebenfalls keinerlei Software-Limit auf den Wert des Offsets. | ** Ebenfalls keinerlei Software-Limit auf den Wert des "Offsets". | ||
* Menü (im Original-Zustand von Klipper, daher noch etwas rudimentär vielleicht): die Bedienlogik ist etwas anders | ** Homing gegen Z-Max ist problemlos ebenfalls möglich. | ||
* | * Menü (im Original-Zustand von Klipper, daher noch etwas rudimentär vielleicht): die Bedienlogik ist etwas anders | ||
** Die Nach-Rechts-Taste wird eigentlich nicht gebraucht und wurde daher als Not-Aus umfunktioniert. | |||
** Die Tasten zum Bewegen des Heizbetts und des Extruders fahren in vorgegebenen Schritten. Gedrückthalten für längere Fahrten ist nicht möglich (Einschränkung in Klipper). | |||
* Pause und Fortsetzen über Tasten (funktioniert evtl. nur mit Octoprint?) | |||
* Sense offset | |||
* Emergency Stop (bei zu hohem Druck auf die Wägezellen), funktioniert nur während eines Z-Scans. | |||
* Kanten antasten in X/Y (Fräsen) | |||
Was fehlt: | Was fehlt: | ||
* Konfigurationen für den RF2000 und RF2000v2 | * Konfigurationen für den RF2000 und RF2000v2 (für RF2000v2 single extruder ist eine Konfiguration vorhanden, muss aber geupdated werden) | ||
* Sagt ihr es mir! | * Sagt ihr es mir! | ||
Zeile 39: | Zeile 39: | ||
Eine Ausführliche Installationsanleitung gibt es auf der Webseite: [https://www.klipper3d.org/Installation.html https://www.klipper3d.org/Installation.html] | Eine Ausführliche Installationsanleitung gibt es auf der Webseite: [https://www.klipper3d.org/Installation.html https://www.klipper3d.org/Installation.html] | ||
Eine Installationsanleitung für Klipper auf dem MKS SKIPR Board gibt es hier: [[Klipper_MKS_SKIPR]] | |||
Eine Installationsanleitung für Klipper auf dem PC gibt es hier: [[Klipper auf PC]] | |||
Da die nötigen Modifikationen und Beispielkonfigurationen noch nicht Teil der offiziellen Klipper-Firmware sind, muss der folgende Befehl: | Da die nötigen Modifikationen und Beispielkonfigurationen noch nicht Teil der offiziellen Klipper-Firmware sind, muss der folgende Befehl: | ||
<pre>git clone https://github.com/ | <pre>git clone https://github.com/Klipper3d/klipper</pre> | ||
durch diesen ersetzt werden: | durch diesen ersetzt werden: | ||
Zeile 50: | Zeile 54: | ||
[mcu] | [mcu] | ||
serial: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_<hier_richtige_ID_einfügen>-port0 | serial: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_<hier_richtige_ID_einfügen>-port0 | ||
Dadurch wird der Inhalt von klipper/config/printer-rf1000.cfg benutzt, aber alle folgenden Einstellungen überschreiben ggf. bereits vorhandene Einstellungen aus der printer-rf1000.cfg Datei. | [stepper_z] | ||
position_endstop: 0 | |||
</pre> | |||
Dadurch wird der Inhalt von klipper/config/printer-rf1000.cfg benutzt, aber alle folgenden Einstellungen überschreiben ggf. bereits vorhandene Einstellungen aus der printer-rf1000.cfg Datei. Die Angabe des position_endstop für die Z-Achse ist nötig, da diese durch den Z-Offset-Scan überschrieben wird, was nur funktioniert, wenn diese Angabe direkt in der printer.cfg gemacht wird (nicht im Include). | |||
Nach der Installation bitte unbedingt die Anleitung zum Prüfen der Konfiguration befolgen: | Nach der Installation bitte unbedingt die Anleitung zum Prüfen der Konfiguration befolgen: | ||
Zeile 78: | Zeile 86: | ||
dort die Zeile am Ende zu <pre>KLIPPY_ARGS="/home/pi/klipper/klippy/klippy.py /home/pi/printer.cfg -l /tmp/klippy.log -I /var/lib/klipper/connect"</pre> ergänzen. Anschliessend das Service von Klipper neu starten. Damit kann man sich in Repetier-Server mit Gerät/Port /var/lib/klipper/connect verbinden. | dort die Zeile am Ende zu <pre>KLIPPY_ARGS="/home/pi/klipper/klippy/klippy.py /home/pi/printer.cfg -l /tmp/klippy.log -I /var/lib/klipper/connect"</pre> ergänzen. Anschliessend das Service von Klipper neu starten. Damit kann man sich in Repetier-Server mit Gerät/Port /var/lib/klipper/connect verbinden. | ||
Bei den Befehlen muss man ein Raute Zeichen # voranstellen, damit es richtig von Repetier-Server weitergegeben wird. | Repetierserver älter als 0.99.4: Bei den Befehlen muss man ein Raute Zeichen # voranstellen, damit es richtig von Repetier-Server weitergegeben wird. Ist bei Version 1.x und besser nicht mehr der Fall. | ||
== Klipper Befehle == | == Klipper Befehle == | ||
Klipper unterstützt natürlich alle gängigen G-Code-Befehle, die die Slicer erzeugen. Es wird allgemein empfohlen, den Slicer auf "Marlin" oder "Smoothieware" zu stellen (sofern keine direkte Unterstützung für Klipper vorhanden ist). | Klipper unterstützt natürlich alle gängigen G-Code-Befehle, die die Slicer erzeugen. Es wird allgemein empfohlen, den Slicer auf "Marlin" oder "Smoothieware" zu stellen (sofern keine direkte Unterstützung für Klipper vorhanden ist). | ||
Für erweiterte G-Code-Befehle verfolgt Klipper eine etwas andere Philosophie als andere Firmwares: Statt kryptische M-Befehle zu erdenken, werden sprechende Namen benutzt. Gleiches gilt für die Parameter, die üblicherweise die Form "NAME=Wert" haben. Groß- und Kleinschreibung spielt keine Rolle. | Für erweiterte G-Code-Befehle verfolgt Klipper eine etwas andere Philosophie als andere Firmwares: Statt kryptische M-Befehle zu erdenken, werden sprechende Namen benutzt. Gleiches gilt für die Parameter, die üblicherweise die Form "NAME=Wert" haben. Groß- und Kleinschreibung spielt keine Rolle. | ||
Es ist möglich, mittels Macros eigene G-Code-Befehle zu definieren. Das funktioniert über die Konfiguration und ist in [https://github.com/KevinOConnor/klipper/blob/master/config/example-extras.cfg#L395 example-extras.cfg] im Abschnitt "[gcode_macro my_cmd]" dokumentiert. Dadurch könnte man sich z.B. seinen Start-Code statt im Slicer in der Konfiguration definieren (und so auch leichter ändern, ohne neu slicen zu müssen), oder Befehle, die von Klipper nicht unterstützt aber durch den Slicer erzeugt werden, implementieren. | Es ist möglich, mittels Macros eigene G-Code-Befehle zu definieren. Das funktioniert über die Konfiguration und ist in [https://github.com/KevinOConnor/klipper/blob/master/config/example-extras.cfg#L395 example-extras.cfg] im Abschnitt "[gcode_macro my_cmd]" dokumentiert. Dadurch könnte man sich z.B. seinen Start-Code statt im Slicer in der Konfiguration definieren (und so auch leichter ändern, ohne neu slicen zu müssen), oder Befehle, die von Klipper nicht unterstützt aber durch den Slicer erzeugt werden, implementieren. | ||
Siehe [[Klipper_GCodes]] mit der Übersicht der GCodes die von Klipper verstanden werden, auch mit den Erweiterungen die im Repository von rf1000.de enthalten sind. | |||
Original-Dokumentation: https://www.klipper3d.org/G-Codes.html | Original-Dokumentation: https://www.klipper3d.org/G-Codes.html | ||
Zeile 110: | Zeile 118: | ||
Die Daten werden mit SAVE_CONFIG abgespeichert. | Die Daten werden mit SAVE_CONFIG abgespeichert. | ||
=== Z Offset === | |||
Um den Z-Offset bzw. die Z-Position des Endschalters zu kalibrieren, gibt es das Macro | |||
<pre>Z_CALIBRATE</pre> | |||
Dies führt einen Scan an der Position x=100,y=100 durch. Wichtig ist, dass die Position des Endschalters schon so weit bekannt sein muss, dass Z=2mm zuverlässig '''über''' dem Bett liegt (nicht zu weit, sonst dauert der Scan zu lange), denn diese Position wird vor dem Scan angefahren. | |||
Wenn man testen möchte, ob der Scan zuverlässig funktioniert, kann dieser Befehl benutzt werden: | |||
<pre>PROBE_ACCURACY</pre> | |||
Das führt dann an der aktuellen XY Position 10 mal einen Z-Scan durch und bestimmt Mittelwert und Standardabweichung etc. Standardabweichung ist also in unteren bis mitteleren einstelligen Mikrometerbereich, der "Maximalfehler" (range) besser als 1/100mm. [https://www.rf1000.de/viewtopic.php?f=7&t=2610&start=60 Mehr Info zu PROBE_ACCURACY siehe Post Nr 62] | |||
=== Bed Mesh Kalibration durchführen === | === Bed Mesh Kalibration durchführen === | ||
Zum kalibrieren des Bed Mesh (Äquivalent zum Heat Bed Scan der Repetier-Firmware) wird folgendes Macro empfohlen: | |||
<pre>BED_CALIBRATE</pre> | |||
<pre> | Dies führt zunächst ein Z_CALIBRATE durch (ebenfalls an x=100,y=100). Anschließend wird das Bett im Raster vermessen. Die Konfiguration wird am Ende automatisch gespeichert (was zu einem Firmware-Neustart führt). | ||
Dadurch, dass zuerst ein Z_CALIBRATE durchgeführt wird, kann anschließend jederzeit ein Z_CALIBRATE genutzt werden, um z.B. nach einem Düsenwechsel den Abstand zwischen Bett und Düse neu zu kalibrieren, ohne dass ein vollständiger Bed Mesh Scan nötig wäre. Wichtig dafür ist, dass die beiden Z_CALIBRATEs an der selben X/Y-Position ausgeführt werden (deshalb ist diese Position im Macro festgelegt). | |||
<pre>BED_MESH_OUTPUT</pre> | <pre>BED_MESH_OUTPUT</pre> | ||
Zeile 130: | Zeile 146: | ||
Übrigens kann das Mesh mit OctoPrint visualisiert werden, wenn man sich das Bed Visualizer Plugin installiert. | Übrigens kann das Mesh mit OctoPrint visualisiert werden, wenn man sich das Bed Visualizer Plugin installiert. | ||
=== Positionen Abfragen === | |||
Damit sieht man die aktuellen Positionen in den verschiedenen Koorinaten-Systeme. Beispiel nach "G1 Z0" auf der Position X=57.5 und Y=50.0 | |||
<pre>Send:16:32:28.975: #GET_POSITION | |||
Recv:16:32:28.976: // mcu: stepper_x:2 stepper_y:-50 stepper_z:2499 | |||
Recv:16:32:28.976: // stepper: stepper_x:57.500625 stepper_y:49.999688 stepper_z:-0.000000 | |||
Recv:16:32:28.976: // kinematic: X:57.500625 Y:49.999688 Z:-0.000000 | |||
Recv:16:32:28.976: // toolhead: X:57.500000 Y:50.000000 Z:0.000000 E:0.000000 | |||
Recv:16:32:28.976: // gcode: X:57.500000 Y:50.000000 Z:0.000000 E:0.000000 | |||
Recv:16:32:28.976: // gcode base: X:0.000000 Y:0.000000 Z:0.000000 E:0.000000 | |||
Recv:16:32:28.976: // gcode homing: X:0.000000 Y:0.000000 Z:0.000000 | |||
Recv:16:32:28.976: ok</pre> | |||
Man sollte man die Z-Koordinaten zwischen toolhead und kinematic vergleichen. Der Unterschied sollte genau die Korrektur aus dem Mesh-Leveling an dem Punkt sein. Andernfalls ist da irgendwo noch ein anderer Offset im Spiel. | |||
=== Speichern der Configuration === | === Speichern der Configuration === | ||
Mit dem Kommando save_config kann man die Änderungen, die durch die Abgleichfunktionen (PID, HBS, Z-Offset,...) ermittelt wurden, in der Konfigurationsdatei abspeichern | Mit dem Kommando save_config kann man die Änderungen, die durch die Abgleichfunktionen (PID, HBS, Z-Offset,...) ermittelt wurden, in der Konfigurationsdatei abspeichern: | ||
<pre>SAVE_CONFIG</pre> | <pre>SAVE_CONFIG</pre> | ||
Danach startet die Firmware neu, und es muss neu gehomed werden. | |||
== Konfigurationsdatei == | |||
=== Basiskonfigurationen === | |||
Im Verzeichnis von Klipper stehen unter /config die verschiedenen Konfigurationsdateien für Klipper. Aktuell ist für den RF1000 und den RF2000V2 mit Single Extruder eine Konfigurationsdatei vorhanden. Diese Konfigurationsdateien sollte man dort belassen und auch nicht ändern. | |||
=== Eigene printer.cfg === | |||
Bei Klipper verwendet man am besten eine eigene printer.cfg, die nicht einfach von einer Vorlage kopiert wird, sondern die die Vorlage ergänzt, ändert und erweitert. | |||
In der printer.cfg steht am Anfang normalerseise immer der Basisdrucker, von dem die aktuelle Konfiguration abgeleitet wird. Wie alle Parametergruppen wird das ganze von eckigen Klammern [] umschlossen. | |||
<pre>[include klipper/config/printer-rf2000v2-single.cfg]</pre> | |||
Dannach kann man dann seine geänderten oder neue Parameter hinzufügen. Das folgende ist aus einer Konfiguration für den RF2000V2 single. Zuerst wird der maximale Fahrweg in X und Y anders definiert und anschliessend für Z die Werte angepasst. Dannach kommt die Konfiguration für den HBS. | |||
<pre>[stepper_x] | |||
position_max: 210 | |||
[stepper_y] | |||
position_max: 290 | |||
[stepper_z] | |||
position_min: -2.0 | |||
position_max: 185 | |||
[bed_mesh] | |||
speed: 30 | |||
horizontal_move_z: 2 | |||
mesh_min: 10,50 | |||
mesh_max: 200,230 | |||
algorithm:lagrange | |||
probe_count: 5,5 | |||
fade_start: 1.0 | |||
fade_end: 10.0</pre> | |||
Nach den Parametern kann man sich auch Makros definieren. In dem Beispiel ein Markro zum Auswurf des Objektes, das man einfach mit OUTPUT_OBJECT aufrufen kann. | |||
<pre>[gcode_macro OUTPUT_OBJECT] | |||
gcode: | |||
G90 | |||
#G1 Z180 F540 | |||
G1 Z80 F540 | |||
G1 Y245 F4800</pre> | |||
Als letzte Abschnitt kommen die gespeicherten - durch SAVE_CONFIG - Parameter und Werte. Diese NICHT selbst verändern, sondern immer nur durch das Programm. | |||
<pre>#*# <---------------------- SAVE_CONFIG ----------------------> | |||
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. | |||
#*# | |||
#*# [extruder] | |||
#*# control = pid | |||
#*# pid_kp = 33.373 | |||
#*# pid_ki = 2.060 | |||
#*# pid_kd = 135.160 | |||
#*#</pre> |
Aktuelle Version vom 10. Januar 2024, 20:04 Uhr
Klipper ist eine Firmware für 3D Drucker. Diese kann alternativ zu der Repetier-basierten Original-Firmware von Conrad oder der auf dieser Original-Firmware basierenden Community-Version auf den Druckern RF1000, RF2000 oder RF2000v2 verwendet werden. Die dafür nötige Konfiguration ist für die Drucker RF2000 und RF2000v2 noch nicht vollständig. Für den RF1000 ist die Konfiguration abgeschlossen und wird seit Jahren bereits produktiv eingesetzt zum Drucken und Fräsen. Für die anderen Drucker werden Tester gesucht, die bereit sind, die Konfiguration an das jeweilige Modell anzupassen und beizusteuern.
Einleitung
Klipper ist gut dokumentiert auf seiner Webseite, allerdings nur in Englisch: https://www.klipper3d.org
Das Grundprinzip weicht von der Repetier-basierten Firmware und anderen 3D-Drucker-Firmwares deutlich ab. Statt alle Berechnungen im Microcontroller (im Folgenden MCU genannt) des Druckers auszuführen, werden zeitintensive Berechnungen auf einem Host-System durchgeführt. Als Host-System eignet sich z.B. ein Raspberry Pi oder auch ein herkömmlicher Linux-PC. Auf dem selben Host-System kann (bzw. sollte) auch Octoprint o.ä. ausgeführt werden. Wer also bereits Octoprint etc. nutzt, benötigt keine weitere Hardware.
Da die zur Verfügung stehende Rechenpower so um Größenordnungen höher ist, können deutlich präzisere Berechnungen durchgeführt werden. Die Motoren laufen spürbar ruhiger, und höhere Schrittfrequenzen sind ebenfalls problemlos möglich. Außerdem ist eine höhere Flexibilität möglich. Auch ohne Programmierkenntnisse kann das Verhalten der Firmware über Konfigurations-Dateien beeinflusst werden, sogar neue G-Codes können so eingeführt werden. Die Firmware ist größtenteils in Python geschrieben und sehr modular gehalten, wodurch die Einstiegshürde für Entwickler sehr viel geringer ist.
Status
Was schon funktioniert:
- Natürlich alle Grundfunktionen, die jeder normale Drucker hat (Bewegen, Heizen, Lüfter etc.)
- Dokumentation der unterstützten G-Codes: https://www.klipper3d.org/G-Codes.html
- Heizbett-Scan: heißt bei Klipper Bed Mesh Leveling
- Es lassen sich beliebig viele benannte Meshes (entspricht den Matrizen) speichern
- Es gibt kein Software-Limit wie groß die Werte im Mesh werden dürfen
- Interpolation zwischen den Punkten des Meshes ist deutlich besser, daher sollten weniger Punkte ausreichen
- Z-Offset-Scan
- Korrigiert nicht mehr die Matrix/das Mesh, sondern kalibriert die Z-Koordinate des Z-Endstop.
- Ebenfalls keinerlei Software-Limit auf den Wert des "Offsets".
- Homing gegen Z-Max ist problemlos ebenfalls möglich.
- Menü (im Original-Zustand von Klipper, daher noch etwas rudimentär vielleicht): die Bedienlogik ist etwas anders
- Die Nach-Rechts-Taste wird eigentlich nicht gebraucht und wurde daher als Not-Aus umfunktioniert.
- Die Tasten zum Bewegen des Heizbetts und des Extruders fahren in vorgegebenen Schritten. Gedrückthalten für längere Fahrten ist nicht möglich (Einschränkung in Klipper).
- Pause und Fortsetzen über Tasten (funktioniert evtl. nur mit Octoprint?)
- Sense offset
- Emergency Stop (bei zu hohem Druck auf die Wägezellen), funktioniert nur während eines Z-Scans.
- Kanten antasten in X/Y (Fräsen)
Was fehlt:
- Konfigurationen für den RF2000 und RF2000v2 (für RF2000v2 single extruder ist eine Konfiguration vorhanden, muss aber geupdated werden)
- Sagt ihr es mir!
Installation
Eine Ausführliche Installationsanleitung gibt es auf der Webseite: https://www.klipper3d.org/Installation.html
Eine Installationsanleitung für Klipper auf dem MKS SKIPR Board gibt es hier: Klipper_MKS_SKIPR
Eine Installationsanleitung für Klipper auf dem PC gibt es hier: Klipper auf PC
Da die nötigen Modifikationen und Beispielkonfigurationen noch nicht Teil der offiziellen Klipper-Firmware sind, muss der folgende Befehl:
git clone https://github.com/Klipper3d/klipper
durch diesen ersetzt werden:
git clone https://github.com/RF1000community/Klipper
Außerdem gibt es bereits eine Konfigurations-Datei für den RF1000. Ich würde daher empfehlen, die Konfigurations-Datei printer.cfg mit folgendem Inhalt zu erstellen:
[include klipper/config/printer-rf1000.cfg] [mcu] serial: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_<hier_richtige_ID_einfügen>-port0 [stepper_z] position_endstop: 0
Dadurch wird der Inhalt von klipper/config/printer-rf1000.cfg benutzt, aber alle folgenden Einstellungen überschreiben ggf. bereits vorhandene Einstellungen aus der printer-rf1000.cfg Datei. Die Angabe des position_endstop für die Z-Achse ist nötig, da diese durch den Z-Offset-Scan überschrieben wird, was nur funktioniert, wenn diese Angabe direkt in der printer.cfg gemacht wird (nicht im Include).
Nach der Installation bitte unbedingt die Anleitung zum Prüfen der Konfiguration befolgen: https://www.klipper3d.org/Config_checks.html
Es ist ebenfalls empfehlenswert, die Konfiguration auf diese Weise nach jedem Update zu prüfen, weil durch das [include] Änderungen aus der Konfigurationsdatei automatisch übernommen werden.
Octoprint
Die Installationsanleitung geht von einer Octoprint Installation aus.
Repetierserver
Man kann auf einem normalen RasPi Installation zuerst Repetier-Server aufsetzen und dann erst Klipper. Die Verbindung von Repetier-Server zu Klipper funktioniert aber nicht, da die beiden Programme unter verschiedenen Benutzern arbeiten und die Standard Serial-Emulation das Problem nicht lösen kann.
Abhilfe: (Siehe [Repetier-Server Knowledgebase https://www.repetier-server.com/knowledgebase/klipper/])
sudo mkdir /var/lib/klipper sudo chmod 777 /var/lib/klipper
Und dann die Änderung in den Einstellungen von Klipper bekannt machen
sudo nano /etc/defaults/klipper
dort die Zeile am Ende zu
KLIPPY_ARGS="/home/pi/klipper/klippy/klippy.py /home/pi/printer.cfg -l /tmp/klippy.log -I /var/lib/klipper/connect"
ergänzen. Anschliessend das Service von Klipper neu starten. Damit kann man sich in Repetier-Server mit Gerät/Port /var/lib/klipper/connect verbinden.
Repetierserver älter als 0.99.4: Bei den Befehlen muss man ein Raute Zeichen # voranstellen, damit es richtig von Repetier-Server weitergegeben wird. Ist bei Version 1.x und besser nicht mehr der Fall.
Klipper Befehle
Klipper unterstützt natürlich alle gängigen G-Code-Befehle, die die Slicer erzeugen. Es wird allgemein empfohlen, den Slicer auf "Marlin" oder "Smoothieware" zu stellen (sofern keine direkte Unterstützung für Klipper vorhanden ist). Für erweiterte G-Code-Befehle verfolgt Klipper eine etwas andere Philosophie als andere Firmwares: Statt kryptische M-Befehle zu erdenken, werden sprechende Namen benutzt. Gleiches gilt für die Parameter, die üblicherweise die Form "NAME=Wert" haben. Groß- und Kleinschreibung spielt keine Rolle.
Es ist möglich, mittels Macros eigene G-Code-Befehle zu definieren. Das funktioniert über die Konfiguration und ist in example-extras.cfg im Abschnitt "[gcode_macro my_cmd]" dokumentiert. Dadurch könnte man sich z.B. seinen Start-Code statt im Slicer in der Konfiguration definieren (und so auch leichter ändern, ohne neu slicen zu müssen), oder Befehle, die von Klipper nicht unterstützt aber durch den Slicer erzeugt werden, implementieren.
Siehe Klipper_GCodes mit der Übersicht der GCodes die von Klipper verstanden werden, auch mit den Erweiterungen die im Repository von rf1000.de enthalten sind. Original-Dokumentation: https://www.klipper3d.org/G-Codes.html
Hinweis: Einige der dort beschriebenen Befehle sind nur aktiv, wenn bestimmte Module geladen sind. Daher gehen manche Befehle nicht, es sei denn, das Modul wird über die Konfiguration eingeschaltet.
Reset
Einen Reset von Klipper, das auch die Firmware zurücksetzt führt man mit dem Kommando
FIRMWARE_RESTART
durch. Dabei wird auch die printer.cfg neu eingelesen. Bei Problemen in der printer.cfg kann es sein, das ein Klipper: Disconnect erscheint. Dann läuft Klipper nicht und man darf den Fehler suchen.
Mit dem GCode M112 wird Klipper einfach heruntergefahren und man muss sich neu verbinden.
Möchte man nur die printer.cfg neu laden, genügt der Befehl
RESTART
PID durchführen
Für den Hotend 1
PID_CALIBRATE HEATER=extruder TARGET=210
Für das Heizbett
PID_CALIBRATE HEATER=heater_bed TARGET=60
Die Daten werden mit SAVE_CONFIG abgespeichert.
Z Offset
Um den Z-Offset bzw. die Z-Position des Endschalters zu kalibrieren, gibt es das Macro
Z_CALIBRATE
Dies führt einen Scan an der Position x=100,y=100 durch. Wichtig ist, dass die Position des Endschalters schon so weit bekannt sein muss, dass Z=2mm zuverlässig über dem Bett liegt (nicht zu weit, sonst dauert der Scan zu lange), denn diese Position wird vor dem Scan angefahren.
Wenn man testen möchte, ob der Scan zuverlässig funktioniert, kann dieser Befehl benutzt werden:
PROBE_ACCURACY
Das führt dann an der aktuellen XY Position 10 mal einen Z-Scan durch und bestimmt Mittelwert und Standardabweichung etc. Standardabweichung ist also in unteren bis mitteleren einstelligen Mikrometerbereich, der "Maximalfehler" (range) besser als 1/100mm. Mehr Info zu PROBE_ACCURACY siehe Post Nr 62
Bed Mesh Kalibration durchführen
Zum kalibrieren des Bed Mesh (Äquivalent zum Heat Bed Scan der Repetier-Firmware) wird folgendes Macro empfohlen:
BED_CALIBRATE
Dies führt zunächst ein Z_CALIBRATE durch (ebenfalls an x=100,y=100). Anschließend wird das Bett im Raster vermessen. Die Konfiguration wird am Ende automatisch gespeichert (was zu einem Firmware-Neustart führt).
Dadurch, dass zuerst ein Z_CALIBRATE durchgeführt wird, kann anschließend jederzeit ein Z_CALIBRATE genutzt werden, um z.B. nach einem Düsenwechsel den Abstand zwischen Bett und Düse neu zu kalibrieren, ohne dass ein vollständiger Bed Mesh Scan nötig wäre. Wichtig dafür ist, dass die beiden Z_CALIBRATEs an der selben X/Y-Position ausgeführt werden (deshalb ist diese Position im Macro festgelegt).
BED_MESH_OUTPUT
gibt das aktuelle Mesh aus.
BED_MESH_CLEAR
setzt alle Werte des aktuellen Meshes auf 0.
BED_MESH_PROFILE LOAD=<name> SAVE=<name> REMOVE=<name>
erlaut das Mesh zu speichern, zu laden, oder ein gespeichertes Mesh zu löschen.
Übrigens kann das Mesh mit OctoPrint visualisiert werden, wenn man sich das Bed Visualizer Plugin installiert.
Positionen Abfragen
Damit sieht man die aktuellen Positionen in den verschiedenen Koorinaten-Systeme. Beispiel nach "G1 Z0" auf der Position X=57.5 und Y=50.0
Send:16:32:28.975: #GET_POSITION Recv:16:32:28.976: // mcu: stepper_x:2 stepper_y:-50 stepper_z:2499 Recv:16:32:28.976: // stepper: stepper_x:57.500625 stepper_y:49.999688 stepper_z:-0.000000 Recv:16:32:28.976: // kinematic: X:57.500625 Y:49.999688 Z:-0.000000 Recv:16:32:28.976: // toolhead: X:57.500000 Y:50.000000 Z:0.000000 E:0.000000 Recv:16:32:28.976: // gcode: X:57.500000 Y:50.000000 Z:0.000000 E:0.000000 Recv:16:32:28.976: // gcode base: X:0.000000 Y:0.000000 Z:0.000000 E:0.000000 Recv:16:32:28.976: // gcode homing: X:0.000000 Y:0.000000 Z:0.000000 Recv:16:32:28.976: ok
Man sollte man die Z-Koordinaten zwischen toolhead und kinematic vergleichen. Der Unterschied sollte genau die Korrektur aus dem Mesh-Leveling an dem Punkt sein. Andernfalls ist da irgendwo noch ein anderer Offset im Spiel.
Speichern der Configuration
Mit dem Kommando save_config kann man die Änderungen, die durch die Abgleichfunktionen (PID, HBS, Z-Offset,...) ermittelt wurden, in der Konfigurationsdatei abspeichern:
SAVE_CONFIG
Danach startet die Firmware neu, und es muss neu gehomed werden.
Konfigurationsdatei
Basiskonfigurationen
Im Verzeichnis von Klipper stehen unter /config die verschiedenen Konfigurationsdateien für Klipper. Aktuell ist für den RF1000 und den RF2000V2 mit Single Extruder eine Konfigurationsdatei vorhanden. Diese Konfigurationsdateien sollte man dort belassen und auch nicht ändern.
Eigene printer.cfg
Bei Klipper verwendet man am besten eine eigene printer.cfg, die nicht einfach von einer Vorlage kopiert wird, sondern die die Vorlage ergänzt, ändert und erweitert.
In der printer.cfg steht am Anfang normalerseise immer der Basisdrucker, von dem die aktuelle Konfiguration abgeleitet wird. Wie alle Parametergruppen wird das ganze von eckigen Klammern [] umschlossen.
[include klipper/config/printer-rf2000v2-single.cfg]
Dannach kann man dann seine geänderten oder neue Parameter hinzufügen. Das folgende ist aus einer Konfiguration für den RF2000V2 single. Zuerst wird der maximale Fahrweg in X und Y anders definiert und anschliessend für Z die Werte angepasst. Dannach kommt die Konfiguration für den HBS.
[stepper_x] position_max: 210 [stepper_y] position_max: 290 [stepper_z] position_min: -2.0 position_max: 185 [bed_mesh] speed: 30 horizontal_move_z: 2 mesh_min: 10,50 mesh_max: 200,230 algorithm:lagrange probe_count: 5,5 fade_start: 1.0 fade_end: 10.0
Nach den Parametern kann man sich auch Makros definieren. In dem Beispiel ein Markro zum Auswurf des Objektes, das man einfach mit OUTPUT_OBJECT aufrufen kann.
[gcode_macro OUTPUT_OBJECT] gcode: G90 #G1 Z180 F540 G1 Z80 F540 G1 Y245 F4800
Als letzte Abschnitt kommen die gespeicherten - durch SAVE_CONFIG - Parameter und Werte. Diese NICHT selbst verändern, sondern immer nur durch das Programm.
#*# <---------------------- SAVE_CONFIG ----------------------> #*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. #*# #*# [extruder] #*# control = pid #*# pid_kp = 33.373 #*# pid_ki = 2.060 #*# pid_kd = 135.160 #*#