Set temp wait linked to tehrmistor temp + 1C, include in print start.
Since
- We should only be using VGB when frame temp is rising
- Most people already have (or should ) a sensor wait for chamber temp
- We have already set up the necessary thermistor and naming etc.
Perhaps including some info or a macro for a temp wait that takes the current frame temp + 1C and include that in PRINT_START would be a nice inclusion. This would ensure that print doesn't start until frame temp is on the rise, even if its not the most elegant solution.
ps...i sing the praises of VGB to anyone I discuss Voron with. The fact that it works, is free, and adds no weight makes it the best solution in my mind. I wont be buying backers.
Glad you like VGBs and that they work well for you :) I am not sure if I understand your intent properly though - VGBs map frame temprerature to bed meshes, whether that frame temp is rising or stable does not really matter. I think I understand your macros correctly, but I am not sure when THER_TEMP is supposed to get called, right before TEMPERATURE_WAIT in print_start? If so, what happens if you preheat the printer to stable temps before starting the print, won't this cause print_start to wait for frame temp to rise endlessly? That is something I tend to do often - start the preheat macro, go slice something, forget what I was doing and come back 30 minutes later to a thermally stable printer.
Yeah, i really do, and they really do.
Yes,, the intention is just not to print while frame temp is cooling and VGB results are not valid. Other than that the point you raise is a good point. I hadn't thought of that.... Guess it should be part of a test, like...
{% if cframe_temp < 38.0 (5C under stable temp) %} etc?
Or for a lower temp range the threshold could be 1.2C above current. Nearing the stable temp it could be 0.1C above current. ?
Hey, just wanted to follow up as I was kind of blasting through yesterday, and a bit sleepy. Not sure if my explanations were clear.
I use my printer (Voron 2.4) to make commercial parts daily. Sometimes 4 or 5 prints a day. They are 3.5 hour prints and so the machine is only starting from cold once a day. This system is going to help me a lot. Before I was manually doing a preheat then checking and checking until the frame was heating rather than cooling. This way I can just start the next print and walk away.
The system is working well for me. Aside from some typos above its all working now. Ill correct the stuff above if you are interested.
I guess this may be more helpful for me than others. I almost never preheat manually (unless checking for frame heat) as I have everything set from chamber temp (and now frame temp) thresholds in my print start looking at thermistors..
That being said, I think this (or something like it ) is a good addition to the VGB system. And having the threshold be smaller (VALUE={(cframe_temp|float) + 0.1}) near the temp stable point is a decent solution to the critical issue you pointed out (and that i never though about). As the frame will keep heating into the 3-4 hour range just at a decreasing rate.
Anyhow, if you don't feel its of value fair enough. It will be very helpful for me, but maybe not as much for others.
ps...to answer your question above.
Yes, THER_TEMP is supposed to get called, before TEMPERATURE_WAIT in print_start. And between THER_TEMP and TEMPERATURE_WAIT its nice to call R_THER to see the effective threshold reported. calling 'M118 Frame threshold {printer["gcode_macro THER_TEMP"].current_temp}', in THER_TEMP reports the threshold before it is actually updated by the macro. Calling the R_THER after shows the updated/effective value.
Okay, thanks again for such a great, and extremely clever solution to a major issue.
Code overhaul. Variable evaluation within called macro problem above.
(PRINT_START)
- THER_SET
- TEMPERATURE_WAIT SENSOR="z_thermal_adjust" MINIMUM={printer["gcode_macro THER_TEMP"].threshold_temp}; wait for frame heating
[gcode_macro THER_TEMP]
variable_threshold_temp: 0
gcode: #Macro holding variable to set the wait temp
M118 Frame Threshold {printer["gcode_macro THER_TEMP"].threshold_temp}
[gcode_macro THER_SET]
variable_thermistor_name: "z_thermal_adjust"
gcode: #Macro to set the wait temp to current +1.2 to ensure frame is heating
{% set cframe_temp = printer[thermistor_name].temperature|float %} #get current temp
{% if cframe_temp < 38.0|float %} # Test for nearing stable temp
SET_GCODE_VARIABLE MACRO=THER_TEMP VARIABLE=threshold_temp VALUE={(cframe_temp|float) + 1.2}
{% else %}
SET_GCODE_VARIABLE MACRO=THER_TEMP VARIABLE=threshold_temp VALUE={(cframe_temp|float) + 0.3}
{% endif %}
THER_TEMP