Auto PID tuning and temperature overshoot

  • administrators

    I am working on the improved temperature protection and auto PID tuning in the firmware. I would like some user opinions:

    1. How much temperature overshoot do you consider acceptable when heating up the extruder or the bed?

    2. If you have used other firmware that supports auto tuning, how good have you found the auto tuning, and how much temperature overshoot did it give you?

  • I've used PID auto-tune in Marlin, Repetier-Firmware, Smoothieware. In my experience Marlin's auto-tune did the best job at getting the PIDs pretty close.

    Personally, keeping the overshoot to 1 degree C or less would be ideal for me.

  • One C for the hotend, and the bed can go over 5C.
    I've only used PID auto tune in Marlin and it's always worked fine for me.

  • Are we talking about the initial overshoot, or the recurring overshoot of each cycle?

  • administrators


    Are we talking about the initial overshoot, or the recurring overshoot of each cycle?

    The initial overshoot is what I am asking about.

  • administrators

    I don't really mind how much the bed overshoots as long as the time to stabilise is matched to how long a M190 command waits for once the temperature is achieved.

  • administrators

    The M190 and M116 commands currently only wait until the temperature is within 2.5C of the target. So the print might start when a temperature is 2.5C under target, regardless of how much overshoot there is.

    I am aiming for overshoot of no more than 1C in all situations. The problem is, classic PID can only be tuned to avoid overshoot at one particular temperature. I am getting good results on my Kossel with 30W E3Dv6 hot end. However, my Ormerod has a much more powerful heater, and it's hard to avoid a lot of overshoot unless I reduce the maximum PWM.

  • FWIW, I reduce the max PWM on all my hotends, even 25W heater cartridges from e3d. No shame in doing so. 🙂

  • Bypassing PID and using bang-bang when more than X degrees from the setpoint is a pretty reasonable way to reduce overshoot. Keeps the integral from winding up. Sailfish uses a +/-10C band for PID and will usually hit zero overshoot in my experience. That's a good value for "normal" hot end sizes/powers. Or for a possibly more flexible approach, turn off error accumulation for the integral term when the P term is saturated and you're below the control band. (Not over the control band though, that would be dangerous.)

  • We're in 32-bit land, though, does it make sense to allow multiple sets of PID parameters for multiple target temperatures? One per ten Celsius degrees, perhaps, or a maximum of five and it picks the closest? I don't know how short of EEPROM and code space the Duet is.

Log in to reply