1
$\begingroup$

My CR-10 S5 has a feature, that stops the print, when the filament runs out.

However, when the printer pauses, the bed cools down and the print plops if the bed. Is there a way to tell the printer to keep the bed heated, when paused (by the runout detector)?

$\endgroup$
4
  • $\begingroup$ unless you write custom firmware? No. $\endgroup$ – Trish Jan 20 at 9:47
  • $\begingroup$ Has this to to with the "economic" mode? If so, you have your answer here. I don't know if this reflects recent firmware versions. $\endgroup$ – 0scar Jan 20 at 12:25
  • 1
    $\begingroup$ @0scar nope, that is part of the Filament runout sensor alarm code, not the eco mode $\endgroup$ – Trish Jan 20 at 12:37
  • $\begingroup$ Does it cool down immediately or is it a separate heater timeout after the pause? $\endgroup$ – R.. GitHub STOP HELPING ICE Jan 21 at 16:54
1
$\begingroup$

It's in the firmware

Filament runout sensors generally trigger M600. Usually that preserves the bed temperature, but some firmware distributions might have this set up wrong.

How is M600 working?

The firmware dictates what is done in case of filament runout. The standard settings in configuration.h can look like this:

//#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
  #define NUM_RUNOUT_SENSORS   1     // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
  #define FIL_RUNOUT_INVERTING false // Set to true to invert the logic of the sensor.
  #define FIL_RUNOUT_PULLUP          // Use internal pullup for filament runout pins.
  //#define FIL_RUNOUT_PULLDOWN      // Use internal pulldown for filament runout pins.

  // Set one or more commands to execute on filament runout.
  // (After 'M412 H' Marlin will ask the host to handle the process.)
  #define FILAMENT_RUNOUT_SCRIPT "M600"

  // After a runout is detected, continue printing this length of filament
  // before executing the runout script. Useful for a sensor at the end of
  // a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead.
  //#define FILAMENT_RUNOUT_DISTANCE_MM 25

  #ifdef FILAMENT_RUNOUT_DISTANCE_MM
    // Enable this option to use an encoder disc that toggles the runout pin
    // as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM
    // large enough to avoid false positives.)
    //#define FILAMENT_MOTION_SENSOR
  #endif
#endif

So, we need to see what M600 does. M600 is configured in some way:

The settings for this command can be found in Configuration_adv.h.

So, you need to reconfigure how M600 behaves... Here's how to properly do it in 1.1.8/1.1.9 and how does it actually work in the first place in 2.0?:

First, make sure the line #define ADVANCED_PAUSE_FEATURE has no leading // in configuration_adv.h.

Make sure you have #define FILAMENT_RUNOUT_SENSOR uncommented with no leading // in configuration.h. Typically, it just calls M600. You can replace the line with any other line of commands, for example have it play music or abort the print, or just dwell for a couple minutes and beep tragically. The factory setup for M600 contains safety setup: "if not attended in time - shut down. This includes shutting down the heated bed."

But where is the actual M600 defined? Oh, that's sneakily hidden in Marlin_main.ccp for 1.1.9... and oddly enough it does not call to turn off the heated bed unless it goes into did nothing cooldown.

$\endgroup$
3
  • $\begingroup$ This has no reference to the heated bed, so, does the newest firmware version doesn't drop the bed temperature on pause? (Note M600 is a multi purpose pause and filament change script, it doesn't reference bed temperature) Also, does Marlin 2.0.x has a Marlin_main.cpp? $\endgroup$ – 0scar Jan 20 at 17:42
  • $\begingroup$ @0scar which is what stumps me - there shouldn't be a shutdown, unless it is in the distribution OP installed. $\endgroup$ – Trish Jan 20 at 17:56
  • 2
    $\begingroup$ I checked the current version (2.0) and there in the M600 command, the manage_heater is called, which in turn keeps the bed temperature. I'm pretty sure op has an older firmware where this is not fixed. $\endgroup$ – Hacky Jan 21 at 14:08
1
$\begingroup$

There is no easy way to keep the bed heated during pause

Looking at the sourcecode, I am pretty sure that the current version (10/29/2019) keeps the heated bed at the right temperature. Features are built into the firmware. You need an Arduino and some wires to write new firmware to the built-in SOC. Adjusting the code should be as simple as commenting a single line.

That is some serious shortcoming of the CR-10 S5! I can't imagine a reason why not to leave the heated bed on.

The command that keeps the heated bed at temperature is in Marlin_main.cpp:5664: Source code link

$\endgroup$
1
  • $\begingroup$ which line would that be? $\endgroup$ – Trish Jan 20 at 12:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.