The firmware doesn't wait for the temperature to drop

  • @dc42:

    M109 R50 should work. I will test it. So should M104 S50 followed (not preceded) by M116 if you have a tool selected already. Did you mean to use M116 not M106?

    Yes, I meant M116. The tool is selected but still doesn't work for me.

  • Here is my config file. It might helpful for debugging:
    ; Configuration file for Duet WiFi (firmware version 1.17)
    ; executed by the firmware on start-up
    ; generated by RepRapFirmware Configuration Tool on Thu Jan 19 2017 13:13:50 GMT-0800 (Pacific Standard Time)

    ; General preferences
    M111 S0 ; Debugging off
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates…
    M555 P1 ; Set firmware compatibility to look like RepRapFirmare

    M584 X0 Y1 Z2 U3 V4 E5:6:7:8:9 ; Create U and V axes

    M208 X0 Y0 Z-10 U-210 V-210 E0:0:0:0:0 S1 ; Set axis minima

    M208 X250 Y615 Z50 U150 V150 E1:1:1:1:1 S0 ; Set axis maxima

    ; Endstops
    M574 X1 Y1 Z1 U1 V1 E1:1:1:1:1 S0 ; Define active S0=LOW or S1=HIGH microswitches

    ; Drives
    M569 P0 S0; Drive 0 goes forwards
    M569 P1 S0; Drive 1 goes forwards
    M569 P2 S1; Drive 2 goes forwards
    M569 P3 S0; Drive 3 goes forwards
    M569 P4 S0; Drive 4 goes forwards
    M569 P5 S1; Drive 5 goes forwards
    M569 P6 S1; Drive 6 goes forwards
    M569 P7 S1; Drive 7 goes forwards
    M569 P8 S1; Drive 8 goes forwards
    M569 P9 S1; Drive 9 goes forwards

    M350 X16 Y16 Z16 U16 V16 E16:16:16:16:16 I1 ; Configure microstepping with interpolation

    M92 X320 Y320 Z640 U1066.66 V1066.66 E100💯100💯100 ; Set steps per mm

    M566 X500 Y500 Z500 U300 V300 E1000:1000:1000:1000:1000 ; Set maximum instantaneous speed changes (mm/min)

    M203 X5000 Y5000 Z500 U500 V500 E1000:1000:1000:1000:1000 ; Set maximum speeds (mm/min)

    M201 X200 Y200 Z200 U200 V200 E200:200:200:200:200 ; Set accelerations (mm/s^2)

    M906 X1200 Y1900 Z800 U1600 V1600 E800:800:800:800:800 I20 ; Set motor currents (mA) and motor idle factor in per cent

    M84 S10 ; Set idle timeout

    ; Heaters
    M307 H0 A-1 C-1 D-1
    M307 H1 A-1 C-1 D-1
    M307 H2 A-1 C-1 D-1

    ;M307 H3 A-1 C-1 D-1
    M307 H3

    M307 H4 A-1 C-1 D-1
    M307 H5 A-1 C-1 D-1
    M307 H6 A-1 C-1 D-1
    M307 H7 A-1 C-1 D-1

    ; Tools
    M563 P0 D2 H3 ; Tool 0 drive 2 Heater 5

    ; Detach Fans
    ;I'm using these as IOs

    M106 P0 H-1
    M106 P1 H-1
    M106 P2 H-1
    M106 P3 H-1
    M106 P4 H-1
    M106 P5 H-1
    M106 P6 H-1
    M106 P7 H-1

    ; Network
    M550 PAAA ; Set machine name
    M551 Paaa ; Set password
    M552 P0.0.0.0 S1 ; Enable network and acquire dynamic address via DHCP

    ; Custom settings are not configured

  • administrators

    I just tested M109 R80 followed by M117 in a macro, and it did wait for the hot end to cool down (to 82.5C, which it considers near enough). Then I tried M109 R50 followed by M117, and again it waited for the hot end to cool down before displaying the message.

  • I found the issue!

    M109 RXX works for any number greater than or equal to 40. Any number below 40 doesn't work. In my application, I need to wait for the heater to get to the room temperature. Is there any way I can do that?

  • Maybe as a short term workaround, wait until it gets to 40C and then pause for X seconds?

  • @elmoret:

    Maybe as a short term workaround, wait until it gets to 40C and then pause for X seconds?

    Thanks, that's what I'm doing now, but that pause doesn't get me back to the same temperature each time. As you said, it's a good short-term workaround.

  • administrators


    I found the issue!

    M109 RXX works for any number greater than or equal to 40. Any number below 40 doesn't work. In my application, I need to wait for the heater to get to the room temperature. Is there any way I can do that?

    That's right, 40C is considered low enough that it might be close to room temperature in a hot climate and cooling below that might be impossible. But you said you were commanding 50C. The Duet doesn't know what your room temperature is.

  • I was commanding a lot of numbers and was confused what was going on. I wrote 50 here as an example because I thought there was something wrong with my setup and the number doesn't actually matter. Anyway, thanks for the replies. I think I need to figure out a workaround for what I want to do.

  • I'm encountering a similar problem with tool change

    G1 F5000 Z2
    M106 S255

    G1 F5000 Z2
    M106 S255



    it doesn't wait fro temp stabilisation, it just goes straight through, i.e. the print doesn't wait on the tool change to sort its temp before restarting

  • administrators

    What active and standby temperatures have you set in your G10 commands?

  • Active for both is 190 Standby for both is 170

  • Hi, any ideas on this as I want to use for my dual extrusion work?

  • administrators

    My dual extrusion machine is down to single extrusion at present, but I'll try to get the second extruder working again and test it over the weekend.

  • Brilliant, thanks

  • Hi DC, any update as want to try and move to tool macros but need this to work.

  • administrators

    I'm sorry, I re-installed my send extruder but I didn't get any further than that.

    Please can you confirm exactly what problem you are getting on a tool change.

  • Hi, yes it may be my interpretation of M116, but I thought that "wait for temperatures to stabilise would mean that on a dual extruder system where you set both extruders to have an active temp of 190 and a standby temp of 170 the firmware would pause during the extruder change for the standby tool to reach 170 and the active to reach 190.

    So in my macros (above) issue M116 on tfre would wait for the currently active but soon to be inactive tool to reach 170, then another M116 in the tpre or tpost would wait for the active tool to reach 190 before restarting the print. This is not happening, so although the tools swap, the original tool is still cooling and the new tool starts to print at 170 and the temperature rises to 190.

  • administrators

    Yes, M116 with no parameters should work like that. I'll check it out. However, tfree#.g is called just before the tool is deselected, so the M116 command in your tfree#.g files won't do anything because the old tool is still active at that point.

    I normally recommend just M116 P0 in the tpost0.g file and M116 P1 in the tpost1.g file. That way, it waits for the new tool to heat to active temperature, but doesn't wait for the old one to cool down - which takes longer and isn't necessary on most printers. But M116 with no parameters in tpost#.g should work if you want to wait for cool down as well.

  • So just to verify, if I add
    M116 P1
    M116 P0

    to tpost0


    M116 P0
    M116 P1

    to tpost1

    it should wait for the previous extruder to cool to standby and then wait for the new to heat to active before proceeding?

  • administrators

    Yes, that ought to work.


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