Jump to content

How to improve layer adhesion after Pause at Layer/Height script


jetfire158

Recommended Posts

Posted (edited) · How to improve layer adhesion after Pause at Layer/Height script

Hi I am trying to print 2 colors on a model using a Pause at Height script in Cura. However, I seem to be having a problem with poor layer adhesion after the switch, and the printer also seems to be misaligning the layers (see attached picture). I checked "redo layer" in the Pause at Layer settings, and I am extruding all of the old filament out of the nozzle before resuming the print. I'm using a Qidi X-Plus printer. 

 

Can anyone help?

20220919_191509.jpg

XP_Jedi.3mf

Edited by jetfire158
  • Link to post
    Share on other sites

    Posted · How to improve layer adhesion after Pause at Layer/Height script

    These are the last two lines before Cura puts the pause code in.

    G1 F2100 E362.18397 > This is the last E location
    G0 F9000 X144.442 Y126.314 > This is the last XY and is the start point of the first extrusion after the pause.

    ....after the pause...

    G1 F9000 X144.442 Y126.314 > This line moves the print head back to the start point of that first extrusion
    G1 F300 Z2.2 ; move back down to resume height
    G1 F2100 E125
    G1 F2100 ; restore extrusion feedrate
    M82 ; switch back to absolute E values
    G92 E362.18397  > And this line syncs the extruder back to the gcode.

     

    One of the problems you can incur during a pause is allowing the steppers to disable and lose their position information.  The printer actually requires an Auto-Home to fix the problem but the end stop switches on most printers aren't real repeatable.  X0 Y0 may not be the same exact point in space that it was prior to the pause.  You could get a layer shift of up to around .5mm in the X, the Y, or both.

    You never want to have to drop the Z with a print on the plate.  It often requires careful planning so it would happen in a position that the print head and gantry don't whack the print.

     

    The default stepper time out on my Ender is 120 seconds.  The Pause At Height dialog has "Disarm Timeout" which you can use to change the printer setting for the current print only.  The Max is 1800 seconds (30 minutes) and I suggest you set Disarm Timeout to 1800.  If you leave it at 0 then the default will be used and in my case if I don't finish the filament change in 2 minutes the steppers will disarm and lose their location.  The print will start, but where the nozzle is becomes a guess.  If that is what happened then the X, Y, and Z on the LCD may be blinking.

    • Like 1
    Link to post
    Share on other sites

    Posted (edited) · How to improve layer adhesion after Pause at Layer/Height script

    It's in the firmware and all you can do is Auto-Home and then time how long it takes for the steppers to time out and disable.  M84/M18 are identical and the settings don't show up in an M503 query.  As far as I know there is no way to ask the firmware what the default setting is.

    If you set the disarm timeout to 1800 in Pause at Height then when the print ends and sees the M84 line in the ending gcode - that will reset the disarm timeout to whatever the default is.  The disarm time can be temporarily adjusted but there is no way to save a new default.

    Edited by GregValiant
    • Like 1
    Link to post
    Share on other sites

    Posted · How to improve layer adhesion after Pause at Layer/Height script

    Thanks! Great advice. You were absolutely right, setting the disarm timeout to 1800 fixed the misalignment problem. Just have to be very careful when switching filaments not to bump the extruder and touch it as little as possible. 

     

    As for the rest of it, thanks to advice from someone on the Qidi Discord server I got it work to a satisfactory level. For the sake of anyone else who might come here searching for answers, when printing a model like the one pictured (base with color 1 + design with color 2) you can't put the pause right after finishing the base layers. The design will not stick, because when you pause to switch filament, the model will cool, reducing adhesion. Layers that are similar in structure adhere better than layers that are not similar in structure, so in my case printing the first layer of the design before the switch fixed the issue. If you reduce the layer height to a low value, this small discrepancy in the color pattern will not really be visible. This is easiest done in Cura by using the "Pause at Layer" option in the "Pause at Height" dialog. Slice your model and use Layer view to count the number of layers in the design, and select the number of the first design layer to pause at. E.g. if your "base" is 30 layers and your design starts at layer 31, instruct the printer to pause after layer 31. 

     

    When it's time to perform the switch, do it as quickly and carefully as possible as well, to avoid the model cooling too much as that will cause poor adhesion and subsequent layer separation. 

  • Link to post
    Share on other sites

    • 6 months later...
    Posted · How to improve layer adhesion after Pause at Layer/Height script

    Could this also be a result of homing offset? Im having a problem where its 1 mm to the left and up about the same amount on the x and y axis. Besides that it works great.

  • Link to post
    Share on other sites

    Posted · How to improve layer adhesion after Pause at Layer/Height script

    Welcome to gcode 101.  The snippet below is the pause code that Cura added to a file.  I've added some notes in italics.

     

    G1 F2100 E408.26493   >>>This is the last E value before the pause.
    ;MESH:NOMESH
    G0 F600 X92.761 Y66.484 Z14.7
    G0 F9000 X97.176 Y67.93
    G0 X97.174 Y78.082  >>>This is the last X and Y location before the pause.
    ;MESH:NOMESH
    ;TIME_ELAPSED:7431.671343

    ;TYPE:CUSTOM
    ;added code by post processing
    ;script: PauseAtHeight.py
    ;current layer: 48
    M83 ; switch to relative E values for any needed retraction
    G1 F300 Z15.7 ; move up a millimeter >>>This is 1mm above the last Z location.
    G1 F9000 X190 Y190
    G1 F300 Z15 ; too close to bed--move to at least 15mm >>>A bigger Z move for more clearance.
    M104 S230 ; standby temperature
    M84 S3600 ; Keep steppers engaged for 1h
    M300 S440 P1000 ; Beep
    M0 ; Do the actual pause
    M104 S230 ; resume temperature
    G1 F300 Z14.7 >>>Drop back down to the working Z location.
    G1 F9000 X97.174 Y78.082 >>>move back to the last X Y location
    G1 F2100 ; restore extrusion feedrate
    M82 ; switch back to absolute E values
    G92 E408.26493 >>>Reset the extruder to the last location before the pause.

     

    The Pause script goes backward through the gcode and picks out the last XY location, the last working Z location and the last E location.  It uses those after the pause to return the print head where it needs to be, and resets the extruder so it will start out without being dry or blobbing.  With some practice the resume can be totally seamless.  It's always best when the restart is in Support or Infill.

    If the stepper motors disable during the pause then the printer doesn't know where the nozzle is anymore AND it doesn't care that it doesn't know.  That's when you can get an error because it returns to the print restart location but it doesn't know where it's starting out from.

     

    Homing isn't involved, and should not be.  Homing after a print starts is never a good idea.  You didn't mention your printer but the end-stop switches on my Ender aren't very "repeatable" and so there is always a discrepancy between 0,0,0 this time it auto-homes, and 0,0,0 the next time it auto-homes.  That's another reason not to let the steppers disarm/disable.  Another is the fact that there is a partial print on the plate and auto-homing may crash into it.

  • Link to post
    Share on other sites

    Posted (edited) · How to improve layer adhesion after Pause at Layer/Height script

    ;MESH:NONMESH
    G0 F600 X95.845 Y95.845 Z10
    G0 F15000 X95.195 Y95.195 << Last place
    ;TIME_ELAPSED:560.946324
    M600 E30.00 U750.00 X0.00 Y0.00 Z2.00 ; Generated by FilamentChange plugin
    ;LAYER:49
    ;TYPE:WALL-OUTER
    ;MESH:Cube
    G1 F1800 X95.195 Y114.805 E226.24738
    G1 X114.805 Y114.805 E226.46255
    G1 X114.805 Y105 E226.57014
    G1 X114.805 Y95.195 E226.67773
    G1 X95.195 Y95.195 E226.89291 << Seems to be where it eventually moves back
    G0 F15000 X95.195 Y95.395
    G0 X95.545 Y95.545
    ;TYPE:WALL-INNER

     

    This is what i have. Im using the filament swap plugin. It looks to be 1.5 mm in the print x and y. Not sure if its going back to where the infill was as the last point and then using that as a starting point for the outer wall. I also attached the gcode for reference. Ill try and post pictures when I can.

     

    filament swap test.gcode

    Edited by 3dprntz
  • Link to post
    Share on other sites

    Posted · How to improve layer adhesion after Pause at Layer/Height script

    The "M600" command puts everything onto your firmware (whereas the "PauseAtHeight" script does the same thing but with separate lines within the gcode file).

    My printer doesn't support M600.  Maybe someone else here has an idea.

     

    I have some thoughts though.

    This may come down to your "default" stepper disarm time.  On my Ender that is 2 minutes.  If it sits without receiving further commands for 120 seconds the steppers disarm.  At that point it becomes "lost" which is shown on the LCD with flashing X Y Z letters.  "M600" makes no allowance for the disarm time so you are likely stuck with whatever your printer has for a default in it's M84 register.  If that is true and it takes longer than 120 seconds to change the filament, then the printer may become "lost" and consequently the re-start position is wrong.

     

    You could try putting "M84 S1800" as the last line in your StartUp Gcode.  That would keep the steppers from turning off for 1/2 hour.  That isn't permanent and M84 reverts back to the printer's default when either the steppers disable (like at the end of a print) or the printer is turned off.

     

    If you copy and paste the snippet below into a text file and then save it as a *.gcode and print it - it might give a clue what's going on.  Most of this is from your snippet above.  (I've commented the extrusions so it just moves around).

    (The M109 line is for heating generic PLA.  It's there just in case M600 requires a hot nozzle.)

     

    M109 S200              ; heat up

    M84 S1800              ; Set the disarm time to 30 minutes

    G28                          ;Auto-Home

    G1 F600 Z10           ;Move up

    G0 F3600 X95.845 Y95.845 Z10             ;From your snippet

    G0 F15000 X95.195 Y95.195                  ;From your snippet

    M600 B1 X0.00 Y0.00 Z2.00 ; no retractions and a beep added

    G1 F1800 X95.195 Y114.805  ;E226.24738
    G1 X114.805 Y114.805 ;E226.46255
    G1 X114.805 Y105 ;E226.57014
    G1 X114.805 Y95.195 ;E226.67773
    G1 X95.195 Y95.195 ;E226.89291 << Seems to be where it eventually moves back
    G0 F15000 X95.195 Y95.395
    G0 X95.545 Y95.545

    G0 X25 Y25 ; your LCD should show X=25, Y=25, Z=10 at the end of the script

    M104 S0          ; turn off the hot end

    M84 X Y E        ; disarm the steppers except for Z

     

  • Link to post
    Share on other sites

    Posted · How to improve layer adhesion after Pause at Layer/Height script

    I tried the pause at layer height feature, and I think that it's the firmware settings in Marlin that is causing the shift. when I do a pause at layer height, there is just an over extrusion on the layer, probably because it repeats the same layer and primed a bit too much. I changed the settings in the filament change to add 1.7 and it seems to realign about with the print. Ill play around and see what else is happening.

  • Link to post
    Share on other sites

    Posted · How to improve layer adhesion after Pause at Layer/Height script

    I use Pause at Height with it set to "At Layer" (z-hops and Adaptive Layers cause problems for "By Height").

    I ignore the retraction settings.  With some practice I found I get excellent re-starts by hand feeding the new filament until the color changes and then doing about a 3mm retraction by hand.  I have a bowden printer so all I'm really doing is taking the pressure off the nozzle.  I hang onto the filament string coming from the nozzle with tweezers and then hit the Button on the LCD.  I takes a bit of practice but it really works well.

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • Introducing the UltiMaker Factor 4
        We are happy to announce the next evolution in the UltiMaker 3D printer lineup: the UltiMaker Factor 4 industrial-grade 3D printer, designed to take manufacturing to new levels of efficiency and reliability. Factor 4 is an end-to-end 3D printing solution for light industrial applications
          • Thanks
          • Like
        • 3 replies
      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 26 replies
    ×
    ×
    • Create New...