Hot End Temps Fluctuating

  • In the process of dialing in my slicer settings, I got concerned that my hot end temps were wonky. I decided to run a fresh autotune on the hot end; M303 H1 S200 P1.00.

    The autotune ran without issue and I saved the values to the override.config file via M500.

    Now the hot end temp seems to be fluctuating a lot more than it used to. The temp chart line for the hot end (I'm 90% sure) used to be a nice straight line with fluctuations of only about 1/2 a degree or so. Now it seems to be fluctuating a full 2 degrees or a little more.

    I've ran through the autotune a couple more times, always starting from room temp.

    M307 values: M307 H1 A256.1 C203.9 D3.6 S0.60 B0


  • I had a similar issue once. It started like this and after a few weeks it got worse.
    Check out this thread:

    …Yes, I did all the fixes together, so I can't tell what actually corrected the issue.

    Best of luck.

    EDIT: It was a Rambo board.

  • administrators

    Try increasing the M307 D parameter. An increase of between 30 and 100% should fix it. Don't go too high, or responsiveness will suffer.

  • Without any auto-tune, my hotend is very stable; it just have a little over-shoot at startup. I then tried to run auto-tune, and then, I had such oscillations. So I run default params.

    But I'm wondering something… When we start-up the heater, the fan is usually off, so the hotend heats up fast. But during prints, the fan is on! So, how do we manage that with auto-tune? Should we run it with the fan on, or fan off? This may require a clever procedure, starting without fan, then adjust params with fan...

  • administrators

    Autotune should be run with the heatsink cooling fan on. Are you controlling it thermostatically? if so it should come on anyway during the autotune routine. If you are controlling it another way then turn it on before autotuning.

  • I suspect the OP is talking about print cooling fan rather than hotend fan in which case I would suggest that the design of the fan duct is not optimal if it is cooling the nozzle

  • administrators

    yeah fair enough - if its contributing to hotend cooling then probably should be run during autotune - although its not necessarily on all the time in actual use. even better would be to sort the cooling duct out.

  • I was talking about print fan 😉

    It is designed so it blows right at the output of the nozzle, because when you print small parts, you need it to be that way. If it blows far from the nozzle, it does not help on small parts, where the nozzle does not move more than a few mm…

  • administrators

    see what results you get autotuning with the print fan on then.

  • …...........or try a silicone sock over the nozzle.

  • I already have one…

  • Ah OK. That usually helps. Regardless of how the fan duct is arranged, air will always be deflected onto the nozzle by the bed or the part itself. I guess doing the autotuning with the fan on as Tony suggested is your only option then.

  • administrators

    When I get time I intend to change the tuning algorithm to calibrate the extruder heater(s) with the print cooling fan both off and on. Meanwhile, I recommend tuning with the fan off. If you tune with the fan on, the gain value will come out too low and you will get overshoot when heating up.

  • I see. Well, as said, it works very well for my config with the default params…

  • Can I increase the S value in M307 after the PID has been done? I ask b/c even running the PID tune with a PWM value of one, it goes back to .6

    I am wondering if this is part of the issue?

  • administrators

    If the maximum PWM goes back to 0.6 then you must have another M307 command somewhere that is overriding the one from auto tuning. Are you copying the new M307 values into config.g after auto tuning, or are you running M500 to save them? If you are running M500, do you have a M501 command near the end of config.g to invoke config-override,g?

  • Yes, I have M307 in my config-override, and M501 at the end of my config.g.

    I am saving the M303 results via M500.

  • Config.g:
    ; Configuration file for Rostock Max v2

    ; Communication and general
    M111 S0 ; Debug off
    M550 PRoMax ; Machine name and Netbios name (can be anything you like)
    M551 ********* ; Machine password (used for FTP)
    ;*** If you have more than one Duet on your network, they must all have different MAC addresses, so change the last digits
    M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED ; MAC Address

    ;*** Networking - Enable for both WiFi and Ethernet boards.
    M552 S1 ; Turn network on

    ;*** Ethernet networking: Adjust the IP address and gateway in the following 2 lines to suit your network
    ;M552 P192.168.1.14 ; (0 = DHCP)
    ;M554 P192.168.1.255 ; Gateway
    ;M553 P255.255.255.0 ; Netmask

    M555 P2 ; Set output to look like Marlin
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates…
    M83 ; ...but relative extruder moves

    ; Disable Fan 1 thermostatic mode (actually, I've enabled it here)
    M106 P1 T50 S255 H1 ; Set hotend heatsink FAN1 thermostatic control at 50°C

    ; Axis and motor configuration
    M569 P0 S1 ; Drive 0 goes forwards
    M569 P1 S0 ; Drive 1 goes backwards
    M569 P2 S1 ; Drive 2 goes forwards
    M569 P3 S1 ; Drive 3 (extruder) goes forwards
    M569 P4 S1 ; Drive 4 goes forwards
    M574 X2 Y2 Z2 S1 ; set endstop configuration (all endstops at high end, active high)
    ;*** The homed height is deliberately set too high in the following - you will adjust it during calibration
    M665 R140 L290.8 B198.25 H380 ; set delta radius, diagonal rod length, printable radius and homed height
    M666 X0 Y0 Z0 ; put your endstop adjustments here, or let auto calibration find them
    M350 X16 Y16 Z16 E16:16 I1 ; Set 16x microstepping with interpolation
    M92 X80 Y80 Z80 ; Set axis steps/mm
    M906 X1000 Y1000 Z1000 E500 I60 ; Set motor currents (mA) and increase idle current to 60%
    M201 X3000 Y3000 Z3000 E9000 ; Accelerations (mm/s^2)
    M203 X20000 Y20000 Z20000 E15000 ; Maximum speeds (mm/min)
    M566 X2000 Y2000 Z2000 E1000 ; Maximum instant speed changes mm/minute

    ; Thermistors
    M305 P0 T100000 B3950 R4700 H0 L0 ; Put your own H and/or L values here to set the bed thermistor ADC correction
    M305 P1 T100000 B4725 R4700 C0.0000000706 H0 L0 ; Put your own H and/or L values here to set first nozzle thermistor ADC correction
    ;M305 P2 T100000 B3974 R4700 H0 L0 ; Put your own H and/or L values here to set 2nd nozzle thermistor ADC correction

    M570 S180 ; Hot end may be a little slow to heat up so allow it 180 seconds

    ; Adjustments for J-heads used as dummy heaters on test rig
    ;M307 H0 A250 C140 D5.5 B1
    ;M307 H1 A250 C140 D5.5 B0
    ;M307 H2 A250 C140 D5.5 B0

    ; Fans
    ;M106 P1 S-1 ; disable thermostatic mode for fan 1

    ; Tool definitions
    M563 P0 D0 H1 ; Define tool 0
    G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures
    ;*** If you have a single-nozzle build, comment the next 2 lines
    ;M563 P1 D1 H2 ; Define tool 1
    ;G10 P1 S0 R0 ; Set tool 1 operating and standby temperatures
    M92 E93.33:93.33 ; Set extruder steps per mm

    ; Z probe and compensation definition
    ;*** If you have a switch instead of an IR probe, change P1 to P4 in the following M558 command
    M558 P4 X0 Y0 Z0 H2 ; Z probe is a switch and is not used for homing any axes
    G31 X0 Y0 Z-.12 ; Set the zprobe height and threshold (put your own values here)

    ;*** If you are using axis compensation, put the figures in the following command
    M556 S78 X0 Y0 Z0 ; Axis compensation here

    M208 S1 Z0 ; set minimum Z

    T0 ; select first hot end

    ;M572 D0 S0.15 ; enable pressure advance

    M501 ; load override-config.g

  • Override:

    ; This is a system-generated file - do not edit
    ; Delta parameters
    M665 L290.800 R143.822 H377.945 B198.2 X-0.336 Y-0.480 Z0.000
    M666 X-0.222 Y0.269 Z-0.047 A0.00 B0.00
    ; Heater model parameters
    M307 H0 A72.4 C453.5 D16.0 S1.00 B0
    M307 H1 A256.1 C203.9 D6.0 S0.60 B0
    M307 H2 A250.0 C140.0 D5.5 S1.00 B0
    M307 H3 A340.0 C140.0 D5.5 S1.00 B0
    M307 H4 A340.0 C140.0 D5.5 S1.00 B0
    M307 H5 A340.0 C140.0 D5.5 S1.00 B0
    M307 H6 A340.0 C140.0 D5.5 S1.00 B0
    M307 H7 A340.0 C140.0 D5.5 S1.00 B0
    ; Z probe parameters
    G31 T1 P500 X0.0 Y0.0 Z0.70
    G31 T3 P500 X0.0 Y0.0 Z0.70
    G31 T4 P500 X0.0 Y0.0 Z-0.13

  • administrators

    Your config-override.g has S0.6 in the M307 command for heater 1. So you had a PWM limit of 0.6 last time you saved the parameters with M500.

  • I understand that, but maybe I'm confused. Is the PWM limit also adjusted by the Autotuning results?

    I just ran: M303 H1 S200 P1.00 and Here are the results:

    M307 H1
    Heater 1 model: gain 277.6, time constant 192.4, dead time 4.0, max PWM 0.70, mode: PID
    Computed PID parameters for setpoint change: P30.6, I0.159, D86.6
    Computed PID parameters for load change: P30.6, I2.521, D86.6

    That PWM of 0.70 is what was in my config-override before I started the autotune.

  • administrators

    Thanks, looks like I need to update the firmware to carry the P factor from M303 over to the M307 parameters.

    EDIT: I just checked the code. When tuning it uses the lower of the existing max PWM and the value you specified in the M303 command. I'll change that. For now, send M307 H1 S1 before you run M303.

  • @dc42:

    Thanks, looks like I need to update the firmware to carry the P factor from M303 over to the M307 parameters.

    EDIT: I just checked the code. When tuning it uses the lower of the existing max PWM and the value you specified in the M303 command. I'll change that. For now, send M307 H1 S1 before you run M303.

    Thanks David,

    I will give that a try before the next autotune. It is running a print right now. Do you think that could be part of my fluctuating temps? Its kinda what I am thinking, and is the path I'm following for now.

    Thanks again!

  • I'm marking this as solved, as I believe that was the issue David. Thanks!

Log in to reply