Arc Welder Plugin
-
- Gelegenheitsdrucker
- Beiträge: 39
- Registriert: Fr 26. Jun 2020, 16:24
- Has thanked: 12 times
- Been thanked: 3 times
Arc Welder Plugin
Hat jemand schon Erfahrungen mit dem Arc Welder Plugin gemacht? Damit sollen wohl sehr gute Ergebnisse erzielt werden können, in Bezug auf glatteres Aussehen der gedruckten Objekte:
Hier mal ein Video:
https://www.youtube.com/watch?v=18uYYXecH5g
Hier mal ein Video:
https://www.youtube.com/watch?v=18uYYXecH5g
- Mendelson
- 3D-Drucker
- Beiträge: 98
- Registriert: Fr 25. Jan 2019, 10:06
- Wohnort: Salzburg
- Has thanked: 28 times
- Been thanked: 28 times
Re: Arc Welder Plugin
Klingt interessant. Ich drucke in letzter Zeit viel Bögen und Kurven, Kegel u.s.w.
G2 und G3 scheinen auf der Community Mod Firmware zu laufen.
Jedenfalls wurde eine Bogen-Bewegung ausgeführt als ich das eingegeben habe:
G90
G28 X Y
G0 X0 Y0
G2 X40 I20
Hier ein Link zur Doku:
https://plugins.octoprint.org/plugins/arc_welder/
G2 und G3 scheinen auf der Community Mod Firmware zu laufen.
Jedenfalls wurde eine Bogen-Bewegung ausgeführt als ich das eingegeben habe:
G90
G28 X Y
G0 X0 Y0
G2 X40 I20
Hier ein Link zur Doku:
https://plugins.octoprint.org/plugins/arc_welder/
- af0815
- Donator
- Beiträge: 829
- Registriert: Di 2. Jun 2020, 14:45
- Wohnort: Burgenland
- Has thanked: 35 times
- Been thanked: 123 times
Re: Arc Welder Plugin
Jaein, interessant. Die Stepper fahren nun mal gerade. Es wird dann wieder im Drucker aufgelöst. Ja es kann allerdings gewaltige Einsparungen im GCode geben. Wenn die interpolation schon im Slicer sehr fein ist, so ist das GCode File entsprechend fett und es müssen schon viele Daten in den Drucker übertragen werden.
Grundlegend muss man sich überlegen ob es einem was bringt, ausser einen zusätzlichen Zwischenschritt des ARC-Welding. Weil soweit ich die Doku gelesen habe, macht es nicht der Slicer nativ, sondern wird als zusätzlicher Schritt nach der Erstellung durch den Slicer gemacht. Interessant wäre das IMHO eher, wenn der Slicer nativ die Bögen ausgeben würde.
Grundlegend muss man sich überlegen ob es einem was bringt, ausser einen zusätzlichen Zwischenschritt des ARC-Welding. Weil soweit ich die Doku gelesen habe, macht es nicht der Slicer nativ, sondern wird als zusätzlicher Schritt nach der Erstellung durch den Slicer gemacht. Interessant wäre das IMHO eher, wenn der Slicer nativ die Bögen ausgeben würde.
- af0815
- Donator
- Beiträge: 829
- Registriert: Di 2. Jun 2020, 14:45
- Wohnort: Burgenland
- Has thanked: 35 times
- Been thanked: 123 times
Re: Arc Welder Plugin
Ja, aber man sollte sich den ganzen Weg betrachten. Siehe meinem Post vorher. Was bringt das MIR jetzt in Summe ausser zwei zusätzlichen Wandlungen. BTW. Ich kenne das Plugin schon länger und habe mich damit beschäftigt. MIR bringt es nichts.
Wenn du von SD druckst oder seriell, so kann es DIR was bringen.
Du hast fertigen GCode aus dem Slicer, der wird untersucht ob man Kurven im GCode anlegen kann. Geht das mit einer gewissen Näherung, so wir der GCode ersetzt. Das ist kürzer, aber auch ev mit Fehlern behaftet, wenn es kein reiner Bogen ist, sondern ev. eine Ellipse. Der resultierende Code ist jetzt kürzer. In den Drucker übertrgen, muss er wieder in Bewegungen zurückgenähert werden, die die Stepper fahren können und das sind halt keine echten Bögen. Sondern das was der Slicer vorher schon mal gerechnet hat. Je nach Drucker vielleicht besser oder schlechter als der ursprüngliche Slicer.
Den meisten Vorteil hast du dann, wenn in der Übertragung Von GCode zum Drucker Probleme hast, oder von SD druckst. Auch wenn du dir viele Dateien aufheben willst. Auch dann wenn dein Drucker besonders gut Radien drucken kann.
Wenn du von SD druckst oder seriell, so kann es DIR was bringen.
Du hast fertigen GCode aus dem Slicer, der wird untersucht ob man Kurven im GCode anlegen kann. Geht das mit einer gewissen Näherung, so wir der GCode ersetzt. Das ist kürzer, aber auch ev mit Fehlern behaftet, wenn es kein reiner Bogen ist, sondern ev. eine Ellipse. Der resultierende Code ist jetzt kürzer. In den Drucker übertrgen, muss er wieder in Bewegungen zurückgenähert werden, die die Stepper fahren können und das sind halt keine echten Bögen. Sondern das was der Slicer vorher schon mal gerechnet hat. Je nach Drucker vielleicht besser oder schlechter als der ursprüngliche Slicer.
Den meisten Vorteil hast du dann, wenn in der Übertragung Von GCode zum Drucker Probleme hast, oder von SD druckst. Auch wenn du dir viele Dateien aufheben willst. Auch dann wenn dein Drucker besonders gut Radien drucken kann.
-
- Prof. Dr. des 3D-Drucks
- Beiträge: 1672
- Registriert: Fr 11. Sep 2015, 11:37
- Has thanked: 279 times
- Been thanked: 247 times
Re: Arc Welder Plugin
Da gab's gerade eine Diskussion auf der Klipper Mailingliste zu. Klipper löst intern Arcs auch wieder nur in lineare Bewegungen auf. Du würdest also lineare Bewegungen durch Bögen annähern, die dann wiederum durch lineare Bewegungen angenähert werden. Das macht es evtl. nur schlechter.
Wenn die Firmware echte Bögen kann, oder die Bögen in extrem kleine lineare Bewegungen zerteilt, ist das vielleicht was anderes. Dann könnte man aber auch im Slicer hinreichend feine Unterteilungen wählen. Die meisten Slicer haben das einstellbar. Wichtig ist auch, dass das Modell schon ausreichend feine Unterteilungen der Rundungen hat. STL kann nämlich auch keine echten Rundungen...
Gerade bei Klipper sollte es ja eben keine Probleme mit der Übertragung zwischen Octoprint und der Firmware geben, denn beides läuft auf dem selben Host.
Wenn die Firmware echte Bögen kann, oder die Bögen in extrem kleine lineare Bewegungen zerteilt, ist das vielleicht was anderes. Dann könnte man aber auch im Slicer hinreichend feine Unterteilungen wählen. Die meisten Slicer haben das einstellbar. Wichtig ist auch, dass das Modell schon ausreichend feine Unterteilungen der Rundungen hat. STL kann nämlich auch keine echten Rundungen...
Gerade bei Klipper sollte es ja eben keine Probleme mit der Übertragung zwischen Octoprint und der Firmware geben, denn beides läuft auf dem selben Host.
Gruß, Martin
Klipper Firmware für den RFx000: Klipper für RFx000 | Original-Dokumentation | Diskussion | Wiki mit Installations-Anleitung
(Ich bin in diesem Forum nicht mehr aktiv)
Klipper Firmware für den RFx000: Klipper für RFx000 | Original-Dokumentation | Diskussion | Wiki mit Installations-Anleitung
(Ich bin in diesem Forum nicht mehr aktiv)
-
- Donator
- Beiträge: 1128
- Registriert: Mi 6. Dez 2017, 13:17
- Has thanked: 46 times
- Been thanked: 239 times
Re: Arc Welder Plugin
Guten Morgen
Wie muss ich mir einen Bogen im Drucker vorstellen?
a. ein Bogen wird genügend fein segmentiert und X fährt eine Anzahl Mikroschritte und danach fährt Y eine Anzahl Mikroschritte, und so weiter.
b. beide Achsen laufen gleichzeitig.
Das kann man sicher heraus bekommen, nur fehlt mir derzeitig die Methode und vielleicht das Messmittel und wohl auch die Suchbegriffe.
... auffällig ....
Im G-Code meines Druckers steht für jede Achsbewegung eine Zeile (a?).
Im G-Code einer Zerspanungsmaschine stehen in einer Zeile mehrere Achsbewegungen für X Y Z und A oder B. (b?)
Wenn a. zutrifft, hilft eine Ehöhung der Microsteps auf 64 oder gar 128?
Gruß zero K
Wie muss ich mir einen Bogen im Drucker vorstellen?
a. ein Bogen wird genügend fein segmentiert und X fährt eine Anzahl Mikroschritte und danach fährt Y eine Anzahl Mikroschritte, und so weiter.
b. beide Achsen laufen gleichzeitig.
Das kann man sicher heraus bekommen, nur fehlt mir derzeitig die Methode und vielleicht das Messmittel und wohl auch die Suchbegriffe.
... auffällig ....
Im G-Code meines Druckers steht für jede Achsbewegung eine Zeile (a?).
Im G-Code einer Zerspanungsmaschine stehen in einer Zeile mehrere Achsbewegungen für X Y Z und A oder B. (b?)
Wenn a. zutrifft, hilft eine Ehöhung der Microsteps auf 64 oder gar 128?
Gruß zero K
-
- Prof. Dr. des 3D-Drucks
- Beiträge: 1672
- Registriert: Fr 11. Sep 2015, 11:37
- Has thanked: 279 times
- Been thanked: 247 times
Re: Arc Welder Plugin
Im Idealfall ähnlich wie eine beschleunigte Bewegung, nur dass die Beschleunigung auf beiden Achsen gegenläufig stattfindet. Theoretisch ist es denkbar, dass die "Segmentierung" dann effektiv auf dem Level einzelner Microsteps stattfindet.zero K hat geschrieben:Wie muss ich mir einen Bogen im Drucker vorstellen?
So sowie so nie. Die Achsen fahren immer gleichzeitig und koordiniert, alles andere wäre viel zu ungenau.a. ein Bogen wird genügend fein segmentiert und X fährt eine Anzahl Mikroschritte und danach fährt Y eine Anzahl Mikroschritte, und so weiter.
Ich versteh nicht genau, was du damit meinst. Im G-Code, den mein Slicer produziert, stehen durchaus Befehle wieIm G-Code meines Druckers steht für jede Achsbewegung eine Zeile (a?).
Code: Alles auswählen
G1 X55 Y66
G1 X65 Y76
Der Arc Welder berechnet jetzt aus linearen Kreisbögen-Segmenten, die der Slicer generiert hat, G2 oder G3 Befehle. Das macht nichts genauer, es spart nur G-Code-Zeilen, weil z.B. aus 100 Kreisbögen-Segmenten in 100 G-Code-Zeilen ein einzelner Befehl werden kann.
Das Microstepping hat erstmal wenig bis nichts damit zu tun. Wir sprechen hier von einer Segmentierung auf G-Code-Ebene. Wenn die Firmware tatsächlich korrekte Kreisbögen auf niedrigstem Level berechnen kann (was selbst Klipper wohl nicht tut, da braucht man vielleicht eher LinuxCNC oder professionelle Geräte), bringen Microsteps trotzdem wenig, denn es ist falsch anzunehmen, dass 128 Microsteps die 4-fache Genauigkeit von 32 Microsteps bieten. Alles was über ~8 Microsteps oder so hinausgeht (wenn überhaupt) dient nur noch der Laufruhe.Wenn a. zutrifft, hilft eine Ehöhung der Microsteps auf 64 oder gar 128?
Gruß, Martin
Klipper Firmware für den RFx000: Klipper für RFx000 | Original-Dokumentation | Diskussion | Wiki mit Installations-Anleitung
(Ich bin in diesem Forum nicht mehr aktiv)
Klipper Firmware für den RFx000: Klipper für RFx000 | Original-Dokumentation | Diskussion | Wiki mit Installations-Anleitung
(Ich bin in diesem Forum nicht mehr aktiv)
- rf1k_mjh11
- Developer
- Beiträge: 2096
- Registriert: Di 6. Jan 2015, 19:44
- Wohnort: Autriche
- Has thanked: 276 times
- Been thanked: 557 times
Re: Arc Welder Plugin
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.
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.
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:
mjh11
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.
Unzulänglichkeiten des STL Formats
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.
Das ist die Bonusfrage (vor allem für Nibbels und RF1000):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.
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:
Gesundheit allerseits,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.
mjh11
RF1000 (seit 2014) mit:
Pico Hot End (mit eigenem Bauteil- und Hot End Lüfter)
Ceran Bett
FW RF.01.47 (von Conrad, modif.)
Die Natur kontert immer sofort mit einem besseren Idioten.
Pico Hot End (mit eigenem Bauteil- und Hot End Lüfter)
Ceran Bett
FW RF.01.47 (von Conrad, modif.)
Die Natur kontert immer sofort mit einem besseren Idioten.