Autotune heater values not storing (calibration voltage)



  • Hi Guys,
    I hope that you can help me.
    I am having some difficulties with my duet.

    First, shortly, my setup:
    I am trying to print PPSU @ 405°C.
    E3D copper vocano block, PT100, Titanium heatbreak etc.

    Now, when i autotune the heater, it is all fine and the nozzle gets up to 400 degrees within 4 minutes.
    But when autotune is done, even when i put the A/C/D values in the config.cfg file, it remembers those but spits out different PID values when i want him to heat up inside a print.

    Here is what it spits out when i ask it M307 H1:

    M307 H1
    Heater 1 model: gain 735.3, time constant 375.3, dead time 63.8, max PWM 1.00, calibration voltage 0.0, mode PID, inverted no, frequency default
    Computed PID parameters for setpoint change: P1.4, I0.009, D63.8
    Computed PID parameters for load change: P1.4,

    I suspect that this has to do with the calibration voltage being stored as 0.0, while at the end of autotune it states it correctly as 12.1 volts. With this it calculates different PID values.
    I have searched high and low how to change the stored calibration voltage with no luck.

    Any help would be greatly appreciated.
    Thanks
    Max


  • administrators

    @nitrofreak said in Autotune heater values not storing (calibration voltage):

    max PWM 1.00, calibration voltage 0.0

    I forgot to upate the instructions at https://duet3d.dozuki.com/Wiki/Tuning_the_heater_temperature_control to include the calibration voltage in the example M307 command. I have corrected that now. You should add the calibration voltage that tuning reported as the V parameter in your M307 command. However, it should make very little difference unless you have large voltage fluctuations.



  • Hi David,

    Thank you for elaborating.
    I did put in the calibration voltage and you are right, it did not change much.

    However, now i am getting faults because the heater overshoots by 15 degrees.
    I wonder where they come from as i have not changed anything, from when i started.

    Here is a shot from an autotune i did, and notice the M307 H1 before giving out very similar A/C/D numbers, but vastly different PID values.

    alt text
    Any idea as to where the duet might be getting these new PID values from?

    Thank you
    Max


  • administrators

    Have you checked your config-override.g file for M307 commands?

    The parameters form auto turing look sensible. The older M307 parameters don't, the dead time is much too high.



  • Ok so i have deleted all the values in the config-override.g file, and it did work for one print.
    But as soon as i reset the board, the old values are back. But the config-override file is still empty (of those values).

    Is there a way where i can just type in those PID values manually?
    I have read that in the Legacy version this somehow works

    Thank you
    Max


  • administrators

    If the old values keep coming back, there must be another M307 H1 command somewhere, probably in another part of the config.g file.

    Note that every time you run M500, all the current M307 values get written to config-override.g.



  • Thank you, it seems to be solved now.
    I went over the config.g file, but did not find another M307 H1.
    What i did is to make sure to not use the M500 and delete the config.override.
    I don´t know why, but it seems to work now.

    Thank you very much!


  • administrators

    @nitrofreak said in Autotune heater values not storing (calibration voltage):

    Thank you, it seems to be solved now.
    I went over the config.g file, but did not find another M307 H1.
    What i did is to make sure to not use the M500 and delete the config.override.
    I don´t know why, but it seems to work now.

    Thank you very much!

    I'm glad it's working. If you send M500 now then it should store the current M307 values in config-override.g, unless there is a bug that I'm not aware of.


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.