Pausing MPCNC - Locking Z

I know I’ve seen this here somewhere somehow but I can’t find it.

I’m watching the MPCNC go to town on this STL carve while I fart around with OctoPi. The roughing pass is only 3 hours so that’s fine. But the finishing pass is 18 hours plus. I’ve successfully paused my laser overnight but the Z doesn’t drop when the steppers disengage because there isn’t a ton of weight on it. Can I change something in the Firmware so that when the job is paused it holds the Z stepper? I think the answer to this involves some sort of a maximum duration and that “forever” isn’t an option and that’s okay. I just need to figure out how long of a nap I could take when pausing the machine.

This thought just popped into my head, I know when when I pause my printer it moves to a zero spot, so couldn’t you set it up to move to a place and just have it rest on some blocks?

1 Like

In config-adv there is a line with a timeout. It is currently set at 15 or 30 minutes, can’t remember. You can disable this. I am not sure how long you can hold with command honestly.

1 Like

I’ll see if I can dig up that old post and then dig into it. My days really only have six hour spans in them so my choice is to figure this out so I can pause carves and be safe or leave the neighbour on call when I have to run get the kids from school or the like. The IP camera helps in this regard but it could already be fire by the time he got over here. Maybe my weekend with OctoPi will give me some thoughts on setting up some relays so I can cut power remotely but I really don’t want to ever leave the machine running without someone home. In fact on my “one day” list is a Z drop test just to see how long it takes to get actual fire.

Wow…seems ironic…I’m trying to keep enabled. These are trying to completely DISable…

I’m finding all kinds of tool change gcode based options but not finding much info on firmware side options. It sounds like if I were to switch to using Repetier and pause it from there it will hold things by default but I can’t find anything that says for how long. And if the laptop goes to sleep I may be screwed. Maybe I need to find a chance of rubber that will slip into the Z assembly with just enough force to hold it without pushing it up?

I am trying to find a precise way about this because I know this won’t be the last time I need this pause function. Using a .6mm bit with 15% stepover I don’t have a lot of wiggle room.

I feel an all nighter coming on…if I started it now it’d be done around lunchtime tomorrow…

Dual end stops is the right way to do this.

I thought “M84 S0” set the disengage timeout to ‘forever’ so it would always stay engaged. Is this not the case or does this not accomplish what you’re looking for?

1 Like

I don’t know if I follow. I do have the dual endstops on this machine now (love them).

I’m digging through the Configuration_adv.h now. This was referenced in my Googling but it seemed very 3d printer specific. But perhaps it can be manipulated to help:

/**

  • Advanced Pause
  • Experimental feature for filament change support and for parking the nozzle when paused.
  • Adds the GCode M600 for initiating filament change.
  • If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
  • Requires an LCD display.
  • Requires NOZZLE_PARK_FEATURE.
  • This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
    */
    //#define ADVANCED_PAUSE_FEATURE
    #if ENABLED(ADVANCED_PAUSE_FEATURE)
    #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
    #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
    // This short retract is done immediately, before parking the nozzle.
    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
    #define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
    // For Bowden, the full length of the tube and nozzle.
    // For direct drive, the full length of the nozzle.
    // Set to 0 for manual unloading.
    #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load.
    #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material.
    // 0 to disable start loading and skip to fast load only
    #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
    #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
    #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
    // For Bowden, the full length of the tube and nozzle.
    // For direct drive, the full length of the nozzle.
    //#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.
    #define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
    #define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading.
    // Set to 0 for manual extrusion.
    // Filament can be extruded repeatedly from the Filament Change menu
    // until extrusion is consistent, and to purge old filament.

// Filament Unload does a Retract, Delay, and Purge first:
#define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
#define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.

#define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.

//#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.

 

 

[ EDIT - Seems like this is the only place where timeout is mentioned in Config_adv…I need to look more into the park function…make sure it lifts clear of the work before parking. ]

I searched for Pause and hit this…do I understand that I could write a command (if I knew how) which would trigger when I paused withe the LCD?

/**

  • Specify an action command to send to the host on pause and resume.
  • Will be sent in the form ‘//action:ACTION_ON_PAUSE’, e.g. ‘//action:pause’.
  • The host must be configured to handle the action command.
    */
    //#define ACTION_ON_PAUSE “pause”
    //#define ACTION_ON_RESUME “resume”

 

[EDIT - It requires HOST_ACTION_COMMANDS to be defined but I can’t see that anywhere. I’m rapidly getting in over my head here…]

That’s the gcode solution I’ve been finding. I need this behaviour to happen when pausing using the “Pause Print” function on the LCD. I don’t know how or where to do that.

Yup, but I am not confident in how long it actually stays locked.

What am I missing…lemme go back and read. Oh, you literally want to pause an active job for a long time. I misunderstood.

You can try adding M84, but are you sure there is nothing you can do to cut down that time? Does your step over need to be so fine? Also a small test might prove the 18 hour estimate is way off. Sorry, thinking off the cuff here. If you have to use the code as is, I would cut it into multiple jobs/files and add a homing sequence in there. Good question, I have never tried this sort of thing. I don’t have that kind of patience.

[attachment file=“KD disable.JPG”]

1 Like

This sounds interesting. How would I do that? Literally hack 1/5 of the gcode, making sure to retain the start and finish gcode and away I go? That could work if I can’t get the stepper to hold (and would save me in a power failure - but we don’t have those much at all).

Your stepover question is valid…with a .6mm bit what on earth do I need 15% stepover for? If I’m 18 hours at 15% I should be around 8 at 45%. I’m gonna try that right now.

Re: the disable screenshot (thanks for that by the way)

Should I also set the DISABLE_INACTIVE_Z to false just to be sure?

Well, I’m still gonna give the infinite pause a try but changing the stopover to 45% knocked it down to under 5 hours! Gah!

It’s running now. I’ll reflash later.

Oh, by the way, OctoPi is running on the MP3DP - I WAS working on that today. But I haven’t got the relays hooked up for power/light control yet. All I ‘really’ did on that front today is/was connect the longer ribbon to the camera and install it (the camera). But I learned a lot about the Rambo firmware so the day isn’t a loss ; )

Yeah, just cut it after a Z lift move, On the next file Home first, then paste the rest. Should work if you are careful.

 

0.6mm tip? Jeez, yeah 50% should be more than fine. That is going to be insane detail. Make sure it is dense material.

 

0, and false would be what I would try.

And that’s the clincher. It isn’t dense which is too bad. This is basswood. And it’s not a ball end which would help too. You can see the lines forming. However - very excited at what the next 5 ish hours will bring!

I can’t believe these teeny cutters don’t snap. [attachment file=98394]

Ah! Hahahaha. Guess what broke when that was uploading…

I’m doing a semi-finish pass now with .2mm allowance to get the real knobby stuff off using a 1.5mm flat. Then I’ll try slowing down the federates on the .6mm bit and running off the .2mm allowance left behind. The semi finish pass estimated at 1h 20 min. A worthwhile step I think.

Why fire?