diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/CAD/Bed Fan Mount v25.f3d b/Printers/K3/Rudis1261_Bed_Fan_Mount/CAD/Bed Fan Mount v25.f3d new file mode 100644 index 0000000..5a9032e Binary files /dev/null and b/Printers/K3/Rudis1261_Bed_Fan_Mount/CAD/Bed Fan Mount v25.f3d differ diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/Config/BedFans.cfg b/Printers/K3/Rudis1261_Bed_Fan_Mount/Config/BedFans.cfg new file mode 100644 index 0000000..e7f5bea --- /dev/null +++ b/Printers/K3/Rudis1261_Bed_Fan_Mount/Config/BedFans.cfg @@ -0,0 +1,134 @@ +# https://github.com/VoronDesign/VoronUsers/blob/master/printer_mods/Ellis/Bed_Fans/Klipper_Macros/bedfans.cfg +############### Config options ################## + +[gcode_macro _BEDFANVARS] +variable_threshold: 100 # If bed temp target is above this threshold, fans will be enabled. If temp is set to below this threshold, fans will be disabled. +variable_minimum_chamber: 40 +variable_fast: 1.0 # Fan speed once bed temp is reached +variable_slow: 0.2 # Fan speed while bed is heating +gcode: + +########## Bed Fans ######### + +[fan_generic BedFans] +pin: PD15 # Change me +#cycle_time: 0.05 +kick_start_time: 0.5 + +########## Aliases ######### + +[gcode_macro BEDFANSSLOW] +gcode: + # Vars + {% set SLOW = printer["gcode_macro _BEDFANVARS"].slow|float %} + + SET_FAN_SPEED FAN=BedFans SPEED={SLOW} + +[gcode_macro BEDFANSFAST] +gcode: + # Vars + {% set FAST = printer["gcode_macro _BEDFANVARS"].fast|float %} + + SET_FAN_SPEED FAN=BedFans SPEED={FAST} + +[gcode_macro BEDFANSOFF] +gcode: + SET_FAN_SPEED FAN=BedFans SPEED=0 + +############ Command overrides ############ + +# Override, set fan speeds to low and start monitoring loop. +[gcode_macro SET_HEATER_TEMPERATURE] +rename_existing: _SET_HEATER_TEMPERATURE +gcode: + # Parameters + {% set HEATER = params.HEATER|default("None") %} + {% set TARGET = params.TARGET|default(0)|int %} + # Vars + {% set THRESHOLD = printer["gcode_macro _BEDFANVARS"].threshold|int %} + + {% if HEATER|lower == "extruder" %} + M104 S{TARGET} + {% elif HEATER|lower == "heater_bed" %} + M99140 S{TARGET} + {% else %} + {action_respond_info("Heater %s not supported" % HEATER)} + {% endif %} + + # Set fans to low if heater_bed temp is requested above threshold temp, and kick off monitoring loop. + {% if HEATER|lower == "heater_bed" %} + {% if TARGET >= THRESHOLD %} + BEDFANSSLOW + UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=1 + {% else %} + BEDFANSOFF + UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=0 # Cancel bed fan loop if it's running + {% endif %} + {% endif %} + +# Override M190 (Wait for Bed Temperature) +# As a bonus, use TEMPERATURE_WAIT so we don't have to wait for PID to level off. +[gcode_macro M190] +rename_existing: M99190 +gcode: + # Parameters + {% set S = params.S|int %} + # Vars + {% set THRESHOLD = printer["gcode_macro _BEDFANVARS"].threshold|int %} + + {% if S >= THRESHOLD %} + BEDFANSSLOW # >= Threshold temp: Low speed fans while heating + {% else %} + BEDFANSOFF # < Threshold temp: Turn bed fans off + {% endif %} + + M140 {% for p in params + %}{'%s%s' % (p, params[p])}{% + endfor %} # Set bed temp + + {% if S != 0 %} + TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={S|int} MAXIMUM={S|int + 5} # Wait for bed temp within 5 degrees + {% endif %} + + # Post-heating fan speeds + {% if S >= THRESHOLD %} + BEDFANSFAST # >= Threshold temp: Higher speed fans after heating finished + {% endif %} + +# Replace M140 (Set Bed Temperature) to just be an alias of SET_HEATER_TEMPERATURE (which has associated bed fan logic if enabled) +[gcode_macro M140] +rename_existing: M99140 +gcode: + # Parameters + {% set S = params.S|float %} + + SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={S} + +# Replace TURN_OFF_HEATERS +[gcode_macro TURN_OFF_HEATERS] +rename_existing: _TURN_OFF_HEATERS +gcode: + BEDFANSOFF + _TURN_OFF_HEATERS + +################ Monitoring loop ##################### + +# Turns bed fans to "fast" speed once target bed temp is reached. +[delayed_gcode bedfanloop] +gcode: + # Vars + {% set THRESHOLD = printer["gcode_macro _BEDFANVARS"].threshold|int %} + {% set MINIMUM_CHAMBER = printer["gcode_macro _BEDFANVARS"].minimum_chamber|int(40) %} + {% set CURRENT_CHAMBER_TEMP = printer['temperature_sensor Chamber'].temperature|int(0) %} + + {% if printer.heater_bed.target >= THRESHOLD %} # Continue only if target temp greater than threshold. + {% if CURRENT_CHAMBER_TEMP <= MINIMUM_CHAMBER %} # Only have the fans on, until the desired ambient is reached + {% if printer.heater_bed.temperature|int >= (printer.heater_bed.target|int - 1) %} + BEDFANSFAST # If within 1 degree of target temp: Higher speed fans + {% else %} + UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=5 # If temp not reached yet: loop again + {% endif %} + {% else %} + BEDFANSOFF + {% endif %} + {% endif %} \ No newline at end of file diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Bottom.png b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Bottom.png new file mode 100644 index 0000000..584777f Binary files /dev/null and b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Bottom.png differ diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Image0.jpg b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Image0.jpg new file mode 100644 index 0000000..86b436b Binary files /dev/null and b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Image0.jpg differ diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Image1.jpg b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Image1.jpg new file mode 100644 index 0000000..e2651bc Binary files /dev/null and b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Image1.jpg differ diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Image2.jpg b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Image2.jpg new file mode 100644 index 0000000..297b354 Binary files /dev/null and b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Image2.jpg differ diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Top.png b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Top.png new file mode 100644 index 0000000..fb05c1f Binary files /dev/null and b/Printers/K3/Rudis1261_Bed_Fan_Mount/Images/Top.png differ diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/README.md b/Printers/K3/Rudis1261_Bed_Fan_Mount/README.md new file mode 100644 index 0000000..cafa3fc --- /dev/null +++ b/Printers/K3/Rudis1261_Bed_Fan_Mount/README.md @@ -0,0 +1,35 @@ +## K3 Bed Fan Mount + +I designed and added these a while back to help speed up heating my chamber. It draws hot air from the bed and blows it downwards. Creating a bit of circulation in the chamber. I do feel it has made a difference, but it's hard to quantify. This is totally one worth doing if you have the stuff laying around. + +![image](./Images/Top.png)![image](./Images/Bottom.png) + +### You need +- 6 Heatset inserts 5mm X 4mm +- 2 Drop in M5 nuts +- 2 8mm M5 bots +- 4 20mm M3 bolts +- 2 40x20mm blower fans like from an old Creality + +### Print settings +- 0.2mm layers, 30% infill, grid +- Would suggest ASA + +### Config + +Using Ellis [BedFan script](https://github.com/VoronDesign/VoronUsers/blob/master/printer_mods/Ellis/Bed_Fans/Klipper_Macros/bedfans.cfg). I don't believe I changed much from the original. + +Just be sure to update the pin your bedfans would use, include the config and you should be sorted. + +[./Config/BedFans.cfg](./Config/BedFans.cfg) + +``` +# ./Config/BedFans.cfg:14 +pin: PD15 +``` + +### More images + +![image](./Images/Image0.jpg) +![image](./Images/Image1.jpg) +![image](./Images/Image2.jpg) \ No newline at end of file diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/STL/Fan Duct.3mf b/Printers/K3/Rudis1261_Bed_Fan_Mount/STL/Fan Duct.3mf new file mode 100644 index 0000000..31b8503 Binary files /dev/null and b/Printers/K3/Rudis1261_Bed_Fan_Mount/STL/Fan Duct.3mf differ diff --git a/Printers/K3/Rudis1261_Bed_Fan_Mount/STL/Fan Mount.3mf b/Printers/K3/Rudis1261_Bed_Fan_Mount/STL/Fan Mount.3mf new file mode 100644 index 0000000..4c9a6e4 Binary files /dev/null and b/Printers/K3/Rudis1261_Bed_Fan_Mount/STL/Fan Mount.3mf differ