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

    Toolchanger Tool Prep

    Scheduled Pinned Locked Moved
    General Discussion
    7
    17
    1.3k
    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.
    • Danalundefined
      Danal
      last edited by

      BACKGROUND

      As toolchangers become more popular, the time to swap tools becomes more and more important.

      One thing that slows down changes is "standby temperature". When a tool is parked for more than a few moments, leaving the hotend at extrusion temp will cause the filament already in the melt chamber to change in bad ways, and when that tool prints again, the first amounts of plastic deposited can be visually a different color, not deposit properly because they are too liquid, etc.

      Therefore, the whole concept of standby temp. Which is great. Until you go to get the tool again, and then there is a wait for it to warm up to extrusion temp.

      At the present time, there is no gcode that says "I am going to use this tool in a few moments, go ahead and switch it from standby to active temp". There is also no way to turn the extruder motor until the tool is mounted. It sure would be nice to warm up that tool, and extrude a bit (counting on the wiper to take care of the drool, as the tool is pulled from its stall)

      SUMMARY

      Gcode and/or firmware today provides nothing that will allow a toolchangers to "prepare" a tool in advance of mounting it.

      THE QUESTION

      This post is to trigger discussion. What should such G-Code look like? First, for heat: A new command? Extensions to existing commands? Second, for the actual extruder motor: Same questions.

      Should putting this new gcode in the right "advance of need" spot be a slicer responsibility? Should the firmware "look ahead" to tool changes and execute a "tprepx.g" macro a fixed amount (lines) ahead?

      And so forth...

      Delta / Kossel printer fanatic

      pawPrinterundefined 1 Reply Last reply Reply Quote 0
      • Danalundefined
        Danal
        last edited by Danal

        Here are a couple of my starting thoughts, subject to change as we all discuss:

        • Firmware look ahead: It would be really hard to decide how much to look ahead.

        • Slicer placement of new commands: I like this because we could experiment via post-processor to start.

        • Such a post processor could insert things a fixed number of lines back from a tool change, or a calculated amount of time back. It is not that hard to look at each line and calculate how long it takes. There are a ton of code examples around.

        • Commands: Heater: This is fairly easy, and in fact COULD be done with today's "standby" temp commands. Just raise standby to match extrusion at the "advance prep point". And, put in a command to put the "old" tool's standby at an appropriate temp, put that right after the Tx. So that would work, I'm just curious if there is a "more automated" way.

        • Commands Extruder: I believe this is going to take either a new command, or new syntax on G1. I'm leaning toward syntax on G1. Something like "G1 E0.123" stays exactly like today, moves the mounted extruder. "G1 E2:0.123" moves the extruder for tool 2. Thoughts?

        • Also on extruder, the concept of "constant drool" is something we may want. Continuous slow extrusion while parked, to keep plastic moving through the melt chamber. This would allow standby temps to be quite a bit higher, maybe even the same as extrusion temps. Syntax? I don't know, this is fundamentally different than "coordinated linear motion". This is motion that continues after the command (line) finishes. It could start with the idea of "G1 E2:99999 F90" or similar... move very far very slowly. But how to continue the move? On unix systems '&' causes a command (really a process) to continue in background. So how about "G1 E2:99999 F90 &" This would need to be auto-canceled the next time the tool is mounted. Or have a syntax for canceling it. "G1 E2:0 &" maybe.

        Again, I'm not married to any of the above, and the purpose of this thread is to solicit ideas.

        Delta / Kossel printer fanatic

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

          Have you seen this?
          https://github.com/mkudzia84/toolchanger-pspp
          I've started playing with it to set the tool changer temperature etc

          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

          Danalundefined 1 Reply Last reply Reply Quote 0
          • whosrdaddyundefined
            whosrdaddy
            last edited by

            I believe the look-ahead feature for tool changes is already on David's roadmap, no?

            1 Reply Last reply Reply Quote 0
            • deckingmanundefined
              deckingman @Danal
              last edited by

              @Danal On a similar vein, a few years ago I came up with the idea (which I still use) of advancing the tool change point within the gcode file by post processing with a python script. The rationale for that is for use with a mixing hot end when changing from one colour (tool) to another. When this happens, it takes nn amount of extrusion to purge one filament out of the mixing chamber before the next one comes through. So if one advances the tool change point, then the new tool is selected before it is needed and so takes care of most of the purging.

              The reason for all this diatribe is that DC42 said he would look to implement this look ahead tool change "thingy" in firmware. In fact, I think it's still on the firmware wish list somewhere so he might still have it in mind. IIRc I think he mentioned something about having 2 parallel gcode streams or some such.

              I'd have thought that it wouldn't be too difficult to have a macro containing the commands you want to use, then run this at the appropriate "pre tool change point" in the gcode file. You could certainly do it by post processing I'd have thought.

              On the subject of keeping filament at print temperature for extended periods of time, I can say that PLA is a bugger but PET-G isn't too bad. PLA will hydrolyse and this process begins at something like 140 deg C IIRC. So you need a very low standby temperature. It's probably just as easy and possibly less time consuming to keep it hot, accept that it will hydrolyse and run a big purge before before you use it. I've held PET-G at print temperature for over 8 hours before using it and not noticed any detrimental effects. But I haven't held any other filaments at print temperature for extended periods.

              Ian
              https://somei3deas.wordpress.com/
              https://www.youtube.com/@deckingman

              1 Reply Last reply Reply Quote 0
              • Danalundefined
                Danal @jay_s_uk
                last edited by

                @jay_s_uk said in Toolchanger Tool Prep:

                Have you seen this?
                https://github.com/mkudzia84/toolchanger-pspp
                I've started playing with it to set the tool changer temperature etc

                I have not seen that... will look at and think about!! Thanks.

                Delta / Kossel printer fanatic

                1 Reply Last reply Reply Quote 0
                • Danalundefined
                  Danal
                  last edited by

                  @deckingman , excellent info, thanks. Very intriguing about the PetG. I've printed that some, but not a lot. Hmmm...

                  Delta / Kossel printer fanatic

                  deckingmanundefined 1 Reply Last reply Reply Quote 0
                  • deckingmanundefined
                    deckingman @Danal
                    last edited by

                    @Danal said in Toolchanger Tool Prep:

                    @deckingman , excellent info, thanks. Very intriguing about the PetG. I've printed that some, but not a lot. Hmmm...

                    Yes, that's a big drawback with mixing hot ends - all filaments have to be loaded at all times and they share a common heater. So "unused" filaments get held at print temperature. Keeping them moving forward even slightly helps enormously but even 1% white mixed with red will come out as pink so it's not always possible to keep them all moving. With PLA, if it's been at print temperature for more than say half and hour, I always purge 20 or 30 mm before printing with it. Otherwise, what's been held in the melt/mixing chamber just runs out in one big sloppy mess. But like I said, PET-G seems to hold up forever (well at least 8 hrs). That goes for Taulman T glass too (but I think that's likely a variant of PET-G).

                    Ian
                    https://somei3deas.wordpress.com/
                    https://www.youtube.com/@deckingman

                    1 Reply Last reply Reply Quote 0
                    • pawPrinterundefined
                      pawPrinter @Danal
                      last edited by

                      @Danal Cura puts heating commands in the Gcode in advance of the tool change command so that the tool is up to heat by the time the change is due. The tool is parked at standby temp which can be whatever you like - off, if you prefer. I have found the timing works quite well, but I can see advantages to the firmware doing it

                      Danalundefined 2 Replies Last reply Reply Quote 0
                      • Danalundefined
                        Danal @pawPrinter
                        last edited by

                        @pawPrinter said in Toolchanger Tool Prep:

                        @Danal Cura puts heating commands in the Gcode in advance of the tool change command so that the tool is up to heat by the time the change is due. The tool is parked at standby temp which can be whatever you like - off, if you prefer. I have found the timing works quite well, but I can see advantages to the firmware doing it

                        I did not know that Cura did that! Is there anything you have to "turn on"? I will play around with it.

                        Delta / Kossel printer fanatic

                        pawPrinterundefined 1 Reply Last reply Reply Quote 0
                        • Danalundefined
                          Danal
                          last edited by

                          Lots of great discussion above about various ways to set temperature in advance of a toolchange.

                          Any thoughts about ways to move the extruder on a parked tool? In terms of G-Code syntax?

                          Delta / Kossel printer fanatic

                          1 Reply Last reply Reply Quote 0
                          • pawPrinterundefined
                            pawPrinter @Danal
                            last edited by

                            @Danal No, it just does it. So there is no control, and you are stuck with what Cura decides. I rather took it for granted until I tried out PrusaSlicer recently, and found their tool change handling not so well developed. Which is a shame because otherwise it is easier to use with multiple tools. I suppose its all still early days

                            1 Reply Last reply Reply Quote 0
                            • botundefined
                              bot
                              last edited by bot

                              I've just discovered that IceSL-Slicer seems to have the functionality to preheat a tool so that it is heated to the correct temperature by the time it is called, based on a given slicer parameter degrees_per_second and the slicer's estimated print time.

                              I do not know how it is implemented, but I will look into it and add it to the RRF profile I'm building, of which I'm nearing the completion of the first version for beta release.

                              The feature is called active temperature control and is described as such:

                              When printing with multiple materials, only one extruder is active at a given time. Active temperature control is specifically designed to avoid material to degrade and ooze from idle extruders. The idle extruder is dynamically cooled down and heated during printing, such that it is ready when needed and cooled when not needed. Adjust extruder parameters idle_extruder_temp_degree_c and extruder_degrees_per_sec when using this feature.

                              Emphasis mine.

                              *not actually a robot

                              1 Reply Last reply Reply Quote 2
                              • Danalundefined
                                Danal @pawPrinter
                                last edited by

                                @pawPrinter said in Toolchanger Tool Prep:

                                @Danal Cura puts heating commands in the Gcode in advance of the tool change command so that the tool is up to heat by the time the change is due. The tool is parked at standby temp which can be whatever you like - off, if you prefer. I have found the timing works quite well, but I can see advantages to the firmware doing it

                                I've looked at the gcode, and I only see M104 and M109 right at the moment of toolchange. Is there something needed to get 'advance'?

                                Delta / Kossel printer fanatic

                                sebkritikelundefined 1 Reply Last reply Reply Quote 0
                                • sebkritikelundefined
                                  sebkritikel @Danal
                                  last edited by

                                  @Danal said in Toolchanger Tool Prep:

                                  @pawPrinter said in Toolchanger Tool Prep:

                                  @Danal Cura puts heating commands in the Gcode in advance of the tool change command so that the tool is up to heat by the time the change is due. The tool is parked at standby temp which can be whatever you like - off, if you prefer. I have found the timing works quite well, but I can see advantages to the firmware doing it

                                  I've looked at the gcode, and I only see M104 and M109 right at the moment of toolchange. Is there something needed to get 'advance'?

                                  Impeccable timing on my part 😵 I think you need to install the "Machine Settings Plugin"

                                  69756e77-bc74-491b-b4c0-8b57bc3e6236-image.png

                                  https://forum.duet3d.com/topic/16350/standby-temperature-definition-in-dual-extruder/29

                                  Copied below:

                                  Maybe a comment better suited for the tool changing thread from the other day -

                                  Cura (with the "Machine Settings" plugin) has the capability to fine tune the standby temperature as well as the "expected" heat up and cool down rates.

                                  Much like IceSL's "Heating/cooling rate (C/sec)" setting, the plugin allows you to set both heat up and cool down speeds (C/sec), as well as minimum standby times.

                                  When the M104 commands are injected into the GCODE is driven by the layer time / print speed, as well as the heat up and cool down values entered. Changing the heat up speed from, for example, 1°C/s to 4°C/s will result in the M104 Tx command being injected a number of lines later. It appears that, if the layer time where the heat up would occur is too short to allow for the nozzle to heat up from the standby temperature to active temperature, Cura will modify the standby temperature so that the nozzle will be ready in time.

                                  18de0474-36b1-4b12-8ccb-498879e95276-image.png

                                  Left columns are at 4°C/s, right is at 1°C/s. You can see that the print temperature for T0 is set many layers (233, 237, 104, etc) later in the file for hotends that can heat up faster. Looking at some of the highlighted cells you can see where Cura modulated the standby temperature to account for the limiting heat up speed.

                                  Obviously a hotends heat up/cool down speed is not some magic, made up number - its based on the actual heater performance. I believe* that where the M104 commands are injected is based on print speed and the heat up/cool down values, and is not impacted by acceleration, jerk, etc. These heating values can get someone really close to reducing time spent waiting during tool changes, but really Cura (or any software) doesn't have a clue what the "machine model" (acceleration, jerk, dynamic acceleration, tool change files, etc) is.

                                  *I tried adjusting acceleration values in Cura and saw no change in where the lines were inserted.

                                  As far as firmware looking ahead - I think that this would be the best solution, as the firmware should know what the "machine model" is - the config.g is loaded on the machine anyways 😀! However, how far should the firmware look ahead? Is the real solution to determining when to heat up hotends, priming the a different tools extruder, etc, to simulate a print file, and allow the firmware to rewrite the print file to include the relevant lines needed - a similar approach that is taken to determine realistic print times by simulating the print first. I am far from an expert, but I feel that there would be limits to looking ahead, and a full simulation of a print file would be needed.

                                  Large(ish?) IDEX - 6HC, 1HCL
                                  Stratasys Dimension 1200es to 6HC Conversion

                                  pawPrinterundefined 1 Reply Last reply Reply Quote 1
                                  • Danalundefined
                                    Danal
                                    last edited by

                                    Nice!! I will check that out!

                                    Delta / Kossel printer fanatic

                                    1 Reply Last reply Reply Quote 0
                                    • pawPrinterundefined
                                      pawPrinter @sebkritikel
                                      last edited by

                                      @sebkritikel excellent! Thanks. Nice to know that you can do a bit of tuning contrary to what I thought - Cheers

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