Use chamber heat AND vent fan to maintain temp

Basic Information:

Printer Model: Custom Core XY build
MCU / Printerboard: BTT Manta M8P V1.1
Host / SBC: CB1
klippy.log: No errors

I have a fully enclosed printer that I have been using with active chamber heat for a long time. I generally open the top when printing a material that does not require a heated chamber, but now want to keep the lid closed for all prints so I can filter out fumes and keep the noise level down.

I consume the chamber temperature from my slicer as I have that set for each material. I use this print chamber temp to control the heater (again…successful for a long time). I have successfully allowed the chamber Thermistor to be used for both heat and venting by using:

[duplicate_pin_override] pins: PB6

Here is the printer.cfg for my chamber fan:

[temperature_fan Chamber_venting_fan]
pin: PB8                             # On fan 5 header M8P
max_power: 1.0
shutdown_speed: 0.0
cycle_time: 0.01
sensor_type: NTC 10K/B3950
sensor_pin: PA3 
min_temp: 0.0                        # Set this low, if this temp is reached system will shut down
max_temp: 90.0
off_below: 1.0
max_speed: 1
min_speed: 0.0
#target_temp: 30                      # Set higher to keep fan off until print started
control: pid
pid_Kp: 2.0
pid_Ki: 5.0
pid_Kd: 0.5

Here is the current state of my M191 macro:

[gcode_macro M191]  #This command optionally sets a new target chamber temperature
#and waits for the target temperature to be reached before proceeding.
#If the temperature is set with S then it waits only when heating.
gcode:
  {% set target_chamber = params.CHAMBER_TEMP|default("24")|float %}           # Get target chamber temp from gcode
  #{% set target_chamber = params.CHAMBER_TEMP | float %}
  {% set current_temp = current_chamber_temp|default("20")|float %}            # Get current chamber temp from thermistor
  #{% set current_temp = current_chamber_temp | float %}
  {action_respond_info('Target chamber temp set to %.1fC.' % (target_chamber))}
  
  {% if target_chamber < current_temp %}                                        # Judging the actual chamber temperature
      {action_respond_info('Chamber temp low %.1fC. Start heating' % (target_chamber))}
      M117 Chamber Heating...
      TEMPERATURE_WAIT SENSOR=heater_generic chamber_heater MINIMUM={target_chamber}
      #SET_TEMPERATURE_FAN_TARGET temperature_fan=Chamber_venting_fan target=65
      SET_TEMPERATURE_FAN_TARGET temperature_fan=Chamber_venting_fan target={(target_chamber-10)}
     
    {% elif target_chamber >= current_temp %}                                       # Judging the actual chamber temperature
      {action_respond_info('Chamber temp high %.1fC. Start venting' % (target_chamber))} 
      M117 Chamber Venting...
      #SET_TEMPERATURE_FAN_TARGET temperature_fan="Chamber_venting_fan" MIMIMUM=target={target_chamber}
      SET_TEMPERATURE_FAN_TARGET temperature_fan="Chamber_venting_fan" target={target_chamber}
    #{% endif %}
  {% endif %}

My issue is twofold:

  1. At printer startup, I wish the chamber vent fan to be off until a print is sent stating the target chamber temperature. Since it is a temperature_fan, I am unable to configure it to off using the SET_FAN_SPEED in my startup gcode.
  2. If the chamber is heating, I need to ensure the chamber vent fan stays off for the duration of the print.

Appreciate all ideas!
…
klippy.log (7.4 MB)

Does not matter:

Fill out above information and in all cases attach your klippy.log file (use zip to compress it, if too big). Pasting your printer.cfg is not needed
Be sure to check our “Knowledge Base” Category first. Most relevant items, e.g. error messages, are covered there

Deleting this does not free you from attaching.

1 Like

Thank you…log uploaded

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.