DEV: Stabilize temperature corridor
This parametr is not working on my Mega2560+RAMPS 1.5.7
When I use the M109 S225 printer starts printing at 220
Stabilize temperature corridor (TEMP_HYSTERESIS) = 1
Skip extruder temp. wait if within (SKIP_M109_IF_WITHIN) = 2
Skip temp. wait if within (SKIP_M190_IF_WITHIN) = 5
Comments
M109 will always be skipped if the temperature is (exactly) 5 degrees below the target temperature.
Current settings are:
SKIP_M109_IF_WITHIN 0
EXT0_WATCHPERIOD 15
TEMP_HYSTERESIS 2
Is there any other parameter for setting up the M109 command correctly?
Regulating the temparature with PID is working fine except.
Im sure this is not a slicer issue, since it will also occur if manually using M109 command (and checking skipping point with M115 etc.).
I am also using the Ramps board.
I would realy appreciate if someone could provide me some tipps.
Any idea could be helpful
you see only way to skip waiting in your case is temperatureInCelsius > MAX_ROOM_TEMPERATURE" but I assume 5°C less is not MAX_ROOM_TEMPERATURE
There is also no special case for 5° as you see. What happens at 4°C or 6°C difference? It is hard to get exactly 5°C especially since it is a float value so it could also be 5.01 difference.
Which firmware version are you using?
I am using version 1.0.3.
MAX_ROOM_TEMPERATURE is set to 40.
I did not check if the skipping happens at numericaly exactly 5 degrees below target temperature, but I realised that is always skipped at roughly 5 degrees idepent of the target temperature.
When using M109 S250 it was skipping at 245.?? degrees and when using M109 S60 at 55.?? degrees.
Is there a command that is blocked by the M109 watiting and is showing the temperature at the point when waiting is over? M105 seems to get executed always without any waiting.
However, I set up a completly fresh config file only changing board, thermistor type and used the same M109 settings. Now it works flawless.
So the problem is definetly on my side and not a firmware problem.
But since I dont know at which point I crashed my configuration file, I would be very interested in any hints about what else could cause this behaviour.
The loop beginning at line 1064 is left to early because of the else-if condition at line 1084:
if (maxWaitUntil == 0) {
Could you maybe explain whats the idea behind this check?
The bug is also present in version 1.0.4.
When testing with the new configuration file I was accidentaly using version 0.92. So its not a configuration as I thought first.
Sorry for bad code formatting.
so > instead of < for comparison.
What it does is adding an escape to badly configured extruders. Once you are within the +/- 5°C corridor it will exit with 2 minutes regardless of hysteresis or target temperature being reached. This was added because I got complains that M109 never stopped. Just until now nobody noted it stopped 5°C before reaching the target temperature.