What's new
VORON Design

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members!

Automate Nevermore activation by Material

Geul

New member
Hello,

I'm quite new to this Forum, but have a Voron for some time.
The 2.4 350 is equipped with a nevermore v6 and I want to automate the activation whenever I print with ABS.
I use OrcaSlicer for my projects. There is a Variable inside the G-Code for material, but I don't get it, how to find it in Klipper.

Can you help me with some Videos or post to learn this kind of scripting?

Thanks
 
I do exactly that in my printer setup. There's two parts I have cobbled together: a bit in print_start and a separate macro it calls. I am triggering off desired chamber temp.
PRINT_START bit that takes chamber temperature as a parameter passed by the slicer. SuperSlicer & Orca have that as a field in the filament definition.
Code:
## Do heatsoak
    {% if printer["temperature_fan chamber"].temperature < chambertemp %}
          _HEATSOAK TEMP={bedtemp} MOVE=1                        # Set up to heat soak if chamber temp is set higher than current reading
      M190 S{bedtemp}                                        # Set target bed temp & wait for it
      TEMPERATURE_WAIT SENSOR="temperature_fan chamber" MINIMUM={chambertemp}   # Do the actual heat soak wait, until chamber temp is at target
        {% else %}
            {% if printer.heater_bed.temperature < (bedtemp-2) %}
        _HEATSOAK TEMP={bedtemp} MOVE=1                                    # Bed is below target temp, get it heating & safely park toolhead
        M190 S{bedtemp}                                     # Set bed target temp & wait for it
            {% else %}
                _HEATSOAK TEMP={bedtemp} MOVE=0                     # Just do a bed heat, no champer temp (open case for PLA)
            {% endif %}
        {% endif %}
Then the heatsoak macro:
Code:
[gcode_macro _HEATSOAK]
description: Helper: Set up to heat soak printer. Usage: _HEATSOAK [TEMP=temp(110)] [MOVE=move(1)]
gcode:
  {% set temp = params.TEMP|default(110)|int %}
  {% set move = params.MOVE|default(1)|int %}
    
    LED_HEATING
  RESPOND MSG="Warming up"
    M141 S0                                                 # Turn off exhaust fan
    M140 S{temp}                                            # Heat the bed
  M104 S150                                               # Set hotend to no-ooze temp & for Tap warm probing
    {% if temp >= 100 %}                                    # It's ABS or other high-temp plastic, closed case
        M106 S205                                             # Turn on part fan to 80% for
        SET_FAN_SPEED FAN=nevermore_fan SPEED=1                   # Turn on Nevermore fans to circulate & accelerate chamber soak
    {% else %}
    M106 S0                                               # Turn off part fan. Open case, no need
        SET_FAN_SPEED FAN=nevermore_fan SPEED=0                   # Make sure Nevermore is off
    {% endif %}

    {% if move == 1 %}
        _CG28                                                 # Conditional home
        PARK P=bed                                            # Park toolhead in safe location (center volume)
        LED_HEATING
    {% endif %}
 
I do exactly that in my printer setup. There's two parts I have cobbled together: a bit in print_start and a separate macro it calls. I am triggering off desired chamber temp.
PRINT_START bit that takes chamber temperature as a parameter passed by the slicer. SuperSlicer & Orca have that as a field in the filament definition.
Code:
## Do heatsoak
    {% if printer["temperature_fan chamber"].temperature < chambertemp %}
          _HEATSOAK TEMP={bedtemp} MOVE=1                        # Set up to heat soak if chamber temp is set higher than current reading
      M190 S{bedtemp}                                        # Set target bed temp & wait for it
      TEMPERATURE_WAIT SENSOR="temperature_fan chamber" MINIMUM={chambertemp}   # Do the actual heat soak wait, until chamber temp is at target
        {% else %}
            {% if printer.heater_bed.temperature < (bedtemp-2) %}
        _HEATSOAK TEMP={bedtemp} MOVE=1                                    # Bed is below target temp, get it heating & safely park toolhead
        M190 S{bedtemp}                                     # Set bed target temp & wait for it
            {% else %}
                _HEATSOAK TEMP={bedtemp} MOVE=0                     # Just do a bed heat, no champer temp (open case for PLA)
            {% endif %}
        {% endif %}
Then the heatsoak macro:
Code:
[gcode_macro _HEATSOAK]
description: Helper: Set up to heat soak printer. Usage: _HEATSOAK [TEMP=temp(110)] [MOVE=move(1)]
gcode:
  {% set temp = params.TEMP|default(110)|int %}
  {% set move = params.MOVE|default(1)|int %}
   
    LED_HEATING
  RESPOND MSG="Warming up"
    M141 S0                                                 # Turn off exhaust fan
    M140 S{temp}                                            # Heat the bed
  M104 S150                                               # Set hotend to no-ooze temp & for Tap warm probing
    {% if temp >= 100 %}                                    # It's ABS or other high-temp plastic, closed case
        M106 S205                                             # Turn on part fan to 80% for
        SET_FAN_SPEED FAN=nevermore_fan SPEED=1                   # Turn on Nevermore fans to circulate & accelerate chamber soak
    {% else %}
    M106 S0                                               # Turn off part fan. Open case, no need
        SET_FAN_SPEED FAN=nevermore_fan SPEED=0                   # Make sure Nevermore is off
    {% endif %}

    {% if move == 1 %}
        _CG28                                                 # Conditional home
        PARK P=bed                                            # Park toolhead in safe location (center volume)
        LED_HEATING
    {% endif %}

Oh ok cool, that's a good idea. I think I'll do it that way too.
I was initially planning to control the whole thing via the Gcode and the variable "; filament_type = PLA".
Is there a way to extract this or other information from the Gcode file?
 
Which? The filament type? I have that as part of the file name from the slicer. As you can see from the code, I use the chamber temp as my trigger and that's sent as a parameter to the print_start and print_end macros from the slicer.
 
Top