Setting up heater chamber - need help



  • Hello,

    I am trying to set a heating element for the chamber. Then I am trying to do autotune it comes back with a warning - Autotune canceled because the temperature is not increasing.
    Also if I just start heating it comes back after 15 seconds with an error - Error: Heating fault on heater 5, temperature rising much more slowly than the expected 1.7°C/sec
    I did try to play with dead time in M307 and I have a feeling there is no difference if I set it to D5 or D2000 in config.override.

    This is how I set it in config.g

    ; Heaters
    M141 H5 					; heater 5 is the chamber heater
    M305 X1 P5 B4725 C7.060000e-8 			; heater 5 is monitored by a E3D thermistor
    M307 H5 A340.0 C140.0 D2000 S1.00 V0.0 B1	; use bang-bang control for the chamber heater
    M307 H0 B0 S1.00                        	; disable bang-bang mode for the bed heater and set PWM limit
    M305 P0 T100000 B4138 R4700             	; set thermistor + ADC parameters for heater 0
    M143 H0 S150                            	; set temperature limit for bed heater 0 to 150C
    M305 P1 X200                                    ; configure PT100 for heater 1
    M143 H1 S480                                    ; set temperature limit for heater 1 to 480C
    M305 P2 X201                                    ; configure PT100 for heater 2
    M143 H2 S300                                    ; set temperature limit for heater 2 to 300C
    
    

    and here config-override.g

    ; config-override.g file generated in response to M500 at 2020-07-21 19:37
    ; This is a system-generated file - do not edit
    ; Heater model parameters
    M307 H0 A93.0 C409.5 D0.7 S1.00 V24.2 B0
    M307 H1 A422.1 C232.8 D3.9 S1.00 V24.2 B0
    M307 H2 A297.4 C164.9 D3.5 S1.00 V24.2 B0
    M307 H4 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    M307 H5 A340.0 C140.0 D2000 S1.00 V0.0 B1
    M307 H6 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    M307 H7 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    G10 L2 P1 X0.00 Y0.00 Z0.00
    G10 L2 P2 X0.00 Y0.00 Z0.00
    G10 L2 P3 X0.00 Y0.00 Z0.00
    G10 L2 P4 X0.00 Y0.00 Z0.00
    G10 L2 P5 X0.00 Y0.00 Z0.00
    G10 L2 P6 X0.00 Y0.00 Z0.00
    G10 L2 P7 X0.00 Y0.00 Z0.00
    G10 L2 P8 X0.00 Y0.00 Z0.00
    G10 L2 P9 X0.00 Y0.00 Z0.00
    

    My E3D thermistor (blue) located at the top of the chamber, and I have at the bottom 300W radiator with a fan blowing on it.

    Any idea what I should look up first? Thanks!



  • @felt342 please tell which hardware and firmware you're using.



  • @JoergS5 Hi I am using duet wifi and 2.11 firmware version.



  • @felt342 the firmware version is unknown to me, I know current 2.05.1 or 3.1.1, is it a beta version?



  • @JoergS5

    Oh yes its 2.05.1 sorry!



  • @felt342 said in Setting up heater chamber - need help:

    M307 H5 A340.0 C140.0 D2000 S1.00 V0.0 B1

    M307 A parameter together with S results in goal temperature, which is 340 °C, seems to be too high for a chamber.
    (A temperature * S PWM % => goal temp)

    https://duet3d.dozuki.com/Wiki/Gcode#Section_M307_Set_or_report_heating_process_parameters



  • @JoergS5

    Yes, those values were there by default in congid-override, I only change dead time to 2000, just to check. But how do I start fresh autotune without any values? As I was thinking to obtain proper values from auto-tune, or do I need to enter something manual there? However, I did change A value to 70 and it doesn't affect anything seems like.



  • @felt342 chamber heater documentation https://duet3d.dozuki.com/Wiki/Connecting_and_configuring_a_chamber_heater is without M307, I expect M307 has an expected temperature timeout according to heatblock and bed heating up, which is faster than chamber. But I didn't find anything yet.

    Maybe M307 C parameter higher, because you will need more than 2 minutes to heat up the chamber.

    I found a good documentation of the M307 parameters which can help: https://duet3d.dozuki.com/Wiki/Tuning_the_heater_temperature_control#Section_Setting_the_model_parameters_manually
    Setting C higher seem to be a good try.



  • @JoergS5 I saw this and I first what I used to check why I don't see any difference between dead time 5 and 2000 is this:

    M307 H5 ; report model parameters for heater 5, and whether the model is being used
    

    And it did report me this:

    	M307 H5
    Heater 5 model: gain 340.0, time constant 140.0, dead time 5.5, max PWM 1.00, calibration voltage 0.0, mode PID, inverted no, frequency default
    Computed PID parameters for setpoint change: P13.4, I0.482, D51.4
    Computed PID parameters for load change: P13.4
    

    Then in my config-override is a completely different story for Heater 5.

    If I do M307 H1 then it reports correct numbers from config-override corresponding to Heater 1.

    Why it might happen?

    Trying with higher C now..



  • @felt342 the config-override is loaded if you have M501 in your config (in most cases at the end of the config). I would comment the M307 H5 in override out until solved in config.

    The D parameter seems to be a delay time "The D parameter is the dead time, which is the delay between a change in PWM and an appreciable effect on the rate of temperature change.", so in my understanding better set it low.



  • @JoergS5

    I did remove M501 from config.g, and if I use now M370 H5 to report PID values, its show me again something wrong..

    M307 H5
    Heater 5 model: gain 340.0, time constant 140.0, dead time 5.5, max PWM 1.00, calibration voltage 0.0, mode PID, inverted no, frequency default
    Computed PID parameters for setpoint change: P13.4, I0.482, D51.4
    Computed PID parameters for load change: P13.4
    

    this is my config.g

    ; General preferences
    G90                                             ; send absolute coordinates...
    M83                                             ; ...but relative extruder moves
    M550 P"own"                                     ; set printer name
    
    M667 S1                                         ; select CoreXY mode
    
    ; Network
    M552 S1                                         ; enable network
    M586 P0 S1                                      ; enable HTTP
    M586 P1 S0                                      ; disable FTP
    M586 P2 S0                                      ; disable Telnet
    
    ; Drives
    M569 P0 R-1
    M569 P0 S1                                      ; physical drive 0 goes forwards
    M569 P1 S1                                      ; physical drive 1 goes forwards
    M569 P2 S1                                      ; physical drive 2 goes forwards
    M569 P3 S1                                      ; physical drive 3 goes backwards
    M569 P4 S1                                      ; physical drive 4 goes forwards
    M584 X4 Y1 Z2 E3:0                             ; set drive mapping
    M350 X16 Y16 Z16 E16:16 I1                      ; configure microstepping with interpolation
    M92 X200.8 Y200.8 Z400.5 E415:415		; set steps per mm
    M566 X900 Y900 Z20 E2000.00:2000.00      	; set maximum instantaneous speed changes (mm/min)
    M203 X15000 Y15000.00 Z200 E13000.00:13000.00   ; set maximum speeds (mm/min)
    M201 X1000 Y1000 Z100 E3000.00:3000.00      	; set accelerations (mm/s^2)
    M906 X1300 Y1300 Z1500 E600:600 I30             ; set motor currents (mA) and motor idle factor in per cent
    M84 S90                                         ; Set idle timeout
    
    ; Axis Limits
    M208 X-16 Y0 Z0 S1                                ; set axis minima
    M208 X321 Y208 Z305 S0                        ; set axis maxima
    
    ; Endstops
    M574 Z1 S2                		     ; set active low and disabled endstops
    M574 X1 S0                			  ; set active high endstops
    M574 Y2 S0
    
    ; Z-Probe
    M307 H3 A-1 C-1 D-1                             ; disable heater on PWM channel for BLTouch
    M558 A10 S0.005 P9 H3 F60 T5000 R0.3                          ; set Z probe type to bltouch and the dive height + speeds
    G31 P25 X-10 Y-47.06 Z-0.19                  ; set Z probe trigger value, offset and trigger height (positive value brings bed closer)
    M557 X0:290 Y-45.952:190 S20                      ; define mesh grid
    
    ; Heaters
    M141 H5 					; heater 5 is the chamber heater
    M305 X1 P5 B4725 C7.060000e-8 			; heater 5 is monitored by a E3D thermistor
    M307 H5 A70 C600 D2000 S1.00 V0.0 B1	; use bang-bang control for the chamber heater
    M307 H0 B0 S1.00                        	; disable bang-bang mode for the bed heater and set PWM limit
    M305 P0 T100000 B4138 R4700             	; set thermistor + ADC parameters for heater 0
    M143 H0 S150                            	; set temperature limit for bed heater 0 to 150C
    M305 P1 X200                                    ; configure PT100 for heater 1
    M143 H1 S480                                    ; set temperature limit for heater 1 to 480C
    M305 P2 X201                                    ; configure PT100 for heater 2
    M143 H2 S300                                    ; set temperature limit for heater 2 to 300C
    
    ; Fans
    M106 P0 S0 I0 F20 H-1                          ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S1 I0 F20 H-1                          ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P2 S1 I0 F20 H-1                          ; set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned off
    
    ; Tools
    M563 P0 S"Left" D0 H1 F-1                       ; define tool 0
    G10 P0 X0 Y0 Z0                                 ; set tool 0 axis offsets
    G10 P0 S0 R175 									; Set tool 0 active and standby temperatures
    M563 P1 S"Right" D1 H2 F-1                      ; define tool 1
    G10 P1 X20.09 Y0 Z0                               ; set tool 1 axis offsets
    G10 P1 S0 R175 									; Set tool 0 active and standby temperatures
    
    ; Custom settings are not defined
    
    ; Miscellaneous
                                               ; load saved parameters from non-volatile memory
    
    
    

    Higher C did not work.



  • @felt342 please try setting D low (see my text change).

    I expect the values to be changed after a reboot only or setting it differently explicitly.



  • @JoergS5

    Okay, there is some light -

    I did set D value to 1, and for some reason, if I report M307 H5 its does show me values from the config.g finally!

    And start to autotune however it seems didn't change anything.



  • @felt342 is the error message Error: Heating fault on heater 5, temperature rising much more slowly than the expected 1.7°C/sec gone now? Would be interesting how the 1.7 is calculated. Then we can understand how to set it higher.



  • @JoergS5 I just did a test and got now this error with 0.3C/s

    Error: Heating fault on heater 5, temperature rising much more slowly than the expected 0.3°C/sec
    

    Could be what my value for E3D thermistor are wrong? But those values is something that I found on duet forum for e3d thermistor.



  • @felt342 can you see how 1.7 and 0.3 is calculated? M307 original and now)?
    I found the error message in the source code, it depends on expected rate, dead time, the current temperature and the PWM.

    Measuring the temperature wrong could be a reason.

    I've also seen 4725 as value for the E3D thermistor. You could try verifying that it works by heating up somehow without the chamber heater. (hair dryer)



  • @JoergS5

    Well, setting C value to 2000 doesn`t give me an error anymore about Fault in heater 5, and its keeps the rising temperature. But I still can not do the autotune.

    Yeah the thermistor seams works.



  • @felt342 you get the same autotune error like in the first post? And does the reported temperature value of the thermistor go up?



  • @JoergS5

    Yes, this is an error:

    Autotune canceled because the temperature is not increasing.
    

    Temperature goes up, but slowly about 1 degree a minute. This would be fine for me because I am planning to add two heaters there overall of 600, but first I got one and would like to deal it up first, to at least heating without errors. Which we did now (thanks to you!) setting C to 2000, but to perform autotune for real values would be better.



  • @felt342 Seems to be a timeout. I cannot find the error message in the source at the moment.



  • @JoergS5

    Yeah, I really appreciate your help and digging in! What I am thinking is maybe better to move thermistor to the middle of the chamber, it will probably be the faster response until I have only one heater.



  • @felt342 Now I know why I cannot find it. I search in the 3.1.1 code....

    => didn't find it in 2.05 code also. Will search and will tell you if I find something.



  • @JoergS5

    Happens 🙂
    Thank you!



  • @felt342 I found it in pid.cpp of 2.05 source:

    // Heating up
    {
    const bool isBedOrChamberHeater = reprap.GetHeat().IsBedOrChamberHeater(heater);
    const uint32_t heatingTime = millis() - tuningPhaseStartTime;
    const float extraTimeAllowed = (isBedOrChamberHeater) ? 60.0 : 30.0;
    if (heatingTime > (uint32_t)((model.GetDeadTime() + extraTimeAllowed) * SecondsToMillis)
    && (temperature - tuningStartTemp) < 3.0)
    {
    platform.Message(GenericMessage, "Auto tune cancelled because temperature is not increasing\n");
    break;
    }

    So the error message is called and a break occurs, if the heating time is bigger than dead time + extraTimeAllowed.

    A low dead time helps in any case.

    extraTimeAllowed is defined by:
    const float extraTimeAllowed = (isBedOrChamberHeater) ? 60.0 : 30.0;
    so for Chamber it is 60.
    You could try setting D negative, say -59. Don't know whether it works.

    You're welcome and I wish you success with the heated chamber!



  • @JoergS5

    That seems working without error!
    I didn't try negative D, but I set D to 1 and kept C at 2000, waiting for autotune and values 🙂

    Thanks a lot again!


Log in to reply