klipper icon indicating copy to clipboard operation
klipper copied to clipboard

Add support for thermal protection without temperature delta

Open guestisp opened this issue 2 years ago • 3 comments

Sometimes using the temperature delta (target temp - current temp) as increment for the error counter, trigger the thermal protection too fast, particurally with low-power heater or a not perfectly aligned fan duct.

This PR add a setting use_temperature_delta that disable the use of delta, thermal protection is then triggered when the temperature is lower than target - hysteresis for at least max_errors seconds. This is similiar to Marlin's thermal runaway protection.

Tested properly with

[verify_heater extruder]
  hysteresis: 10
  max_error: 40

unplugging the thermistor cable starts the counter and after 40 seconds the heater is killed.

guestisp avatar Jan 18 '23 09:01 guestisp

More or less the same behavior (i.e. tune for low power heaters etc) can already be established with the current max_error setting, except that is does not take time but accumulating the deviation. If I understand this PR correctly, it would completely redefine the today's meaning of max_error

Sineos avatar Jan 18 '23 10:01 Sineos

Yes, if you enable the flag, max_error will be used as cumulative time. I know that you can have something similiar by tuinign the max_error config but as you are using the temperature delta to increase the error counter, you can't know how much second are you allowing. In example, I had a huge temp drop (15°) with a 40W heater (slow to heat up) and every second "15" are summed to the error counter. reaching the default max error (120) took less than 10 seconds, killing a 48hours print. With this PR that works in a Marlin similiar way, the print would have been successful with almost zero security risks

Using max_errors as workaround lead to 3 things:

  1. you have to use big values for max_errors thus delaying too much the protection threashold (it's risky)
  2. you can't know how many seconds you are allowing before triggering the protection
  3. if you use small values to avoid the problem number 1, you are triggering the protection too fast

guestisp avatar Jan 19 '23 15:01 guestisp

If useful, I can add a new setting like max_seconds and use that ignoring the max_errors

guestisp avatar Jan 19 '23 15:01 guestisp

Any chance to have this merged ?

guestisp avatar Jan 30 '23 10:01 guestisp

Thanks, but I don't think this is a good fit for the main Klipper branch. This code adds complexity to the verify_heater code, and it's not clear to me that additional complexity is necessary as one can already tune that module using the existing configuration settings.

-Kevin

KevinOConnor avatar Jan 31 '23 02:01 KevinOConnor

well, no, you can't have this working mode by tuning settings as the error counter doesn't add a fixed amount, thus you can't cut heating after a defined amount of seconds

guestisp avatar Jan 31 '23 03:01 guestisp

This PR is being closed because it is currently not considered a good match for the master Klipper repository.

Best regards, ~ Your friendly GitIssueBot

PS: I'm just an automated script, not a human being.

github-actions[bot] avatar Feb 07 '23 12:02 github-actions[bot]