Open thierryzoller opened 4 years ago
Nachdem ich M503 an den Drucker geschickt habe bermerke ich dass JD so oder so dann auf 0.01 steht da die dritte nachkomma stelle gar nicht in betrach gezogen wird?
Die 0.013 wurden ohne großes Überlegen einfach übernommen, weil es in allen anderen SWX1-Firmwares, die wir so finden konnten, schlicht und einfach auch so war und wir keine Probleme damit hatten.
Ehrlicherweise habe ich persönlich mit der JD aber auch noch nicht großartig rum gespielt.
Ändern ließe sich diese problemlos per
M205 J0.018
Falls du da andere Werte nutzen möchtest.
Anschließend
M500
zum Speichern in den EEPROM
Die fehlende dritte Nachkommastelle ist nur eine Kürzung/Rundung in der Ausgabe (klingt nach Octoprint) - Bei den Steps z.B. werden auch die dritten Nachkommastellen nicht in Octoprint angezeigt, sehr wohl aber in den EEPROM geschrieben. Intern rechnet Marlin sehr wohl mit der dritten Stelle.
Woher kommt deine Formel? Möchtest du näheres zu deinen Erfahrungen bezüglich JD mitteilen?
In Marlin selber unter der def. für Junction Deviation steht ein link [1] - wenn man diesen nimmt und rechnet käme mann auf 0.466 / 800 = 0.018 und nicht 0.013.
Pronterface gibt mir 0.01 zurück - sicher dass es dies nur abrundet ?
Ich musste JD komplette deaktivieren, es kommt zu massiven Problemen mit CURA und teilweise auch mit Slic3r. Die Marlin Issue liste ist voll davon. Ein rundes Rohr zu drucken dann ziter der kopf hin und her.
[1] /**
Mir ist nicht ganz klar, woher du den Jerk = 6 beziehst
Nach der Formel im zweiten Link wäre
d = 0,4 * Jerk² / Acceleration
#define DEFAULT_ACCELERATION 800 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 10000 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves
//#define CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
#define DEFAULT_XJERK 8.0
#define DEFAULT_YJERK 8.0
#define DEFAULT_ZJERK 0.3
0,4 8 8 / 800 = 25,6 / 800 = 0,032
Das wäre der Fall, wenn CLASSIC_JERK aktiviert wäre - ist er aber ja nicht. (stattdessen JD)
#if DISABLED(CLASSIC_JERK)
#define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge
#endif
Rückwärts gerechnet hieße das d = 0,4 * Jerk² / Acceleration
Jerk = sqrt((d Acceleration) / 0,4) Jerk = sqrt((0,013 800) / 0,4 = sqrt(26) = 5,099
Was m.E. letztendlich bedeutet, dass JD in diesem Fall mit einem Jerk (Ruck) von 5,1 rechnet. Sinn von JD ist es aber ja die Beschleunigung (Acceleration) und den Ruck (Jerk) an die aktuellen Winkel anzupassen, was über einen Grund-Faktor (JunctionDeviation) passieren muss.
Je kleiner die JD eingestellt ist, desto langsamer werden scharfe Winkel angefahren. Das kann Vor- aber auch Nachteile haben. Zum Beispiel: Zu schnell = Das Filament wird in die Kurve "geschmissen" -> Ecken werden rund Zu langsam = die Nozzle steht zu lang auf einem Punkt, das darunter liegende Filament wird wieder geschmolzen, alles verläuft.
Es verhält sich also wie mit dem Jerk - man muss spielen um sein optimales Ergebnis zu finden - da gibt es keinen 100%igen Wert, der bei jedem Drucker gleich wäre.
Ändern kann man, wie oben erwähnt, den JD-Wert recht simpel über die Konsole mit
M205 J0.013
Willst du JD komplett deaktivieren, musst du die Firmware neu kompilieren und in der configuration.h die Zeile
//#define CLASSIC_JERK
auskommentieren bzw. aktivieren.
Danach logischerweise neu flashen.
Anschließend würdest du wieder mit klassischem Acc/Jerk-Verfahren drucken.
In der "original-Artillery-Marlin" (V1.1.9) wurde noch classic-jerk genutzt. Bei Marlin selbst ist CLASSIC_JERK seit V2.0.0 (12/19) deaktiviert und somit JD aktiv (übrigens auch per default mit 0.013). Implementiert ist JD seit V1.1.9 (07/18) - damals noch default deaktiviert.
Es schien sich durchgesetzt zu haben, somit wurde es default. Das haben wir hier letzten Endes einfach übernommen.
Ich habe dir hier mal die aktuelle Version aus dieser Repo kompiliert und nichts anderes daran geändert als den CLASSIC_JERK zu aktivieren und damit die JUNCTION_DEVIATION auszuhebeln.
ASWX1-FW-MOD_V1.2_classic_jerk.zip
Wenn du möchtest kannst du diese FW einfach mal flashen und berichten, ob sich das Verhalten verbessert.
Die Acceleration- und Jerk-Werte dieser Version hier stimmen mit der ausgelieferten "original-Artillery-Marlin-FW" überein:
#define DEFAULT_ACCELERATION 800 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 10000 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves
#define DEFAULT_XJERK 8.0
#define DEFAULT_YJERK 8.0
#define DEFAULT_ZJERK 0.3
#define DEFAULT_EJERK 5.0
Bezüglich der Nachkommastellen bin ich mir sicher, dass ich das schon mal gesucht und gefunden habe, weil mich die Ausgabe der M503 auch in manchen Werten wunderte - auf die Schnelle finde ich es aber nicht mehr wieder.
Vielen Lieben Dank für die Informationen und erklärungen. Das Problem ist ohne JD verschwunden. Die Jerk values von 0.6 ist ein überbleibsel von der Waggster Mod, d.h. auch die "falsche" Rechnung.
Hier einer der Bug Reports zu dem Thema - es scheint gewisse parameter zu geben die zu problemen führen welche wissen wir nicht: https://github.com/MarlinFirmware/Marlin/issues/17342#issuecomment-612029989
Interessant ist auch die 5,1 die du errechnet hast wegen:
Kannst du mal ein paar Bilder von Vergleichen mit/ohne JD liefern?
Vielleicht wäre es ja tatsächlich eine Idee in diesem Mod die JD wieder komplett zu deaktivieren, wenn es nachweislich Probleme damit gibt. Ich habe selber momentan leider keine Zeit und Muße es selbst durch zu probieren - Mein Drucker muss erstmal pausieren.
Fehler scheint gefunden zu sein: https://github.com/XDA-Bam/Marlin/commit/c673b8b0d6a22ce1721a1be2d43ae8d3d2ce13b8
hast du es damit mal getestet?
Naja es geht weiter "Add a warning on LA + S-Curve" https://github.com/MarlinFirmware/Marlin/commit/c3946dd0174b63136f9c8437ca159a17ddc68512?fbclid=IwAR0Mdk3qglZT9gv9CTdc7e--DY5fr3z-QA211ujVDd0DYSA4tA_GY1y7JEI Siehe https://github.com/MarlinFirmware/Marlin/issues/14728
Ich habe mittlerweile S-Curve und JD deaktiviert und die besten Ergebnisse erzielt. Bilder folgen vielleicht. Mittlerweil kämpft ich mit ZBanding, anderes Thema.
Ich hatte die gleichen Probleme und habe es auch deaktiviert.
Vielleicht wäre es ja tatsächlich eine Idee in diesem Mod die JD wieder komplett zu deaktivieren, wenn es nachweislich Probleme damit gibt.
Dafür 👍 Edit: Ich verwende Simplify3D, ist m.M.n. aber unabhängig vom Slicer.
Das problem wurde in marlin behoben (anscheinend)
I see that JD is set to 0.013 - how did you get to this value knowing that 0.466 / 800 = 0.018 ? Is this working better ?
define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge