Hallo,
Interessantes Thema. Ich hatte schon früher einmal über was ähnliches geschrieben: Das Fehlen der G2 und G3 Befehle im erzeugten GCode. Ich bilde mir ein, damals schrieb ich, es waren die Programmierer von Slic3r, die diesen Ansatz (von
Arc Welder) schon einmal begonnen hatten und dann wegen zu hohem Aufwand wieder aufgaben. Vielleicht hat es dann einer der Programmierer selbst weiterentwickelt und als Plug-in herausgegeben. Egal, eigentlich wollte ich wieder was anderes ansprechen.
Ich hatte
hier auch von einer Python Datei geschrieben, die dasselbe leistet wie
Arc Welder.
Ich stimme den meisten aufgebrachten Punkten bei. Primär von Vorteil ist das Plug-in beim Drucken über USB (wie ich es tue), da weniger Daten übertragen werden müssen. Hier im Forum gab es bereits einige Beiträge bezüglich 'Stottern'. Ich glaube das wurde, wie im Video auch, auf einen vollen Befehlspuffer zurück geführt. Ich vermute sogar, dass hier die Art der Daten-Übertragung (per USB oder SD-Karte) keine große Rolle spielt. Der Prozessor der Hautplatine wird einfach, durch eine lange Folge extrem kurzer Bewegungen, an seine Grenzen getrieben - mit Stottern als Folge. Dem Problem kann man begegnen, indem weniger Daten verarbeitet werden müssen. Eine Möglichkeit bietet hier
Arc Welder. Eine weitere wäre die absichtliche Reduzierung der STL Auflösung.
Gehe ich mit der Auflösung herunter, werden, ohne
Arc Welder, besonders kleine Radien deutlich eckiger, aber auch große, lange Radien sehen eckig aus (wie im Video verdeutlicht). Wenn ich aber umgekehrt mit der Auflösung hoch gehe (als Beispiel siehe diesen
Link), können zwei Probleme entstehen. Einmal das bereits besprochene Stottern durch die hohe Datenrate, andererseits kann die Firmware ein Problem mit dem Aufsummieren der Nachkommastellen bekommen (siehe den Spoiler in diesem
Beitrag). Wenn durch die hohe Auflösung die Wegstrecken sehr kurz werden, müssen die einzelnen Extrusionswerte ebenfalls sehr klein werden. Da kann es passieren, dass der Unterschied zwischen den E-Werten kleiner als die rechnerische Auflösung des Systems wird - dann wird nicht mehr ordnungsgemäß Material gefördert.
Die Schrittmotoren fahren -theoretisch- exakte Geraden. Diese Motoren sollten eigentlich -theoretisch- ebenso exakte Kreisbögen fahren (korrekte Firmware vorausgesetzt). Wenn die Motoren keine Kreisbögen schaffen, müssten wir alle CNC-Bearbeitungsmaschinen zum Schrottplatz fahren
.
Aber es reicht völlig, wenn die geraden Teilstücke, die einen Bogen ausmachen, so klein sind, dass die resultierenden Abweichungen unter der erwarteten/erlaubten Oberflächen-Rautiefe zu liegen kommen.
mhier hat geschrieben:Wenn die Firmware echte Bögen kann, oder die Bögen in extrem kleine lineare Bewegungen zerteilt, ist das vielleicht was anderes.
Das ist die Bonusfrage (vor allem für Nibbels und RF1000):
Wie werden der G2 und G3 Befehl in der Firmware abgearbeitet? Wenn dort erst wieder ein Bogen durch mehrere Geraden angenähert wird, würde
Arc Welder, durch die unnötige zusätzliche Berechnung, eher der Genauigkeit abträglich sein.
EDIT: Eine mögliche Antwort auf die Bonusfrage habe ich eben
hier gefunden:
Nibbels hat geschrieben:Schaut man sich die Funktion
PrintLine::arc(float *position, float *target, float *offset, float radius, uint8_t isclockwise)
genau an, sieht man ein paar Dinge, die man evtl. nicht so erwarten würde:
- Auch hier wird die Bahn in kleinste Teilstücke zerteilt.
- Hardcoded: Ist ein Kreisstück < 0.001mm lang wird es ignoriert.
- Es wird anhand einer festen Feedrate-Konstante von 60mm/s unterschieden, ob größere oder kleinere Segmente verwendet werden.
Gesundheit allerseits,
mjh11