Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Fine Grained Heater Control

    Scheduled Pinned Locked Moved
    Firmware developers
    7
    22
    994
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • gtj0undefined
      gtj0 @dc42
      last edited by

      @dc42 said in Fine Grained Heater Control:

      @gtj0 said in Fine Grained Heater Control:

      OK, I'm re-re-resurrecting this 🙂

      How about this...
      Add a "Q" parameter to M140/141 to set state. 0 = Off, 1 = Standby, 2 = On.
      If the parameter isn't provided, assume "On" just like it is today.

      I'd rather not use Q, it's too similar to O and 0. But I agree with the principle.

      How about "T" for sTate?

      Add "H" and "Q" parameters to "T" to be able to set a tool heater's state without changing the Tool's state. "H": the tool's heater number (not the global heater number), "Q": same as "M140/141". This would allow tool preheat and "keep hot" commands to be included in gcode before and after the tool is actually selected/deselected.

      I'm less keen on that. RRF already has the concept of a tool being in standby mode to keep its heaters hot when it is switched from active to standby. To handle preheat, how about adding a command to set a tool to Standby if it is currently Off? The same tool command could have an option to turn a tool off if it is in standby.

      Yeah but that way you can't bring the heaters up to "active" temp before making the tool active and I'm not sure it's a good idea to tie the 2 states together. Let's say I'm building a fancy new tool changer and I have a gcode pre-processor. Let's also say that the pre-processor has the ability to calculate the optimal times for changing heater state so that the heaters are in the perfect state before being activated. Let's also say that the pre-processor is smart enough to know that the tool is going to be used again shortly and keep the heaters at the "active" temperature when the tool goes to standby. I will say that a tool should not allow a heater state change while it's active and that check was always my plan.

      I used the "T" command because that one already changes tool states. If you want a separate one how about M1040 or M3090 or something else. You choose.

      dc42undefined wilrikerundefined 2 Replies Last reply Reply Quote 0
      • dc42undefined
        dc42 administrators @gtj0
        last edited by

        @gtj0 said in Fine Grained Heater Control:

        Yeah but that way you can't bring the heaters up to "active" temp before making the tool active and I'm not sure it's a good idea to tie the 2 states together. Let's say I'm building a fancy new tool changer and I have a gcode pre-processor. Let's also say that the pre-processor has the ability to calculate the optimal times for changing heater state so that the heaters are in the perfect state before being activated. Let's also say that the pre-processor is smart enough to know that the tool is going to be used again shortly and keep the heaters at the "active" temperature when the tool goes to standby. I will say that a tool should not allow a heater state change while it's active and that check was always my plan.

        So I think what you are looking for is a command to temporarily change the standby temperature of a tool heater. That temperature setting would be lost when the tool switches to active or off.

        It might be reasonable to temporarily change the active temperature of a tool heater too (which would be lost when the tool goes to off or standby). But if the tool is off, I don't think changing its heater temperatures should be permitted.

        Duet WiFi hardware designer and firmware engineer
        Please do not ask me for Duet support via PM or email, use the forum
        http://www.escher3d.com, https://miscsolutions.wordpress.com

        gtj0undefined 1 Reply Last reply Reply Quote 0
        • gtj0undefined
          gtj0 @dc42
          last edited by

          @dc42 I think temporarily changing the set temps would be a little more confusing and you'd have to save the original temps and you wouldn't be able to tell from the object model whether the temp was temporary or permanent. I wanted to be able to display the heater state separate from the tool state.

          How about this... Can I go ahead with a pull request for the M140/141 change using the "T" parameter to set the state while we continue the tool heater discussion?

          dc42undefined 1 Reply Last reply Reply Quote 0
          • dc42undefined
            dc42 administrators @gtj0
            last edited by

            @gtj0 said in Fine Grained Heater Control:

            @dc42 I think temporarily changing the set temps would be a little more confusing and you'd have to save the original temps and you wouldn't be able to tell from the object model whether the temp was temporary or permanent. I wanted to be able to display the heater state separate from the tool state.

            How about this... Can I go ahead with a pull request for the M140/141 change using the "T" parameter to set the state while we continue the tool heater discussion?

            I would rather we decided on how to handle temporary changes to the set temperature for tool heaters first, in case it affects how we control other heaters.

            Duet WiFi hardware designer and firmware engineer
            Please do not ask me for Duet support via PM or email, use the forum
            http://www.escher3d.com, https://miscsolutions.wordpress.com

            1 Reply Last reply Reply Quote 0
            • zaptaundefined
              zapta @dc42
              last edited by

              @dc42 said in Fine Grained Heater Control:

              Is there any point in having standby temperatures for bed and chamber heaters?

              Always found it to be confusing. compared to simple current target temperature and on/off. At least for in a single extruder printer like mine. Same for tool selection UI.

              Would be nice to be able to eliminate the extra complexity when configuring for a simple single extruder printer.

              dc42undefined 1 Reply Last reply Reply Quote 0
              • dc42undefined
                dc42 administrators @zapta
                last edited by dc42

                @zapta said in Fine Grained Heater Control:

                Would be nice to be able to eliminate the extra complexity when configuring for a simple single extruder printer.

                That's already done, since several years ago. M109 automatically selects the first tool if no tool is selected. You can put T0 at the end of config.g to select tool 0 automatically.

                The point is that RRF allows much more flexible tool and heater configuration than other firmwares do, and some types of 3D printer need this flexibility. Unfortunately, most slicers haven't caught up even after 5 years.

                Duet WiFi hardware designer and firmware engineer
                Please do not ask me for Duet support via PM or email, use the forum
                http://www.escher3d.com, https://miscsolutions.wordpress.com

                zaptaundefined 2 Replies Last reply Reply Quote 0
                • wilrikerundefined
                  wilriker @gtj0
                  last edited by

                  @gtj0 said in Fine Grained Heater Control:

                  Let's also say that the pre-processor has the ability to calculate the optimal times for changing heater state so that the heaters are in the perfect state before being activated. Let's also say that the pre-processor is smart enough to know that the tool is going to be used again shortly and keep the heaters at the "active" temperature when the tool goes to standby. I will say that a tool should not allow a heater state change while it's active and that check was always my plan.

                  That's exactly what the pre-processor of Diabase does. It (mis)uses standby temp for this purpose, i.e. when time has come for a tool to preheat it will edit standby temp to active temp and insert appropriate commands to restore actual standby temp when the tool is deselected.

                  Manuel
                  Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
                  with probably always latest firmware/DWC (incl. betas or self-compiled)
                  My Tool Collection

                  gtj0undefined 1 Reply Last reply Reply Quote 0
                  • zaptaundefined
                    zapta @dc42
                    last edited by zapta

                    @dc42 said in Fine Grained Heater Control:

                    You can put T0 at the end of config.g to select tool 0 automatically.

                    Yes, I have it at the end of my config.g but sometimes, when I do manual operations via PanelDue I need to select the tool to get it heating up. Not sure what got it to get deselected.

                    With a single tool, it would be nice to be able to hide the concept of tool selection for a more intuitive PanelDue/Web user experience with a single tool machine. In a sense, it's an unnecessary leak of complexity from more complex machines.

                    1 Reply Last reply Reply Quote 0
                    • gtj0undefined
                      gtj0 @wilriker
                      last edited by

                      @wilriker said in Fine Grained Heater Control:

                      @gtj0 said in Fine Grained Heater Control:

                      Let's also say that the pre-processor has the ability to calculate the optimal times for changing heater state so that the heaters are in the perfect state before being activated. Let's also say that the pre-processor is smart enough to know that the tool is going to be used again shortly and keep the heaters at the "active" temperature when the tool goes to standby. I will say that a tool should not allow a heater state change while it's active and that check was always my plan.

                      That's exactly what the pre-processor of Diabase does. It (mis)uses standby temp for this purpose, i.e. when time has come for a tool to preheat it will edit standby temp to active temp and insert appropriate commands to restore actual standby temp when the tool is deselected.

                      Yeah and I'd prefer to not mis-use standby temp and have to keep track of the previous value. I simply want to change state without having to maintain "state" externally.

                      1 Reply Last reply Reply Quote 0
                      • zaptaundefined
                        zapta @dc42
                        last edited by

                        @dc42, here is an example of what I said earlier. This is a single extruder machine, the active temp is set to 240 but the hotend doesn't heat because it's not selected.

                        IMG-1782.png

                        1 Reply Last reply Reply Quote 0
                        • gtj0undefined
                          gtj0
                          last edited by

                          @dc42 So where does that leave us? Temporarily changing standby temps seems like a complicated hack to me when all I want to do is change heater state.

                          @zapta Can you describe in more detail what behavior would you like to see for single-tool single-heater printers?

                          zaptaundefined 1 Reply Last reply Reply Quote 0
                          • jay_s_ukundefined
                            jay_s_uk
                            last edited by

                            you can select the hot end from paneldue by clicking on its icon.

                            Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

                            1 Reply Last reply Reply Quote 0
                            • zaptaundefined
                              zapta @gtj0
                              last edited by

                              @gtj0 said in Fine Grained Heater Control:

                              @zapta Can you describe in more detail what behavior would you like to see for single-tool single-heater printers?

                              Basically similar UI model most single head printers have. Something along this lines

                              • Nozzle: current temp, target temp.

                              • Bed: current temp, target temp.

                              Target temp of 0 indicates off. Turning heaters on/off is done by controlling the target temp. No concept of 'tool selection' as there is only one tool. No concept of standby.

                              Everything above is about the UI aspects that are exposed to the operator, not the internal model or gcodes.

                              gtj0undefined 1 Reply Last reply Reply Quote 0
                              • gtj0undefined
                                gtj0 @zapta
                                last edited by

                                @zapta said in Fine Grained Heater Control:

                                @gtj0 said in Fine Grained Heater Control:

                                @zapta Can you describe in more detail what behavior would you like to see for single-tool single-heater printers?

                                Basically similar UI model most single head printers have. Something along this lines

                                • Nozzle: current temp, target temp.

                                • Bed: current temp, target temp.

                                Target temp of 0 indicates off. Turning heaters on/off is done by controlling the target temp. No concept of 'tool selection' as there is only one tool. No concept of standby.

                                Everything above is about the UI aspects that are exposed to the operator, not the internal model or gcodes.

                                OK, well that can be solved in the UIs however this discussion winds up.

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post
                                Unless otherwise noted, all forum content is licensed under CC-BY-SA