• Willkommen zur 3D-Druck-Community, einer nichtkommerziellen,
  • werbefreien und privaten Plattform rund um das Thema 3D-Drucken
  • vorrangig im deutschsprachigen Raum. Von User für User.
Hallo, Gast! Anmelden Registrieren


Themabewertung:
  • 1 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Neues Marlin Feature "LIN_ADVANCE"
#1
Hey,

habe beim Upgrade auf die Marlin RC8 Firmware ein neues Feature entdeckt.
(Wurde schon in der RC7 hinzugefügt)

Linear Advance extrusion algorithm

Laut Documentation scheint es ja sehr vielversprechend zu sein.

Schärfere Kanten, besserer Rectract etc.


Ich bin leider noch nicht druckbereit und wollt mal in die runde fragen ob es schon erfahrungen gibt.

Eine vorkonfigurierte RC8 für den MKC hab ich in meinem Buildlog angehängt.
 
Reply to top
#2
aeh ja, das hat selber der makerbot schon.

im prinzip das gegenstück in der firmware zu coast at end bei S3D.

Leider ist die wirkung abhängig von der druckgeschwindgkeit und beschleunigung, so das man keine "gut für alles" einstellung machen kann.
 
Reply to top
#3
Ich habe das auch so verstanden, dass ein Federkonstantenwert für das Federverhalten des gesamten Fördermechanismus angenommen wird, um die Extrusion entsprechend zu stoppen.
Wird hierbei ggf. auch noch die Geschwindigkeit reduziert, um dem Entspannen der "Feder" und dem linearen Abfallen des entsprechenden "Federdrucks" Rechnung zu tragen?

Was mache ich nun, wenn ich beides habe: in der Firmware eintragen und kalibrieren, im Slicer "Coast at End" abschalten?
So wäre man flexibler, wenn man vierschiedene Slicer benutzen möchte.

Die beiden Einstellungen dürften sich doch sonst ins Gehege kommen, oder nicht?
 
Reply to top
#4
Kann sein, dann mach coast at end aus.
[Bild: https://www.thank.li/JuculianD.png]
Hilf auch und trage Dich in die Usermap ein!
 
Reply to top
#5
Ich möchte die Frage nochmal aufgreifen:
Welche Einstellungen werden priorisiert behandelt? Den vom Slicer erstellte GCode oder der Firmware?
Gibt es da überhaupt Überschneidungen?
 
Reply to top
#6
Ich kann es Dir nicht genau sagen, aber ich vermute, dass Marlin den Gcode einfach abliest und diesen dann noch damit bearbeitet.
Probiere es doch einfach aus.
[Bild: https://www.thank.li/JuculianD.png]
Hilf auch und trage Dich in die Usermap ein!
 
Reply to top
#7
Ergänzung:

Eintrag im Marlin Wiki.
Sollte natürlich der erste Anlaufpunkt sein: http://marlinfw.org/docs/features/lin_advance.html

(huch. Falsch geklickt, Beitrag war noch gar nicht fertig...)

Da steht:
Zitat:Some slicers have options to control the nozzle pressure in some ways. Common names are: Pressure advance, Coast at end, extra restart length after retract. Disable them all! The firmware will do a much better job than the best slicer can do, and they would influence themselves in a bad way. I also strongly recommend to disable further features like wipe while retract. You can try to enable it again after you have calibrated your
Code:
K
factor (see next step), but I guess you don’t need it anymore.
Insgesamt sehr lesenswert, da fange ich erstmal an, mich durchzuwühlen.
Grüße,
Peter
 
Reply to top
#8
Und? Hast du mal den Linear Advance extrusion algorithm ausprobiert?
 
Reply to top
#9
Ich möchte das Thema nochmal aufgreifen, da einige es mittlerweile erfolgreich benutzen.
(29.04.2017, 18:56)ScorpionTDL schrieb: Habe es jetzt durch Zufall scheinbar zumindest für ABS in den griff bekommen (PLA habe ich mit den neuen Settings noch nicht getestet).
Und zwar tatsächlich über diese "Linear Advance Extrusion algorithm" Funktion.

Mich intessieren in erster Linie Eure Setting und Setup (Drucker, Bowdenlänge, Material, retrac-settings, K-Faktor, ...).
Da der K-Faktor ja jederzeit auch während des Drucks varriert werden kann, kann man schön den Effekt sehen.
Code:
M905 K 200

Man muss aber wissen, dass dadurch der retract extremer ausfällt und dieser daher vorher(!) schon gering wie möglich sein seollte.
 
Reply to top
#10
Nachdem TylonHH hier schon einen Beitrag aus einem anderen Thread von mir Zitiert hat und paradroid mich in einem Andrern Thread gebeten hatte doch mal ein paar Worte explizit zu dem Thema zu verlieren, habe ich mich endlich mal darangesetzt und mich Systematisch mit der Funktion „Linear Advance extrusion algorithm“ beschäftigt.
 
Bei meinen nachfolgenden Ausführungen bitte beachten: Ich erhebe keinerlei Anspruch auf die Richtigkeit der Aussagen. Größtenteils sind es einfach nur die Beobachtungen die ich bei meinen Tests gemacht habe. Ich beschäftige mich seit Anfang 2017 mit dem Thema 3D Druck und kann nun wirklich nicht als experte auf dem Gebiet gelten.
Zum Hintergrund wieso ich mich mit diesem Thema hier beschäftigt habe schaut ihr am besten kurz in diesem Thread vorbei: http://www.3d-druck-community.de/thread-16186.html
 
Die Problemstellung ganz kurz zusammengefasst: Bei hohen Druckgeschwindigkeiten (>100mm/s) werden langsame Kurven deutlich zu fett gedruckt während schnell gezogene Geraden deutlich zu dünn werden.
 
Auf der Suche nach einer Lösung bin ich unter anderem über diesen Thread hier gestolpert und die Funktion hat sich für mich sehr Plausibel angehört, also habe ich angefangen damit zu experimentieren. Für diesen Thread habe ich dann noch  mal ganz am anfang angefangen und versucht meine Ergebnisse Schritt für Schritt zu dokumentieren.
 
Zunächst einmal ganz allgemein.
 
Detailinformationen findet ihr unter http://marlinfw.org/docs/features/lin_advance.html
Kurz zusammengefasst geht es darum, dass der Druck in der Düse, die Flexiblilität des Filaments und des Bowdens über eine Federkonstante berücksichtigt werden sollen. Mit dem Ziel ein gleichbleibender Druck & Materialausschub aus der Düse auch bei wechselnden Geschwindigkeiten zu erhalten.
 
Wie aktiviert man das Ganze:
In der Configuration_adv.h folgende Zeilen ändern:
Code:
//#define LIN_ADVANCE

#if ENABLED(LIN_ADVANCE)
#define LIN_ADVANCE_K 75
#endif

zu

Code:
#define LIN_ADVANCE

#if ENABLED(LIN_ADVANCE)
#define LIN_ADVANCE_K 0
#endif
 
Ändern.
 
Damit ist die Funktion freigeschaltet aber erst einmal nicht aktiv, da der K Wert auf 0 gesetzt ist. Ab jetzt kann der K wert über den Befehl M905 jederzeit gesetzt werden.
Zb im Start script über:
M905 K 100
 
Dadurch kann man schön damit spielen und nach einem Neustart ist alles wieder beim alten.
 
 
 
Ausgangssituation:
MKC MK2, weitestgehend nach BOM gebaut.
TCM 2100 Motortreiber
MAPA 0,4mm Düse
Der Rest vom Hotend Original E3D

Als Material wurde blaues ABS von Material4Print verwendet. Nach meinen bisherigen Erfahrungen lässt es ich aber auch auf deren PLA übertragen.

Gesliced wird in Simplify3D mit diesen Settings (werden im laufe der Tests angepast, hier meine start Settings):
 
Noozle Diameter = 0,38
Extrusion Multiplier = 0,99
Filament diameter = 1,73
Retraction Distance = 2,5
Extra Restart Distance = 0,0
Retraction Vertical Lift = 0
Retraction Speed = 30,0
 
Default Printing Speed = 200
Outline Underspeed = 100
Solid Infill Underspeed = 70
Only retract wen crossing open spaces = active
Force retraction between layers = active
Adjust printing speed for layers below x seconds = deactivated
 
Dazu folgende Settings im Startscript:

Code:
M201 X1000 Y1000 Z1000 E10000 ;Set max printing acceleration
M203 X500.00 Y500.00 Z80.00 E100.00 ;Set maximum feedrate
M204 P3000 T3000 R10000 ;Set default acceleration
M205 S0.00 T0.00 B20000 X20.00 Y20.00 Z0.40 E5.00 ;Advanced settings

 
 
Mit den Einstellungen bin ich bis 60mm/s absolut zufrieden, bis 80 geht auch noch, ab 100mm/s fange ich an die Probleme so zu sehen, dass sie mich stören.
Generell sieht man die Wirkung am deutlichsten je höher die Geschwindigkeit ist. Daher ist die Geschwindigkeit mit 200mm/s absichtlich recht hoch gewählt und der Outline Underspeed absichtlich auf 100% und die Reduzierung bei kurzen layern deaktiviert. Er soll wirklich die 200mm/s fahren. Das sind keine Settings mit denen ich normalerweise drucken würde. Aber wir wollen ja was sehen.
Als druck Objekt habe ich für die erste Runde die normale Stapelbox im Vase Mode hergenommen. Nur die ersten 10mm davon, ohne bottom und top layer, da uns erst einmal nur interessiert wie eine einzelne Line gedruckt wird und dort speziell der Unterschied zwischen Kurve und Gerade.
 
Also auf gehts. Erster Lauf. K=0:
   

   


K=100:
   

   


K=200:
   

   


K=300
   

   


Bei K=0 sieht man deutlich wie in den Kurven extrem zu viel Material gefördert wird, besonders in der Seitenansicht.
Mit 100 wird es besser, mit 200 noch etwas besser und 300 ist dann deutlich zu wenig so das Lücken entstehen. Allerdings sieht man auch, dass es trotzdem nicht 100% gleichmäßig wird. 
Ich habe mich nach einigen weiteren Tests auf 175 fest gelegt als den besten Kompromiss.

Danach wollte ich sehen wie es sich auf der Fläche verhält. Also zwei Würfel gedruckt, einen mit K=0, einen mit K=175.
Die Würfel 40x40x4 mit 2 Perimeter, 2 bottom und 5 top layern. 

   
Im direkten Vergleich sieht man deutlich, wie sich beim linken Würfel die langen Gerade nach innen ziehen und der Toplayer zu den Enden der Bahn hin anhäufen. Der rechte Dagegen sieht deutlich gleichmäßiger aus. Wenn man im Licht mit dem Würfel spielt sieht man es noch deutlicher. Auch haben sich mit K=0 die Top Layer in der Mitte deutlich später geschlossen als mit K=175.

Allerdings zeigt die Seite des Würfels auch die ersten Probleme:
   
Es sieht fast so aus als hätte er Förderprobleme. Das geht runherum so, immer auf unterschiedlichen Ebenen. Ich hatte die Layer Startposition auf Optimiert gestellt, so das der Layer Anfang immer reihum ging. Da es pro layer genau einmal auftritt liegt die Vermutung nahe, dass es entweder am Anfang oder am Ende passiert.
Daher der nächste Test mit fixer Layer Startposition:
   
Beim druck beobachtet wo der Layer anfängt. Und es ist tatsächlich der Start des Layers der Probleme macht.
Bei der Stapelbox im Vase mode gibt es ja in dem Sinne keinen Layer Anfang. Also im G-Code Preview von S3D nachgeschaut was er denn an der Stelle macht anders macht.
- der untere Layer geht zu ende.
- ein Travel ohne Retrac vom Endpunkt zum Startpunkt
- Z wird bewegt, zusammen mit einem Retrac
- der neue Layer wird gestartet

zuerst hatte ich den Retrac während dem Layer wechsel im Verdacht, die Option also in S3D deaktiviert (und damit es schneller geht den Würfel auf 5mm in der Höhe reduziert):
   
Das Problem ist ehr schlimmer als besser geworden.

Also Retrac beim Layer wechsel wieder aktiviert, dafür die Option "Only rectact wenn crossing open spaces" deaktiviert. So das für den travel zwischen Ende und Startpunkt ein Retrac durchgeführt wird.
   
Und tatsächlich, das Problem ist weg. 

Beim beobachten vom druck konnte man sehen, dass beim Travel ohne Retrac material im Infill hängen bliebt, ich schätze das hat ihm dann am Layer Start gefehlt. 

Zu guter Letzt noch einmal das Teil aus meinem original Thread. Mit 200mm/s und 60% Outline Underspeed
K=0:
   

K=175:
   


Fazit für mich:
Bei meinem Drucker hilft die Funktion "Linear Advance extrusion algorithm" Extrem gut wenn ich schneller als 100mm/s drucken will. Die 200mm/s waren eigentlich nur zum testen gedacht, ich bin aber erstaunt wie gut die Ergebnisse dafür geworden sind. Sie kommen nicht an das heran was der Drucker bei 60mm/s liefert, aber sie sind größtenteils deutlich besser als das was ich von anderen Druckern schon gesehen habe. 
Wichtig ist, dass bei jedem travel move vorher ein Retrac durchgeführt wird. Ansonsten fehlt im beim weiter drucken das Material, was er während dem Travel verloren hat. 
In wie weit sich der Retrac reduzieren lässt, habe ich jetzt noch nicht getestet, laut Beschreibung müsste man mit dem runter gehen können. Allerdings habe ich da gerade kein gutes Beispiel parat an dem ich das schnell testen könnte. 

In wie weit sich das ganze im Alltag bewährt und wie stark man an dem K Parameter bei anderen Materialien noch drehen muss wird sich erst mit der Zeit zeigen. 

Ich hoffe meine Ausführungen sind für den ein oder anderen Hilfreich gewesen. Falls noch fragen sind, oder ich irgendwo wichtige Informationen vergessen habe, lasst es mich Wissen.

Es würde mich auch brennend interessieren wie eure Ergebnisse zu dem Thema ausfallen.
Grüße,
Klaus
 
Reply to top
  




Browsing: 1 Gast/Gäste