Adventures in PID Tuning - Judging how much to change a setting?



  • I am struggling to get my extruder to behave itself with regards to temperature overshoot.

    If I issue M502 (to reset back to factory) and then manually set the target temp to 190 Degrees, the extruder heat's up to 201.1 Degrees, 11.1 degrees over the target 190 and then it will drop down to 188 and then back up over the 190 target for a while before dropping back.

    I have cleared any M307 H1 settings from config-override.g, made sure I am tuning from room temperature and then run PID Auto-tune with the following;

    M303 H1 S190 C8

    Once auto-tune finishes I perform M307 H1 to see the new results and then manually rerun the 190 Degree test to see how the extruder temp behaves.

    The results from auto-tune are as follows;

    Warning: Heater 1 appears to be over-powered. If left on at full power, its temperature is predicted to reach 481C.
    Auto tune heater 1 completed in 283 sec
    Use M307 H1 to see the result, or M500 to save the result in config-override.g

    M307 H1
    Heater 1 model: gain 456.7, time constant 184.9, dead time 8.9, max PWM 1.00, calibration voltage 12.4, mode PID, inverted no, frequency default
    Computed PID parameters for setpoint change: P8.1, I0.201, D50.6
    Computed PID parameters for load change: P8.1,

    After auto-tune it overshoots by around 5 Degrees and then drops down below 190 by about 2 Degrees.

    dc42 has stated elsewhere in the forums;

    " If the temperature oscillates around the target value, increase the dead time (D) parameter. It it's slow to respond to changes in the environment (e.g. the print cooling fan turning on), you can try reducing the D parameter.

    If the temperature overshoots, increase the gain (A parameter). If it undershoots, reduce the A parameter."

    I go ahead and enter the following in config.g on the understanding that I can tweak the settings to get a result closer to stable once it's in place;

    M307 H1 A456.7 C184.9 D8.9 S1.0 V12.4 B0

    I also remember to add M501 to the end of the config.g file.

    According to the guidance I should be raising the gain in order to compensate for overshoot. But I have tried that without much success.

    So my question is this.

    When adjusting the gain should I be making small or large changes in order to see a beneficial reaction from the extruder temperature?

    The heaters section of my config.g look like this;

    ; Heaters
    ; Bed [H0 - Heater 0]
    M143 H0 S70 ; Set temperature limit for heater 0 to 70C
    M305 P0 T100000 B3988 R4700 ; Set thermistor + ADC parameters for heater 0
    M307 H0 A114.0 C410.3 D2.7 S1.0 V12.3 B0 ; PID Auto-tune Values for Bed [H0]

    ; Extruder [H1 - Heater 1]
    M143 H1 S245 ; Set temperature limit for heater 1 to 245C
    M305 P1 T100000 B3988 R4700 ; Set thermistor + ADC parameters for heater 1
    M307 H1 A456.7 C184.9 D8.9 S1.00 V12.4 B0 ; PID auto-tune Values for Extruder [H1]



  • @b0m0a0k said in Adventures in PID Tuning - Judging how much to change a setting?:

    I go ahead and enter the following in config.g on the understanding that I can tweak the settings to get a result closer to stable once it's in place;
    M307 H1 A456.7 C184.9 D8.9 S1.0 V12.4 B0
    I also remember to add M501 to the end of the config.g file.

    Are you also issuing M500 to save the settings to config-override? If you manually enter them into config.g but don't have them saved to config-override, that M501 at the end will load the defaults again.


  • administrators

    @b0m0a0k said in Adventures in PID Tuning - Judging how much to change a setting?:

    I go ahead and enter the following in config.g on the understanding that I can tweak the settings to get a result closer to stable once it's in place;
    M307 H1 A456.7 C184.9 D8.9 S1.0 V12.4 B0
    I also remember to add M501 to the end of the config.g file.

    Read the instructions. Either edit the M301 command in config.g and make sure you don't have M501 at the end of config.g, or send M500 after auto tuning to generate the M307 command and write it to config-override.g, and make sure you do have M501 at the end of config.g.


Log in to reply