MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.22k stars 19.22k forks source link

[BUG] Junction Deviation is Borked.... #17146

Closed DaMadOne closed 4 years ago

DaMadOne commented 4 years ago

There are numerous reports of JD affecting prints when LA is used. There has been much discussion about it and it seems the bug reports get closed due to inactivity most of the time. But something isn't right,

From left to right is Cura with JD enabled, then classic jerk. The 3rd and 4th print is Prusa Slicer both with JD enabled and without. I don't use Cura much and as such my profile is probably not that dialed in an why it doesn;t look as good..

I'm only showing it to show that the slicer used doesn't really matter much. It doesn't take a rocket scientist to see the prints with classic jerk are better.The 1st and 3rd print are jagged AF and the 2nd and 4th ones are much better.

With JD enabled the extruder goes nuts on circular prints and is very herky jerky producing the 1st and 3rd print of the Tux model that is not right.. . Without JD enabled circular prints are very smooth. Logic dictates that JD should be much better than classic jerk... but real world tests show otherwise.

I'm running an Ender 3 Pro with an SKR E3 DIP with TMC2209's.

image

I printed them with the same Marlin 2.0.4.4 firmware so configuration doesn't really matter but if you want me to post my config files then let me know.

BarsMonster commented 4 years ago

@XDA-Bam I've tested MIN_STEPS values of 16 and 6 with JD on SKR PRO. I see hardly any differences in surface quality. MIN_STEPS 16 has slightly less "noise" on the surface, but still very far from JERK quality.

Jerk surface quality is better with all MIN_STEPS values (16, 6, 1).

image

qwewer0 commented 4 years ago

@BarsMonster Could you share your test file? I would like to test it too, on SKR Mini E3 v1.2.

BarsMonster commented 4 years ago

@qwewer0 It's here: It has very high resolution, and was sliced with "Maximum deviation" of 0.002 in Cura to intentionally produce very tiny segments in g-code.

Xtest-HR.zip

swilkens commented 4 years ago

Apologies, didn't notice this was closed. Continuing here: https://github.com/MarlinFirmware/Marlin/issues/17342


Another dataset; I took the STL from @BarsMonster (https://github.com/MarlinFirmware/Marlin/issues/17146#issuecomment-612678251) and printed the same .GCODE file with JD (J=0.08) and CLASSIC_JERK. (X, Y JERK 10)

Results below. Both printed directly from SD card on SKR Mini E3 v1.2 running 2.0.5.3.

I honestly can't see a difference here. Both with #define MIN_STEPS_PER_SEGMENT 6

Naamloos

qwewer0 commented 4 years ago

With @BarsMonster test file, I can't reproduce the the issue with JD. (SKR Mini E3 v1.2)

BarsMonster commented 4 years ago

@swilkens @qwewer0 Do you have high resolution enabled in your slicer? You must have segments with length of ~0.1-0.5mm in the output to trigger the issue. With Cura you achieve that by setting Maximum Resolution ~0.2mm and maximum deviation of ~0.002mm (as an ultimate example).

As we see in the code (https://github.com/MarlinFirmware/Marlin/issues/17342#issuecomment-613798026) , with segments of 1mm or longer - issue would not be reproduced.

qwewer0 commented 4 years ago

@BarsMonster In PrusaSlicer the "Slice gap closing radius" (Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing) is set to 0.049, so maybe the max resolution would be 0.1. But the JD_single_arc_test.gcode works.

github-actions[bot] commented 4 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.