====== Drucker einrichten ====== * https://ellis3dp.com/Print-Tuning-Guide/ * https://docs.vorondesign.com/build/startup/ * https://github.com/cryd-s/klipper_scripts/tree/main Video 1 https://youtu.be/_AkzbdvBB8A Video 2 https://youtu.be/nqGv3xfeXKA ===== Hardware ===== Prüft im Vorfeld eure Hardware. Sprich alles sollte solide verschraubt sein, nichts wackelt, klappert und der Rahmen ist fest / steif. ==== Rahmen / Gantry ==== Rahmen & Gantry (sofern vorhanden) sollten korrekt verschraubt sein. Es sollte auch nichts verzogen sein - also lieber 2x mehr mit dem Winkel alles kontrollieren. Zudem sollte alles was sich bewegen kann auch relativ leicht beweglich sein. Ausgeschaltete Stepper haben zwar einen gewissen Grundwiderstand bei manueller Bewegung, aber trotzdem muss alles mit wenig Kraft beweglich sein. > **Merke** \\ Grundsätzlich kann man wohl sagen, dass ein schlecht aufgebauter Rahmen (und / oder Gantry) kaum vernünftig kalibriert werden kann. Also lieber vorher 2x nachmessen! :!: ==== Riemen Spannung ==== * Nicht den Rahmen verziehen beim Spannen! * Riemen sollten auch nicht zu locker sein * drauf achten das der Riemen auf mit Antrieb seine Form behält * ganz grobe Faustregel .. Auf ca. 25cm Riemen sollte der Riemen ohne größere Kraft ca. 5-10mm eindrückbar sein. * Infos zur Riemenspannung \\ https://www.3d-druckwelten.de/2017/12/14/riemen-richtig-spannen/ * Belt Tensionmeter können helfen * Beim Zupfen sollte eher ein dumpfer Ton von 80-110Hz entstehen ===== Vorab Checks ===== * https://www.klipper3d.org/Config_checks.html ==== Temperaturen ==== * prüfen ob die Temperaturn in der Oberfläche korrekt angezeigt werden * prüfen das die Temperaturen der Düse und des Heizbetts (falls vorhanden) angezeigt werden und nicht ansteigen * :!: Wenn ein Anstieg erkennbar ist, sofort den Drucker abschalten. In dem Fall ist der Ausgang aktiv und muss in der Konfiguration umgedreht werden! * Falls die angezeigten Temperaturen nicht korrekt sind, überprüfe die Einstellungen für ''sensor_type'' und ''sensor_pin'' der Düse und/oder des Heizbetts ==== Notstop M112 ==== * Notstop mit ''M112'' testen * Restart der Firmware durch ''FIRMWARE_RESTART'' * Temperaturen müssen jetzt wieder sauber ausgelesen werden. Wenn nicht -> siehe vorheriger Schritt ==== Heizelemente ==== * Extruder Heizelement prüfen indem wir 50 Grad vorgeben * Wenn der Extruder aufheizt kann man mit Cooldown (oder 0 Eingabe) den Heizvorgang wieder abbrechen * Wenn die Temperatur nicht ansteigt, die Einstellung ''heater_pin'' in der Konfigurationsdatei überprüfen * Wenn der Drucker über ein beheiztes Bett verfügt, die vorherigen Schritte mir dem Druckbett durchführen * Prüfen ob die Lüfter richtig sind (Bauteil, Hotend) ==== Schrittmotor Enable Pins ==== * Prüfen das die Motoren sich frei bewegen lassen * Sollte das nicht der Fall sein ''M84'' in der Konsole eingeben * Sollten sich die Motoren dann immer noch nicht frei bewegen lassen muss der ''enable_pin'' in der Konfiguration des entsprechenden Schrittmotors mit einem ! versehen werden. * Bei den meisten handelsüblichen Schrittmotortreibern ist der ''enable_pin'' als "active low" konfiguriert. Daher sollte dem Pin ein "!" vorangestellt sein (zum Beispiel: "enable_pin: !PA1"). ==== Endstops ==== * Alle Achsen so bewegen das kein Endstop gedrückt ist * ''QUERY_ENDSTOPS'' in der Konsole absetzen \\ Beispiel: x:TRIGGERED y:open z:TRIGGERED * Die Endstops sollten den Status "open" (offen) melden * Die Endstops der reihe nach drücken und schauen ob sich der Status ändert - "TRIGGERED" (ausgelöst) * Meldet ein Endstop TRIGGERED obwohl er nicht gedrückt ist, muss der Pin ''endstop_pin'' invertiert werden. Das passiert mit einem ! vor dem Pin (oder das ! wegnehmen wenn eins da ist) * Meldet der Endstop gar keine Änderung bei ''QUERY_ENDSTOPS'' muss zunächst der Pin geprüft werden in der Konfig. Ist der Pin richtig, kann es mitunter helfen den Pullup zu aktivieren. Das erfolgt mit einem ^ vor dem Pinnamen ==== Schrittmotoren ==== * Die TMC Treiber kann man prüfen indem man ''DUMP_TMC STEPPER='' absetzt \\ Bsp: \\ {{:klipper_faq:drucker_klippern:pasted:20250222-112609.png}} * alle Schrittmotoren mit ''STEPPER_BUZZ'' testen \\ Beispiel für Stepper X : ''STEPPER_BUZZ STEPPER=stepper_x'' * Der Schrittmotor bewegt sich nur 1mm vor und zurück! * Wenn sich der Schrittmotor nicht bewegt ist ggf. der ''enable_pin'' und / oder der ''step_pin'' nicht korrekt. ==== Extruder Motor ==== * Extruder auf passende Filament Temperatur manuell vorheizen * In MainSail dann mit der Extruder Ansicht versuchen Filament zu extrudieren * Wenn die Drehrichtung falsch ist muss der ''dir_pin'' in der Konfig angepasst werden. * Sollte sich gar nichts bewegen ist ggf. der ''enable_pin'' und / oder ''step_pin'' falsch ===== Kalibrierungen ===== ==== Motor Strom berechnen ==== * Motorstrom sollte im Bereich 40-50% vom angegebenen Strom des Motors liegen * Max. sollte man bei ca. 70% liegen. * Links * https://ellis3dp.com/Print-Tuning-Guide/articles/determining_motor_currents.html * https://docs.vorondesign.com/community/howto/120decibell/calculating_driver_current.html#:~:text=Calculating%20Currents,is%20the%20maximum%20run%20current. * https://docs.zerog.one/universal/klippercalculator * ''stealthchop_threshold: 2000'' setzen für weniger Krach \\ siehe https://www.klipper3d.org/TMC_Drivers.html ==== Bett Abmessungen / Endstops ==== * Die Normalkonfiguration für einen Drucker besagt das Position 0,0 vorne links ist! * Stellt die richtige ''kinematics'' ein! Wenn das falsch ist, könnt ihr nicht mehr logisch nachvollziehen was der Drucker da "treibt" :-) * für jeden Endstop muss folgendes definiert werden \\ position_min: 0 # Minimum limit position_endstop: 300 # Position des Endstop position_max: 300 # Maximum mechanical limit * Bei einem z_zirtual_endstop (ihr verwendet also eine Probe ...) entfällt ''position_endstop'' * ''position_endstop'' muss zwischen ''position_min'' und ''position_max'' liegen! * Fährt der Drucker beim Homen in die falsche Richtung, muss der ''dir_pin'' mit einem ! negiert werden. * Für CoreXY und CoreXZ gibt es ganz gute Schaubilder vom Voron: \\ https://docs.vorondesign.com/build/startup/ * https://klipper.discourse.group/t/understanding-x-and-y-axes-limits-and-homing/10779 ==== Extruder ==== * Am Extruder Eingang 120mm am Filament markieren * Jetzt 100mm in MainSail extrudieren lassen * Man muss dafür die ''min_extrude_temp: 10'' runter setzen auf z.B. 10°C weil sonst kein Extrudieren möglich ist im kalten Zustand. * Im heißen Zustand mit Hotend muss man eh vorheizen! * Dann messen wie groß der Abstand noch ist zwischen Markierung und Extruder Eingang * Das Ergebnis im Rechner eintragen * https://docs.zerog.one/universal/klippercalculator (Calibrating rotation_distance on extruders) * 120mm sind vorgegeben * zweiter Eintrag ist das Messergebnis * und aus der ''printer.cfg'' auf dem ''[extruder]'' Teil holt ihr euch die alte ''rotation_distance'' und tragt sie im dritten Feld ein. * Dann auf Calculate * Den berechneten Wert jetzt wieder in der ''printer.cfg'' unter ''[extruder]'' bei ''rotation_distance'' eintragen. * Save & Restart und die Messung wiederholen. Passt es noch nicht genau mit 100mm, die Berechnung wiederholen * Klipper Doku inkl. Formel : https://www.klipper3d.org/Rotation_Distance.html ==== PID Tuning Hotend ==== * Auf richtige Sensoren achten in der Konfig ! * ''PID_CALIBRATE HEATER=extruder TARGET=230'' * Ergebnis (Beispiel) \\ PID parameters: pid_Kp=27.393 pid_Ki=1.081 pid_Kd=173.603 The SAVE_CONFIG command will update the printer config file with these parameters and restart the printer. * ''SAVE_CONFIG'' ==== PID Tuning Bett ==== * Auf richtige Sensoren achten in der Konfig ! * ''PID_CALIBRATE HEATER=heater_bed TARGET=60'' * Ergebnis (Beispiel) \\ PID parameters: pid_Kp=70.799 pid_Ki=0.940 pid_Kd=1332.784 The SAVE_CONFIG command will update the printer config file with these parameters and restart the printer. * ''SAVE_CONFIG'' ==== Endstop Phase ==== * :!: Endstop Phase funktioniert nur wenn ihr Trinamic (TMC) Treiber habt und diese zur Laufzeit einstellen könnt (also mit UART oder SPI Anbindung!) * Mit "Endstop phase" wird verhindert das Endschalter mal einen hach zu früh oder zu spät auslösen. Die Konfiguration sorgt dafür das die Endstops immer möglichst gleich auslösen. * ''[endstop_phase]'' in der ''printer.cfg'' eintragen und den Drucker neu starten * Achsen homen \\ ''G28'' * Kalibrierung durchführen \\ ''ENDSTOP_PHASE_CALIBRATE'' \\ Das Ergebnis im Log ist dann z.B. \\ 09:19 stepper_z: trigger_phase=79/128 (range 79 to 79) 09:19 stepper_y: trigger_phase=5/64 (range 5 to 5) 09:19 stepper_x: trigger_phase=1/64 (range 1 to 1) 09:19 ENDSTOP_PHASE_CALIBRATE * Jetzt 4-5x den Kopf an unterschiedliche Positionen fahren und danach jeweils ein Homing durchführen \\ G0 X10 Y10 Z10 G28 G0 X200 Y230 Z60 G28 G0 X50 Y100 Z80 G28 G0 X100 Y150 Z200 G28 G0 X200 Y10 Z120 G28 * Jetzt wieder ein ''ENDSTOP_PHASE_CALIBRATE'' \\ 09:25 stepper_z: trigger_phase=76/128 (range 73 to 79) 09:25 stepper_y: trigger_phase=5/64 (range 4 to 5) 09:25 stepper_x: trigger_phase=1/64 (range 1 to 1) * Die Werte sollten sehr ähnlich zum ersten Test sein. * Zum Speichern muss man die Achsen einzeln auswählen. Bei Cartesian, CoreXY typischerweise für stepper_z und bei Deltas für stepper_a, stepper_b und stepper_c. * ''ENDSTOP_PHASE_CALIBRATE STEPPER=stepper_z'' * Danach Speichert man das Ergebnis mit ''SAVE_CONFIG''. Die Endstop Kalibrierungen wird dann automatisch geladen beim Druckerstart. * https://www.klipper3d.org/Endstop_Phase.html ==== Z Offset ==== * Der Z Offset dient als Einstellung für den "first Layer" Abstand * **Endstops** definieren die Grenzen vom Drucker * eine **Probe** dient zum Bett "abtasten" * Ein Drucker mit Gantry (CoreXY z.B.) macht ohne Probe keinen Sinn -> Das Gantry würde nie gerade * Ohne Probe ist kein Autolevel möglich (Z Tilt, Quad Gentry Leveling) * Ohne Probe ist kein Bed Mesh möglich * Es kann beim Kalibrieren notwenig sein, den Z position_min (Stepper Z) auf einen negativen Wert zu setzen (''position_min: -5''). * Die Probe muss so eingestellt sein das sie das Bett erkennt bevor die Nozzle das Bett berührt! Und die Probe muss natürlich immer höher angebracht sein als die Nozzle. === Z Offset ohne Probe === * Z Offset wird definiert über Z Endstop * https://www.klipper3d.org/Manual_Level.html * alle Achsen Homen \\ ''G28'' * Kopf in die Mitte fahren \\ ''G0 X115 Y115 Z5'' * Manuelle Kalibrierung starten \\ ''Z_ENDSTOP_CALIBRATE'' * Ein Blatt Papier (80g) auf das Druckbett legen \\ Weitere Hinweise zum Papertest : https://www.klipper3d.org/Bed_Level.html#the-paper-test * Jetzt den Kopf langsam runter bewegen bis das Papier beim Verschieben "kratzt" \\ In MainSail und auf KlipperScreen sieht man dazu einen passenden Dialog! * Z Offset übernehmen mit ''ACCEPT'' * stepper_z: position_endstop: 0.100 The SAVE_CONFIG command will update the printer config file with the above and restart the printer. Z Offset speichern mit ''SAVE_CONFIG'' * Das Ergebnis steht in der ''printer.cfg'' am Ende \\ #*# [stepper_z] #*# position_endstop = 0.100 === Z Offset mit Probe ==== * Z Offset wird definiert über Probe Z Offset * Gibt denn Abstand an wie weit es noch von Nozzle Spitze bis Druckbett ist wenn die Probe ausgelöst hat * Probe dient in der Regel als Virtual Z Endstop * Als Probe kann dienen: Klicky, BLTouch, Cartographer / Eddy Sensoren, induktive / kapazitive Sensoren, ... * Klipper braucht eine ''[probe]'', ''[bltouch]'', ''[scanner]'' Konfiguration! * X und Y Offsets für die Probe bestimmen und in der ''printer.cfg'' eintragen \\ Siehe https://www.klipper3d.org/Probe_Calibrate.html#calibrating-probe-x-and-y-offsets * Grundsätzlich kann man sagen ... \\ Probe ist links -> X Offset ist negativ \\ Probe ist rechts -> X Offset ist positiv \\ Probe steht weiter nach vorne als die Nozzle -> Y Offset ist negativ \\ Probe steht weiter nach hinten als die Nozzle -> Y Offset ist positiv * ''position_endstop'' beim Z Stepper deaktivieren * ''endstop_pin'' beim Z Stepper auf ''probe:z_virtual_endstop'' setzen * ''[safe_z_home]'' auf Bettmitte setzen ''home_xy_position : 115,115'' * Test mittels \\ ''G28'' \\ ''PROBE'' \\ :!: Hand immer auf Notaus oder Hauptschalter :-) * Alle Achsen homen \\ ''G28'' * Z Offset kalibrieren \\ ''PROBE_CALIBRATE'' * Er erfolgt ein Probing und danach macht man wieder den Papier Test * Wenn das Papier wieder an der Nozzle kratzt mit ''ACCEPT'' übernehmen * Mit ''SAVE_CONFIG'' speichern * Im Anschluss kann man noch die Genauigkeit ermitteln mit \\ ''PROBE_ACCURACY'' \\ Interessant ist am Ende die standard deviation, also die Abweichung im mm Zwischen den Messungen. * https://www.klipper3d.org/Probe_Calibrate.html === BLTouch Notes === * Einfahren \\ ''BLTOUCH_DEBUG COMMAND=pin_up'' * Ausfahren \\ ''BLTOUCH_DEBUG COMMAND=pin_down'' * Reset \\ ''BLTOUCH_DEBUG COMMAND=reset'' * Sondermodelle / Clones siehe \\ https://www.klipper3d.org/BLTouch.html#bl-touch-clones ==== Bett Leveln ==== * https://www.klipper3d.org/Bed_Level.html * https://www.klipper3d.org/Config_Reference.html#bed-level-support * Beim Bett Leveln kommt es auf den Drucker und die Anzahl der Z Motoren an, welche Variante ihr nutzen könnt. === mit Schrauben (Ohne Probe) === * :!: Kein automatisches Leveln möglich! * In der ''printer.cfg'' folgendes einfügen \\ [bed_screws] screw1 : 30, 30 screw2 : 200, 30 screw3 : 200, 200 screw4 : 30, 200 Die Positionen und die Anzahl entsprechen den Bettschrauben. * Kalibrierung aufrufen \\ ''BED_SCREWS_ADJUST'' * Mit dem Papiertest die jeweilige Schraube so einstellen dass das Papier wirder leicht kratzt. * ''ADJUSTED'' auswählen wenn man Anpassungen gemacht hat an der Schraube, ''ACCEPT'' wenn die Schraube so passt ohne Anpassung. * Wenn alle Schrauben auf ACCEPT sind schließt sich der Dialog. * https://www.klipper3d.org/Config_Reference.html#bed_screws === mit Schrauben (mit Probe) === * Der Vorgang ist hier hinreichend beschrieben : \\ https://www.klipper3d.org/Manual_Level.html#adjusting-bed-leveling-screws-using-the-bed-probe * https://www.klipper3d.org/Config_Reference.html#screws_tilt_adjust === mit Z Tilt (mehrere Z Motoren) === * https://www.klipper3d.org/Config_Reference.html#z_tilt === mit Quad Gantry Level (4 Z Motoren mit Gantry) === * https://www.klipper3d.org/Config_Reference.html#quad_gantry_level ==== Bed Mesh ==== * https://www.klipper3d.org/Bed_Mesh.html * Bett Mesh kann keine Wunder bewirken. Ein verzogenes Bett / Rahmen wird nie perfekte Drucke liefern! * Z-Offset der Probe muss kalibriert sein. * Beispiel Konfig \\ [bed_mesh] speed : 50 # Calibration speed horizontal_move_z : 5 # Z-axis lift height before moving to the next probe point mesh_min : 20,20 # Minimum calibration point coordinates (X, Y) mesh_max : 210,210 # Maximum calibration point coordinates (X, Y) probe_count : 7,7 # Number of sample points (7x7 = 49 points) mesh_pps : 2,2 # Additional sample points per segment algorithm : bicubic # Algorithm model bicubic_tension : 0.2 # Bicubic interpolation tension, do not modify * Leveln und Kalibrieren * Achsen homen \\ ''G28'' * ggf. Bett Leveln mit ''Z_TILT_ADJUST'' oder ''QUAD_GANTRY_LEVEL'' \\ generell sollte das Bett so gut wie möglich gelevelt / gerade sein. * aktuelles Mesh löschen \\ ''BED_MESH_CLEAR'' * Bett Mesh Kalibrierung durchführen \\ ''BED_MESH_CALIBRATE'' * Kalibrierung für alle Filament Typen (PLA, PETG, ABS, ...) und dort das Heizbett immer auf die passende Temperatur setzen (PLA 50°C, PETG 70°C, ABS 100°C, ...). * Gespeichert wird das dann mittels * ''BED_MESH_PROFILE SAVE=Mesh_PLA'' * ''BED_MESH_PROFILE SAVE=Mesh_PETG'' * ''BED_MESH_PROFILE SAVE=Mesh_ABS'' * Nach jedem BED_MESH_PROFILE SAVE dann * ''SAVE_CONFIG'' ==== Input Shaper ==== * https://www.klipper3d.org/Measuring_Resonances.html * https://klipper.discourse.group/t/interpreting-the-input-shaper-graphs/9879 ===== Filament ===== ==== Extrusion Multiplier (EM) ermitteln ==== temp - flow - pa "Fingernageltest" ==== Preasure Advanced ==== * https://www.klipper3d.org/Pressure_Advance.html ===== Advanced ===== * https://github.com/Frix-x/klippain-shaketune?tab=readme-ov-file * https://github.com/andrewmcgr/klipper_tmc_autotune/tree/main ==== Determining Maximum Speeds and Accelerations ==== ==== LED ==== * https://github.com/julianschill/klipper-led_effect