jontek2 / a-better-print_start-macro Goto Github PK
View Code? Open in Web Editor NEWThis document aims to help you get a simple but powerful start_macro for your voron printer!
This document aims to help you get a simple but powerful start_macro for your voron printer!
Do you have to install led_effects to use the printer status macros? I don't know I already had it led effects installed. just realizing there isnt mention of that. maybe there doesnt need to be? But anyway I think you should change the name of this project to "The Best Print Start Macro" because it is, this was such a huge help, Im glad I found it, Thank you for sharing it.
how can i only get the printer to heat coak when its only asking for a bed tempter above 90c
this is how i have your macro sry up for myself
[gcode_macro PRINT_START]
gcode:
{% set target_bed = params.BED|int %}
{% set target_extruder = params.EXTRUDER|int %}
{% set target_chamber = params.CHAMBER|default("40")|int %}
{% set x_wait = printer.toolhead.axis_maximum.x|float / 2 %}
{% set y_wait = printer.toolhead.axis_maximum.y|float / 2 %}
STATUS_HOMING # Sets SB-leds to homing-mode
G28 # Full home (XYZ)
G90 # Absolut position
BED_MESH_CLEAR # Clears old saved bed mesh (if any)
{% if params.BED|int > 90 %}
SET_DISPLAY_TEXT MSG="Bed: {target_bed}c" # Displays info
STATUS_HEATING # Sets SB-leds to heating-mode
M106 S255 # Turns on the PT-fan
## Uncomment if you have a Nevermore.
SET_PIN PIN=nevermore VALUE=1 # Turns on the nevermore
G1 X{x_wait} Y{y_wait} Z15 F9000 # Goes to center of the bed
M190 S{target_bed} # Sets the target temp for the bed
SET_DISPLAY_TEXT MSG="Heatsoak: {target_chamber}c" # Displays info
TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={target_chamber} # Waits for chamber to reach desired temp
{% else %}
SET_DISPLAY_TEXT MSG="Bed: {target_bed}c" # Displays info
STATUS_HEATING # Sets SB-leds to heating-mode
G1 X{x_wait} Y{y_wait} Z15 F9000 # Goes to center of the bed
M190 S{target_bed} # Sets the target temp for the bed
SET_DISPLAY_TEXT MSG="Soak for 5min" # Displays info
G4 P300000 # Waits 5 min for the bedtemp to stabilize
{% endif %}
SET_DISPLAY_TEXT MSG="Hotend: 150c" # Displays info
M109 S150 # Heats the nozzle to 150c
SET_DISPLAY_TEXT MSG="QGL" # Displays info
STATUS_LEVELING # Sets SB-leds to leveling-mode
quad_gantry_level # Levels the buildplate via QGL
G28 Z # Homes Z again after QGL
CALIBRATE_Z # Calibrates Z-offset with klicky
SET_DISPLAY_TEXT MSG="Z-offset" # Displays info
SET_DISPLAY_TEXT MSG="Bed mesh" # Displays info
STATUS_MESHING # Sets SB-leds to bed mesh-mode
bed_mesh_calibrate # Starts bed mesh
SET_DISPLAY_TEXT MSG="Hotend: {target_extruder}c" # Displays info
STATUS_HEATING # Sets SB-leds to heating-mode
G1 X{x_wait} Y{y_wait} Z15 F9000 # Goes to center of the bed
M107 # Turns off partcooling fan
M109 S{target_extruder} # Heats the nozzle to printing temp
SET_DISPLAY_TEXT MSG="Printer goes brr" # Displays info
STATUS_PRINTING # Sets SB-leds to printing-mode
CLEAN_NOZZLE
VORON_PURGE
#G0 X{x_wait - 50} Y4 F10000 # Moves to starting point
#G0 Z0.4 # Raises Z to 0.4
#G91 # Incremental positioning
#G1 X100 E20 F1000 # Purge line
#G90 # Absolut position
If you follow the instructions for voron Tap's config alterations, have the printer cold, with bed temp below 90c and then use this macro, you'll get a "hotend too cold" error. I moved hotend heating to after bed heating but before the 5 minute wait, that fixes the problem. Adding a sufficient delay before it tries to QGL would probably also fix the issue. I have a Dragon UHF which may also have contributed to finding this corner case, since it's more material to heat.
With prusa slicer, my gcode output was frozen to 0°C , my print didn't start at all
i had to modifiy the gcode:
DELETE: M104 S0 ; Stops PrusaSlicer from sending temp waits separately
DELETE: M140 S0
KEEP print_start EXTRUDER=[first_layer_temperature[initial_extruder]] BED=[first_layer_bed_temperature]
I saw on the voron discord someone making a variable heat-soak. Basically, if you cancel a print and restart if fairly quick, it avoids having to wait for the soak for as long.
#Heatsoak here
Check if heat-soaking is needed
{% if current_bed < target_bed - 20 %} M118 Bed is cold. # display message SET_DISPLAY_TEXT MSG="Heating Bed: {target_bed}c" M190 S{target_bed} # Set bed temperature and wait until it is reached M118 Heat Soak 5 minutes # display message G4 P{ 5 * 60 * 1000 } # dwell = 5 minutes {% elif current_bed < target_bed - 10 %} M118 Bed is warm. # display message SET_DISPLAY_TEXT MSG="Heating Bed: {target_bed}c" M190 S{target_bed} # Set bed temperature and wait until it is reached M118 Heat Soak 1 minute # display message G4 P{ 1 * 60 * 1000 } # dwell = 1 minute {% else %} M118 Already Hot! Heat Soak 5 seconds # display message SET_DISPLAY_TEXT MSG="Heating Bed: {target_bed}c" M190 S{target_bed} # Set bed temperature and wait until it is reached G4 P{ 5 * 1000 } # dwell = 5 seconds {% endif %}
End Heatsoak section
I tried adding this into my print_start macro but got Error evaluating 'gcode_macro PRINT_START:gcode': jinja2.exceptions.UndefinedError: 'current_bed' is undefined.
Would you be able to assist with incorporating something like this into the print_start? I already use your setup and just want to integrate if possible. Thank you
I have 2 additional bed fans that can run separately from the nevermore. How would I go about controlling those with this print start macro?
I had to change {% set hotendtemp = params.EXTRUDER|int %} to {% set hotendtemp = params.HOTEND|int %} to get the macro to run
The main README page refers to the z_tilt operation on Trident as screw_tilt_adjust, which is a different operation
Screw_tilt_adjust if your printer is a Trident
Uncomment for Trident (screw_tilt_adjust)
Shouldn't that be z_tilt_adjust instead?
screws_tilt_adjust is used for probe-assisted manual bed leveling like on an Ender (with a probe)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.