Blobs after changing to Duet 2



  • Hi guys

    I recently ripped out the original board of my Wanhao D6 and replaced it with a Duet 2 Wifi. So far everything on the mechanical side works just fine.

    Previously I was running Marlin 2 with linear advance and I got more or less perfect closed outer loops (Z-seam) with no protruding blobs at either the beginning or the end. There was just the little gap left from the two meeting radii of the nozzle.
    Slicer: Silmplify 3D V4.1.2 (not V5, but that's another topic...)
    Relevant Specs:
    Bondtech BMG
    Mosquito Hotend
    E motor: 25mm pancake 1.8°
    Distance between gears and nozzle: approximately 80mm capricorn lined (85A TPU no problem)

    These hardware values where not changed during the swap from Marlin to RepRap.

    Now the problem: Since the change I was not able to get rid of the blobs when closing loops. With exactly the same slicer settings which worked perfectly fine before, I now got blobs. Expected that so I tuned pressure advance. Perfect value for my setup was 0.055. Perfectly reasonable I think.
    This got rid of the blob formed when starting the the outer loop but the blob at the end remained unchanged.

    Since then I tried 4 different slicers with the same and different settings (Simplify 3D, PrusaSlicer, Cura, IdeaMaker(which I'm definitely going to switch to if S3D doesn't deliver))

    I tried slow and fast retraction speeds (30 - 80mm/s)
    low and high E acceleration (500 - 4000mm/s^2)
    low and high E jerk (5 - 50mm/s)
    Even the microstepping of the extruder (16x w/o interpolation, 32x, 64x,)
    PA values from 0 to 0.3 (0.15 and more got rid of the blobs but left holes and infill unattached to the walls)
    All combinations of retraction, wiping, coasting, negative restart distance, when to retract , when not to.

    The problem which I'm fighting is the transition from the inner loop to the outer loop. When the printer finishes the inner loop and moves out, the nozzle sort of squeezes the starting of the inner loop out at an angle. When the outer loop gets there, this "ramp" pushes out the filament and creates the blob.
    This is a video where you can see what I'm talking about:
    https://1drv.ms/v/s!Alyk1AJNCCDtlQuoWNDrPOjT2JnS?e=jv7cYa

    I really need some help I'm losing my mind between tiny cubes and cylinders.

    Those were the transitions with Marlin.
    IMG_20200201_203110.jpg

    Filament is exactly the same, it's dry, temp is way on the low end (180°C) , just a different color (Extrudr PLA NX-2)

    This is now
    VID_20200202_105722_Moment.jpg

    My current config.g

    M350 X16 Y16 Z16 I1                                  	  ; configure microstepping 16x for X / Y / Z with interpolation to 256
    
    M350 E32 I0						  ; configure microstepping 32x for E without interpolation
    
    M92 X80.0 Y80.0 Z800.0‬ E830.00                            ; set steps per mm
    
    M203 X15000.00 Y15000.00 Z1000.00 E5000.00                ; set maximum speeds (mm/min)
    
    M201 X750.00 Y750.00 Z200.00 E500           	          ; set accelerations (mm/s^2)
    
    M566 X420.00 Y420.00 Z18.00 E300            	          ; set maximum instantaneous speed changes (mm/min)
    
    M906 X800 Y800 Z800 E700 I0                               ; set motor currents (mA) and motor idle factor in per cent
    
    M84 S600                                                  ;set idle timeout
    
    M572 D0 S0.055		                                  ;set pressure advance
    
    

    I'm quite sure I'm missing something in the firmware.
    Thanks in advance for the help.



  • @PXP11 Looks like it could be a slight over temp or over extrusion issue. Are you sure you’ve used the correct settings for your thermistor? Also have you printed a single and double wall cube test to calibrate the extrusion factor?

    To be honest I’ve had bad luck with blobs from simplify 3d. With PrusaSlicer they are almost nonexistent but I keep coming back to s3d due to the custom supports and interface.



  • I'm using the slice engineering high temp thermistor. It's a preset in the configurator tool so it should be ok.
    I have the extrusion multiplier set at 97% and the 0.8mm / 0.4mm walls are all to spec.

    I think PrusaSlicer is quite powerful for beginners and intermediates but the solid infill on slopes with no real way to configure it keeps me driving nuts. And the general lack of fine tuning options (e.g. temp change at layer x) as well.


  • Moderator

    @PXP11 said in Blobs after changing to Duet 2:

    PA values from 0 to 0.3 (0.15 and more got rid of the blobs but left holes and infill unattached to the walls)

    That's normal. 0.15 sounds about right for your tube length. To get rid of the attachment gaps increase the infill and skin overlap in the slicer.



  • @Phaedrux
    Well according to https://duet3d.dozuki.com/Wiki/Pressure_advance its not.
    Also I calibrated the PA with https://marlinfw.org/tools/lin_advance/k-factor.html I just replaced all the the M900 with M572 and all the K with S. Worked perfectly. The best line was at 0.055.
    The provided python script never worked for me. It had "IndentationError" everywhere and it only went in positive X so on the last lines it was like 4.5 meters away from the start point...!

    On this print I started with 0.0 PA and went up to 0.3 in increments of 0.05 every 3mm or so.
    IMG_20200202_163144.jpg

    And here is what I think indicates that 0.15 is too high of a PA value because the infill starts to separate from the wall due to the lack of material extruded at 0.15 PA. And the tears when the loop starts are ugly and way too visible.
    IMG_20200202_163209.jpg


  • Moderator

    @PXP11 in those tests it looks like the seam position is set to random. Align it to a single point.



  • @Phaedrux
    Well yes that's the point of testing it and exposing the single transitions. It always looks better if they are aligned but I wanted to see what the individual loops look like..
    And on round parts there is never a corner to hide the seam.


  • Moderator

    yes but it's a lot easier to see the difference in pressure advance values when they are lined up.



  • @Phaedrux
    Do you think it's a PA problem then? Because to me it doesn't make sense. If I go as high as 0.15 the holes are there because of the delayed start of the outer loop, not because of the ending which is the problem. And I mean holes, there will literally be a gap and the start of the loop is underextruded because the correct pressure isn't there jet.

    My normal settings which I had before and I used on the green print from the initial post were as follows:
    Retraction: 0.4mm
    Retraction speed: 60mm/s
    Wipe: 0.2mm
    Coasting: None
    perform retraction during wipe: enabled
    K for linear advance was 0.45 (if that helps anyone here 😊 )

    Is there something RepRap handles differently when it comes to retraction and interpreting gcode? Could it have to do something with interpolation. Something how the stepper is controlled? Am I missing something basic?


  • Moderator

    All I can suggest at the moment would be to go through the tuning described in the pressure advance documentation link again.

    Tune your retraction first. 60mm/s for speed seems reasonable. 0.4mm seems a bit low for distance maybe.

    Don't use wipe or coasting in the slicer.

    Your acceleration and jerk values are quite low. I would increase them, as a slow layer transition or delay during a retraction could allow time for some oozing.

    M201 X750.00 Y750.00 Z200.00 E500           	          ; set accelerations (mm/s^2)
    M566 X420.00 Y420.00 Z18.00 E300            	          ; set maximum instantaneous speed changes (mm/min)
    

    Try these instead

    M201 X900 Y900 Z200.00 E3000           	        
    M566 X900 Y900 Z120.00 E3000            	       
    


  • @Phaedrux
    How do I make the python script work then? (http://www.sternwolken.de/tmpup/3dprint/pressureadvance2.py)
    I copy it out of the browser into Notepad++
    I change the required values line 4 to 30
    Save it in a folder as "pressureadvance2.py"
    Right click in the folder and open windows powershell
    Put in "python pressureadvance2.py > pressureadvance2.gcode"
    Hit enter
    It creates pressureadvance2.gcode but the file is empty.

    What am I doing wrong???

    If i copy the modified "pressureadvance2.py" and put it directly in python it spits out some gcode but like I said earlier I get "IndentationError: unexpected indent" and the X values which are bs.

    ; layer 99, pressure advance: 0.198
    M572 D0 S0.198
    G1 X17935.000 Y142.520 E0.7982 F6000
    G1 X17940.000 Y142.520 E0.1996 F300
    G1 X17960.000 Y142.520 E0.7982 F6000
    G1 X17980.000 Y142.520 E0.7982 F6000
    G1 X17985.000 Y142.520 E0.1996 F300
    G1 X18005.000 Y142.520 E0.7982 F6000
    G1 X18025.000 Y142.520 E0.7982 F6000
    G1 X18030.000 Y142.520 E0.1996 F300
    G1 X18050.000 Y142.520 E0.7982 F6000
    G1 X18070.000 Y142.520 E0.7982 F6000
    G1 X18075.000 Y142.520 E0.1996 F300
    G1 X18095.000 Y142.520 E0.7982 F6000
    G1 X18095.000 Y143.000 E0.0192 F6000
    

  • Moderator

    @PXP11 said in Blobs after changing to Duet 2:

    What am I doing wrong???

    I'm no python expert. I would just use the manual option to change the PA value every few layers, or to use the slicer script to have it more automated.



  • @Phaedrux
    Seems to me that the PA value of around 0.06 is actually ok.
    IMG_20200202_214352.jpg

    Well I'm kind of in a dead end right now. I'll do some further testing... maybe non linear extrusion could help?


  • Moderator

    You can use a narrower range of values to get it more dialed in. Maybe between 0.04 and 0.08 in 0.005 steps.

    I don't think non-linear extrusion will be a help at this point unless you're really on the edge of pushing your volumetric rate and are getting some filament slippage from back pressure.

    But otherwise, what are the remaining print issues with a PA value of 0.06?


  • administrators

    Please provide the GCode file for the cylindrical print that shows the blobs.

    What linear advance setting were you using in Marlin?



  • I thought acceleration and instantaneous speed change for the extruder should be higher for pressure advance to function properly? On my printers I have the acceleration for my extruder at 2000 and the instantaneous speed change at 1200.


  • administrators

    @JamesM said in Blobs after changing to Duet 2:

    I thought acceleration and instantaneous speed change for the extruder should be higher for pressure advance to function properly? On my printers I have the acceleration for my extruder at 2000 and the instantaneous speed change at 1200.

    Yes, that's true. If the E jerk and acceleration are too low, printing acceleration will be reduced so as not to exceed them when applying pressure advance.


  • administrators

    One other thing that might be worth trying is the jerk mode, which is the M556 M566 P parameter. Using P1 makes the jerk policy more like Marlin's jerk policy, at least when Marlin is not configured to use junction deviation.



  • @dc42 said in Blobs after changing to Duet 2:

    One other thing that might be worth trying is the jerk mode, which is the M556 P parameter.

    Am I correct in the assumption that you mean M566 ... P1, because M556 is Axis skew compensation? I was actually curios and wondered if Marlin and RepRap use different acceleration profiles. But as far as I can understand this setting (M566...P1) sort of tackles the same problem. Can I understand this setting sort of a smoothing parameter which allows some deviation from the path by foreseeing of the gcode lines?

    So my Marlin settings where as follows:
    Acceleration: 750 /750 /100 /500
    Jerk: (theoretically) 42 /42 /18 /30 (XY overridden by junction deviation, E by Lin advance)
    Junction Deviation: 0.02mm
    S-curve acceleration: enabled
    Linear advance: K0.056

    I tried the higher numbers for Z and E:

    M201 X750.00 Y750.00 Z200.00 E3000
    M566 X600.00 Y600.00 Z240.00 E3000
    

    The result was only marginally improved, still bad.

    Here is the gcode from the little cylinder: test_cylinder.gcode
    One of the problematic retractions would be at line 1708:

    1706 G1 X73.815 Y39.038 E0.0126
    1707 G1 X73.423 Y39.109 E0.0126
    *1708 G1 X73.369 Y39.116 E-0.4000 F657
    1709 G1 X73.224 Y39.134 F657
    1710 ; feature infill
    1711 ; tool H0.200 W0.600
    1712 G1 X65.834 Y32.721 F15000
    1713 G1 E0.4000 F4800
    1714 G1 X73.147 Y25.409 E0.4902 F1642
    1715 G1 X73.287 Y25.426 E0.0067
    1716 G1 X73.660 Y25.493 E0.0179
    
    

    This is a retraction during wipe movement. S3D calculates the resulting move between wipe and retraction distance. In conjunction with the printing speed this gives the resulting (low) feed (E speed was set @80mm/s).This was always this way and has worked for me so far.

    @dc42
    Is there something similar to Junction Deviation in RRF, because you mention M566P1 is like Marlin without it?


  • administrators

    @PXP11 said in Blobs after changing to Duet 2:

    Am I correct in the assumption that you mean M566 ... P1

    Yes, sorry.

    @PXP11 said in Blobs after changing to Duet 2:

    Is there something similar to Junction Deviation in RRF, because you mention M566P1 is like Marlin without it?

    Not yet, but it will come. The main difference with JD is how the amount of jerk allowed varies with cornering angle.


  • Moderator

    @dc42 Can you describe what the difference between M566 P1 and P0 actually is? I think I get better results with P1, but maybe I'm not clear about what it's actually doing differently.

    https://duet3d.dozuki.com/Wiki/Gcode#Section_M566_Set_allowable_instantaneous_speed_change

    The default jerk policy is 0, which replicates the behaviour of earlier versions of RRF (jerk is only applied between two printing moves, or between two travel moves, and only if they both involve XY movement or neither does). Changing the jerk policy to 1 allows jerk to be applied between any pair of moves.

    Does that mean that the transition between a print move to a travel move will be faster or slower? I take it to mean that P0 there is no jerk applied between a print move to a travel move, so it would come to a full stop? But with P1, the X Y jerk would be applied allowing for less of a slow down?



  • After some testing with M566P1 I noticed instant differences. Firstly the extruder was snappy as f***. Actually started skipping steps because of the high jerk. Went back to 1500mm/s, worked fine after that, still might be a bit too much to the point where it is not retracting but ripping apart the filament inside the hot zone.
    Here is the video from the small cylinder, same gcode: https://1drv.ms/v/s!Alyk1AJNCCDtlQzyyP3EWgJVEntP

    The following cubes were done with four different slicers. As far as possible with the same settings. 0.4mm retraction @60mm/s 0.2mm wipe.

    S3D
    IMG_20200206_172839.jpg

    IdeaMaker
    IMG_20200206_172846.jpg

    PrusaSlicer
    IMG_20200206_172850.jpg

    Cura
    IMG_20200206_172853.jpg

    Prusa looked the best as far as the z-seam (or lack there of) goes. Over all Ideamaker gives the best whole picture. I'm sure I can improove the quality even further.

    I'll be doing some more test with different filaments and M593 DAA so I can go higher on XY acc and jerk to further reduce time spent over areas while retracting (without inducing artifacts on other areas).


  • administrators

    @PXP11, thanks for that. Is it your opinion that using M566 P1 has solved the problem, and your prints are no longer worse than they were using Marlin?



  • @dc42
    Well M566P1 changed the movement behaviour a lot. To the better that is. I don't know why this is not yet the standart when using the configurator tool.
    Quality wise I'm not quite there yet but I'm sure some further tweaking will get me the same if not better results than Marlin. Even if not, RRF has spoiled me and I'm never going to switch back.

    Thanks for the valuable tip.


Log in to reply