Skip to main content

Youtube: Unabhängige Beschleunigungswerte für X und Y

Videolink: https://youtu.be/Nm_14FqvYbg

Bitte beachte, dass die Verwendung dieser Datei eine Anpassung der Klipper-Firmware vornimmt. Dadurch greifst du in den Kern deines 3D-Druckersystems ein. 

Es wird von uns empfohlen, dass nur erfahrene Personen mit fortgeschrittenen Kenntnissen und der Fähigkeit, Fehlverhalten zu erkennen, diese Modifikation vornehmen sollten. Eine unsachgemäße Anwendung oder Konfiguration kann zu Fehlfunktionen oder Beschädigungen führen. 

Sorge bitte dafür, dass du die Auswirkungen der Änderungen verstehst und mache Backups deiner aktuellen Firmware-Einstellungen, bevor du Änderungen vornimmst.

Hintergrund

Credits:
Dieses Skript wurde von Piezo erstellt:
Github: klipper/limited_cartesian.py at work-peraxis · Piezoid/klipper · GitHub
Diskussion: Independant acceleration limits for X and Y axes - Features - Klipper

Dieses Makro ermöglicht die Einstellung separater Beschleunigungswerte für X und Y. Dies spielt insbesondere für "Bedslinger" Drucker eine wichtige Rolle. 

Warum:
Ein Bedslinger 3D-Drucker, auch als bewegliches Bett-3D-Drucker bekannt, ist eine Variante des kartesischen 3D-Druckers. Bei dieser Art von Drucker bewegt sich das Druckbett entlang einer Achse (meist der Y-Achse), während der Druckkopf entlang der anderen beiden Achsen (X- und Z-Achse) bewegt wird. Im Folgenden erläutere ich den grundlegenden Aufbau und einige Nachteile von Bedslinger 3D-Druckern.  Da das Druckbett entlang der Y-Achse bewegt wird und die Masse des Objekts und des Druckbetts beeinflusst, kann dies die Druckgeschwindigkeit und -beschleunigung beeinträchtigen. Je größer und schwerer das Druckbett und das Objekt sind, desto schwieriger ist es, hohe Druckgeschwindigkeiten zu erreichen, ohne die Druckqualität bzw. -beschleunigung zu beeinträchtigen.

Wirkungsweise

Die in den Klipper angezeigte Beschleunigungseinstellung kann als "Requested Acceleration" verstanden werden. Sie wird mit dem max_accel-Wert der Konfiguration initialisiert und kann vom Slicer über M204 S[xxx] oder ein beliebiges Makro, das SET_VELOCITY_LIMIT aufruft, festgelegt werden.

Das Skript reduziert diese angeforderte Beschleunigung, wenn die Beschleunigung auf einer Achse größer ist als die entsprechenden max_[x/y/z]_accel-Einstellungen.

308a90ac702b6e251512a270bbf36cb4ff5419b7.png
Vektoren repräsentieren Bewegungsbeschleunigungen und Orientierung: Die Pfeillänge ist die Beschleunigung und ihre Ausrichtung ist identisch mit der Bewegungsorientierung in der X/Y-Ebene. Das Original-Klipper wendet immer eine Beschleunigung auf den roten gestrichelten Kreis an = Alle Bewegungen werden unabhängig von ihrer Ausrichtung gleich behandelt. Der leuchtend rote Vektor ist ein Beispiel dafür. Die beiden hinzugefügten Grenzen sind die horizontalen und vertikalen roten Linien. Der hellgrüne Vektor ist ein Beispiel dafür, wie die Bewegung durch die Y-Achsen-Beschleunigungsgrenze begrenzt wird. Wenn max_accel (oder der Wert, der über den Slicer oder das Frontend festgelegt wurde) kleiner ist als die diagonale Länge des Rechtecks max_x_accel x max_y_accel, erhalten Sie diese abgerundete Beschränkung der erlaubten Beschleunigungszone. Das bedeutet, dass diagonale Bewegungen bei max_accel ausgeführt werden, anstatt dass eine der Achsenbeschränkungen angewendet wird.

Man kann dies vermeiden, indem man den max_accel-Wert auf den maximalen diagonalen Beschleunigungswert setzen, der von SET_KINEMATICS_LIMIT gemeldet wird, oder ihn selbst berechnen, indem man sqrt(a_x2 + a_y2) verwendet. Dies geschieht nicht automatisch, da die Begrenzung der diagonalen Beschleunigung nützlich sein kann.

Wenn jedoch der Slicer eine niedrigere Beschleunigung während des Drucks festlegt, erhält man wieder diese Begrenzung. Argumentiert werden könnte, dass dies das gewünschte Verhalten ist: Hochgeschwindigkeits-Bewegungen werden auf die Achsenbeschränkungen begrenzt, während langsamere Extrusionsbewegungen nicht von ihrer Ausrichtung beeinflusst werden und somit inkonsistente Extrusionen aufgrund variabler Beschleunigung vermieden werden. (In der Abbildung werden Extrusionsbewegungen auf einem kleineren gestrichelten Kreis ausgeführt, der die Achsenbeschränkungen nicht berührt). Das oben Gesagte gilt nur, wenn scale_xy_accel (wird weiter unten erklärt) deaktiviert ist (der Standard). Wenn die Skalierung aktiviert ist, werden die x/y-Beschleunigungsgrenzen bei einer Änderung von max_accel mit skaliert. In der Abbildung kommt es, wenn die Beschleunigung reduziert wird, zu einer Annäherung der dicken dunkelroten Grenze an den Ursprung, was bedeutet, dass der erlaubte Beschleunigungsbereich verkleinert wird, aber seine Form erhalten bleibt. Dieses Skript führt zu variablen Beschleunigungen, selbst bei Extrusionsbeschleunigungen, kann aber dazu beitragen, das Ringing auf dem Druck zu reduzieren, das durch ein schweres Bett verursacht wird.

Kartesische Drucker (Bedslinger)
Installation

Link: https://raw.githubusercontent.com/Piezoid/klipper/work-peraxis/klippy/kinematics/limited_cartesian.py

Kopierbefehl

curl 'https://raw.githubusercontent.com/Piezoid/klipper/work-peraxis/klippy/kinematics/limited_cartesian.py' > ~/klipper/klippy/kinematics/limited_cartesian.py

Der Code ist als kinematische Datei abgelegt. Auf diese Weise kann die Datei unter home/pi/klipper/klippy/kinematics eingefügt und die Kinematik in der printer.cfg unter [printer] auf kinematics: limited_cartesian geändern werden.

Um die Änderungen zu aktivieren, müssen Sie den Klipper-Prozess neu starten: sudo systemctl restart klipper oder das System neu starten.

Einrichtung

Die [Printer] Sektion wird überarbeitet. Diese Variante besitzt folgende Elemente:

[printer]
kinematics: limited_cartesian Stellt die Kinematik auf unabhängige X, Y Werte um
max_velocity: 500  Berechneter Wert [√(x² + y²)]
max_x_velocity: 400 gewünschter maximaler x Geschwindigkeitswert
max_y_velocity: 300 gewünschter maximaler y Geschwindigkeitswert
max_accel: 15000 Berechneter Wert [√(x² + y²)]
max_x_accel: 12000 gewünschter maximaler x Geschwindigkeitswert
max_y_accel: 9000 gewünschter maximaler y Beschleunigungswert
scale_xy_accel: [True/False, default False]

True: Die im Slicer hinterlegten Beschleunigungswerte werden um das jeweilige Verhältnis heruntergerechnet

False: Sind die im Slicer hinterlegten Werte kleiner, so werden die max_x und max_y Werte  dadurch ersetzt.

Beispiel

Slicer:
Beschleunigungswerte werden nicht festgesetzt oder nur für Druckzeitberechnung genutzt.

Klipper:
[printer]
kinematics: limited_cartesian
max_velocity: 333   # Hypotenuse von X,Y [√(x² + y²)]
max_x_velocity: 250
max_y_velocity: 200

max_accel: 5609
max_accel_to_decel: 5609
max_x_accel: 5000
max_y_accel: 1100
scale_xy_accel: false #set to false, true is usefull to combine with slicer settings

max_z_velocity: 40
max_z_accel: 100

Auswirkung:

  • kinematics: Dieser Parameter bestimmt das kinematische Modell des Druckers. In diesem Fall ist es auf limited_cartesian gesetzt. Dies bedeutet, dass der Drucker in einer kartesischen (d.h., x, y, z) Koordinatensystem arbeitet, aber mit bestimmten Geschwindigkeits- und Beschleunigungslimits.

  • max_velocity: Dieser Parameter legt die maximale Geschwindigkeit des Druckers in mm/s fest. In diesem Fall ist die maximale Geschwindigkeit auf 333 mm/s eingestellt.

  • max_x_velocity: Dieser Parameter legt die maximale Geschwindigkeit auf der X-Achse in mm/s fest. Hier ist die maximale Geschwindigkeit auf der X-Achse auf 250 mm/s eingestellt.

  • max_y_velocity: Dieser Parameter legt die maximale Geschwindigkeit auf der Y-Achse in mm/s fest. Hier ist die maximale Geschwindigkeit auf der Y-Achse auf 200 mm/s eingestellt.

  • max_accel: Dieser Parameter legt die maximale Beschleunigung des Druckers in mm/s² fest. In diesem Fall ist die maximale Beschleunigung auf 5609 mm/s² eingestellt.

  • max_accel_to_decel: Dieser Parameter legt die maximale Bremsbeschleunigung des Druckers in mm/s² fest. In diesem Fall ist die maximale Bremsbeschleunigungauf 5609 mm/s² eingestellt.
  • max_x_accel: Dieser Parameter legt die maximale Beschleunigung auf der X-Achse in mm/s² fest. Hier ist die maximale Beschleunigung auf der X-Achse auf 5000 mm/s² eingestellt.

  • max_y_accel: Dieser Parameter legt die maximale Beschleunigung auf der Y-Achse in mm/s² fest. Hier ist die maximale Beschleunigung auf der Y-Achse auf 1100mm/s² eingestellt.

  • scale_xy_accel: Dieser Parameter legt fest, ob die X- und Y-Beschleunigungswerte proportional zur Geschwindigkeit skaliert werden sollen. Wenn dieser Parameter auf false gesetzt ist (wie in diesem Fall), werden die Beschleunigungen nicht skaliert. 

Bitte beachte, dass diese Parameter stark von der spezifischen Hardware Ihres Druckers abhängen und daher angepasst werden müssen, um optimale Druckergebnisse zu erzielen.

CoreXY Drucker

Folgt demnächst.