Drying filament or silica packs with K2+

I wanted to share some other method I use to dry filament or the silica packs overnight: With my K2+ on the heated bed!

The bed fits up to 2 rolls of (1kg) filament and can heat up to 100°C which is enough for me.

Originally I used an empty filament box where I made some holes on the top to cover the filament roll and then I just set heat bed temp.

Then I created covers (you can download from Creality Cloud) and printed them in PETG which works for me up to 80°C bed temp.

I saw that Qidi offered drying in the printer new menu and adapted similar macros to be used in K2+ for fluidd interface:

; [filament_dryer]
; An idea for using the heated bed of a 3D printer as a filament dryer.
; Adds GCODE command: START_DRYER TIME=T TEMPERATURE=C
; (T is time in seconds, C is bed temperature in Celsuis)
; To stop drying early, use STOP_DRYER.
; Also defined some utility macros: DRY_PLA, DRY_PETG and DRY_ABS.
; Edit these with your own preferred defaults.

[respond]

[gcode_macro START_DRYER]
gcode:
  {% set TIME_PARAM = params.TIME|default(18000)|int %}
  {% set TEMP_PARAM = params.TEMP|default(55)|int %}
  M140 S{TEMP_PARAM} ; non blocking bed temp
  SET_GCODE_VARIABLE MACRO=DRYER_STATE VARIABLE=time_remain_var VALUE={TIME_PARAM}
  SET_GCODE_VARIABLE MACRO=DRYER_STATE VARIABLE=bed_temp_var VALUE={TEMP_PARAM}
  UPDATE_DELAYED_GCODE ID=DRYER_TIMER DURATION=1
  ;SET_IDLE_TIMEOUT ;called w/o param and dont even need? cause timer tick reset temp anyway?

[gcode_macro STOP_DRYER]
gcode:
;  Turn off heaters etc. here
  M140 S0 ; Disable bed heater
  SET_GCODE_VARIABLE MACRO=DRYER_STATE VARIABLE=time_remain_var VALUE=0
  UPDATE_DELAYED_GCODE ID=DRYER_TIMER DURATION=0 ; Stop the timer.
  M118 Drying Stopped

[gcode_macro DRYER_STATE]
variable_time_remain_var: 0
variable_bed_temp_var: 0
gcode:
  {% if time_remain_var > 0 %}
  M140 S{bed_temp_var} ; Reset bed temp (prevents timeout)
  SET_GCODE_VARIABLE MACRO=DRYER_STATE VARIABLE=time_remain_var VALUE={time_remain_var - 10}
  M118 Drying still { time_remain_var // 3600 } h {(time_remain_var - (time_remain_var // 3600) * 3600) // 60 } min
  {% else %}
  STOP_DRYER
  {% endif %}

[delayed_gcode DRYER_TIMER]
gcode:
  UPDATE_DELAYED_GCODE ID=DRYER_TIMER DURATION=10
  DRYER_STATE

;flip filament every 6h
[gcode_macro DRY_PLA]
description: Dry PLA filaments for 8h @60°C bed.
gcode:
  {% set TIME_PARAM = params.TIME_Hours|default(8)|int %}
  {% set TEMP_PARAM = params.TEMP|default(60)|int %}
  START_DRYER temp={TEMP_PARAM} time={3600 * TIME_PARAM}
  
[gcode_macro DRY_PETG]
description: Dry PETG filaments for 12h @75°C bed.
gcode:
  {% set TIME_PARAM = params.TIME_Hours|default(12)|int %}
  {% set TEMP_PARAM = params.TEMP|default(75)|int %}
  START_DRYER temp={TEMP_PARAM} time={3600 * TIME_PARAM}

[gcode_macro DRY_ABS]
description: Dry ABS or ASA filaments for 12h @85°C bed.
gcode:
  {% set TIME_PARAM = params.TIME_Hours|default(12)|int %}
  {% set TEMP_PARAM = params.TEMP|default(85)|int %}
  START_DRYER temp={TEMP_PARAM} time={3600 * TIME_PARAM}

[gcode_macro DRY_WarmRoom]
description: Dry at MAXIMUM for 12h @100°C bed.
gcode:
  {% set TIME_PARAM = params.TIME_Hours|default(12)|int %}
  {% set TEMP_PARAM = params.TEMP|default(100)|int %}
  START_DRYER temp={TEMP_PARAM} time={3600 * TIME_PARAM}

You may enter this in printer.cfg or write it in your own file like I do with all my macros my_macros.cfg and then add only the include statement to the printer.cfg:

[include my_macros.cfg]

This way I have to just upload my macro file and add the include into printer config after any firmware upgrade when my macros are deleted.

I also created a macro section (FJ) in fluidd and moved all my macros in there.

I can simply click on the macro and the heating starts with defaults and counts down time in fluidd console.
Or you can click on the down arrow of the macro and change time/temperature from default.

Before I put filament in I switch off motors (issuing M84 fluidd code in console) which let the bed go down and reduce power drawn by other components.
I leave the top lid open a bit but close the door of the printer.

In this way the printer will stop automatically after the hours you specify.
I do have my printer connected via a wireless plug (shelly) which switches printer off when it consumes less than 30W for at least 20 minutes and that’s why my printer is shut down completely after drying ended (or after a long nightly print ended).
p.s.: The energy consumption is very efficient with the covers, better than in oven or microwave.

4 Likes

Hello frankjoke,

That is brilliantly done with good instructions.

Cheers.

I use my ender 3 s1 pro for drying fillaments works good for me.