Jump to content

Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)


MOCCOR

Recommended Posts

Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

I have Cura working extremely well using just the 1st extruder of my Geeetech A30T, my Start Gcode works perfectly. However, when I select and go to use the 2nd extruder (and I assume 3rd as well), soon as the purge line begins the hotend temp quickly drops (I assume it shuts off for some reason since I can observe the temp drops in Octoprint) but the printer continues to try the print, but ofc it first quickly doesn't stick and then stops coming out altogether. Looking at my Gcode, I can't see why it would do that, nothing says to go from heating the nozzle to just stop doing so, that is all in the End Gcode. And if its only in the End Gcode and it continues to print, then it doesn't reach the 'end Gcode'. Which is why I am confused and am asking for some opinions. The Cura settings are all the same for each extruder, temp and everything. I can easily get other extruders to work "decent" if I simply put G28, however when I add G29 as well, it just literally ignores G29 anyway. The software Geeetech provides has "start" and "end" Gcode for the extruders, but it kinda looks unnecessarily confusing. I simply want to just be able to switch between one of 3 different filament colors for easy switching, but their Gcode makes it seem like it does more than just that, like it seems kinda like there is a forced prime tower in it for each time it switches or something. Here it is if interested - https://pastebin.com/gZH05UGc

 

Any help would be appreciated.

 

Start Gcode -

 

;M105             ;Report Temperatures
G28                   ;home all axes
G29            ;auto bed leveling
G1 Z30 F300         ;move extruder up 30mm at 5mm/s
G90                  ;absolute positioning
M82                 ;set extruder to absolute mode
M107               ;start with the fan off
;M163 S0 P0.33        ;color mix extruder #1
;M163 S1 P0.33        ;color mix extruder #2
;M163 S2 P0.33        ;color mix extruder #3
;M164 S4            ;save color mix
;M104 S{print_temperature}     ;Set extruder temperature
;M190 S{print_bed_temperature}    ;Set bed temperature
M109 S{print_temperature}    ;Set extruder temperature and wait
G92 E0               ;Reset extruder position(zero the extruded length)
G0 X1.5 Y20 F2100        ;Move nozzle at 35mm/s
G1 Z0.8 F300         ;Move Z Axis up little to prevent scratching of Heat Bed
G1 X180 E60 F300         ;Move nozzle at 5mm/s and extrude filament 60mm
G1 Z5 Y5 F300         ;Move Z Axis up 5mm at 5mm/s
G92 E0               ;Reset extruder position(zero the extruded length)
;T0                      ;Switch to the first extruder

  • Link to post
    Share on other sites

    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    These Replacement words have been deprecated.

    ;M104 S{print_temperature}     ;Set extruder temperature
    ;M190 S{print_bed_temperature}    ;Set bed temperature
    M109 S{print_temperature}    ;Set extruder temperature and wait

    If you change them to this:

    M104 S{material_print_temperature_layer_0}     ;Set extruder temperature
    M190 S{material_bed_temperature_layer_0}    ;Set bed temperature
    M109 S{material_print_temperature_layer_0}    ;Set extruder temperature and wait

    Un-comment the two lines and part of the problem may be resolved.

     

    You must have the Printer Settings plugin from the Marketplace installed.  Then these options be come available:

    Untitled.thumb.png.70a062ce3405c3ec6509ad693e685e1a.png

     

    In the gcode you linked line appears in the extruder startup gcodes:

    G1 F{travel_speed}

    But travel speed in Cura is in mm/sec and in gcode it is mm/minute.  As a consequence the line comes out as G1 F150 instead of G1 S9000.  Big difference there.  You need to hard code the S9000 as there are currently no Replacement words in mm/minute.  There are other instances in your post where "travel_speed" is used and will no doubt result in very slow movement.

     

    In a typical multi-extruder setup, Cura will note that an extruder change is coming up.  An M104 line will appear in the gcode several lines above the extruder switch line.  It's timed to have the second extruder temperature up to print temperature just as it is needed.

    When the switch from (for example) T0 to T1 occurs then T0 is set to the standby temperature for the material.  If you have a single heater then your one-and-only heater cools off.  The "cold extrusion" safety in M302 is hit and the extruder motor quits trying to turn.  That's why Cura needs to know if "Extruders Share Heater".

    • Like 1
    Link to post
    Share on other sites

    Posted (edited) · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    This is all amazing info. I actually believe they don't share a heater on the Geeetech A30T, since in their softwares gcode it has the ability to turn the 3 individual heaters on and off, and also I have taken the hotend apart and saw how its wired. I am attaching a pic if you are curious. I will definitely try that edited Gcode you recommended first, and if it still doesn't work I will try it with the "extruders share heater" setting you recommended.

    And I appreciate the info on that Gcode as well, but thankfully I haven't been using it. I know it is way over-complicated with forcing mixing filaments, so I didn't want to just copy it all into Cura. I should make a post on their forum and let them know that their Cura clone is becoming a bit dated, I believe it hasn't been updated in about a year, maybe simply cuz they know people prefer Cura though.

     

    I have one question though, are these 3 lines needed even though Cura itself adds the temps to Gcode? :

    M104 S{material_print_temperature_layer_0}     ;Set extruder temperature
    M190 S{material_bed_temperature_layer_0}    ;Set bed temperature
    M109 S{material_print_temperature_layer_0}    ;Set extruder temperature and wait

    Edit: So it is working fine with the "extruders share heater" setting enabled. But I am curious, if the heaters are separate does Cura know this? Just wanna make sure it isn't going to like, cook the other filaments inside or something since I am not the most knowledgeable about this stuff. I would assume it would simply start oozing out different colors if the other chambers were hitting that temp, but idk haha

    A30T hotend.PNG

    Edited by MOCCOR
  • Link to post
    Share on other sites

    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    Cura will add the temperatures BEFORE the StartUp Gcode when it doesn't see temperatures called out WITHIN the StartUp Gcode.

    If you have an ABL then you probably want to call out the temperatures within the StartUp gcode as warming up the hot end to around 150° during bed leveling, and then heating it to the Print Temperature after leveling is done, will keep drooling to a minimum.  Something like this:

    ;M105             ;Report Temperatures

    M140 S{material_bed_temperature_layer_0}  ;Start to heat the bed

    M109 S150                                                                 ;Warm up the Hot end to 150

    M190 S{material_bed_temperature_layer_0}  ;Finish heating the bed
    G28                   ;home all axes
    G29            ;auto bed leveling

    M109 S{material_print_temperature_layer_0} ;Finish heating the hot end 
    G1 Z30 F300         ;move extruder up 30mm at 5mm/s

     

    I'm not familiar with that hot end.  It looks like it has a single thermistor and three heating circuits.  If the separate heat circuits aren't being monitored for temperature then it would appear to be a "shared" heater.

    Looking at a Geeetech replacement video it appears that the circuit board those heat wires are connected to has three control connectors.  I would assume that one is the single thermistor, one is the cooling fan, and the third controls the actual heaters.  That would again imply that it is a shared heater.  I could be mistaken on that and experimenting can't hurt.

     

    Another thing you could try is creating a custom material (based on a built-in material) and set the Standby Temperature the same as the Print Temperature.  Cura will still add a line to adjust the temperature, but unless you make a huge change in the Print temperature in the regular Cura settings, the new standby temperature should be close to the print temperature and not cause the problem.

     

    • Thanks 1
    Link to post
    Share on other sites

    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    That makes a lot of sense thinking about it like that actually, it in fact only has 1 single thermistor, so I guess it wouldn't make sense to be able to individually detect and disable heaters. I'm not sure how long other printers take to heat the hotend, but mine takes about 2min for 21C to 240C, which if that is a good time, it would further imply all 3 are heating. Thanks a lot, I learned a lot from you and really appreciate the help.

  • Link to post
    Share on other sites

    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    Hopefully you'll get it to work as it should.  Let me know how you make out.  There have been others that come to this forum looking to get their multi-extruders working.  The multi-in-1-out hot ends are getting to be more mainstream and from what I've heard they can be made to work with Cura.  It just takes some putzing around as each one seems to be a bit different.

    If you can set it up with a 4th extruder in Cura, you can use those M163 and M164 commands to set up combination colors on extruder 4.  It's really a virtual extruder but the commands will be spread across 2 or 3 extruders to mix colors.  At least that's what it looks like should happen.  More learning curve I guess.

    • Like 1
    Link to post
    Share on other sites

    • 3 weeks later...
    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    I tried it a bunch of times since talking about this, and can confirm it is working very well with no problems or unintended effects. Your recommendations were spot on with the Gcode. I added a couple things that help with how I prefer dealing with the oozing before prints, but in case others want to see it here it I will add it at the end of this post.

     

    I have one other question though if you don't mind me asking. I use Octoprint to print, and for some reason it often disconnects on the first print (99% of the time) and then works fine thereafter. I asked about it on the Octoprint forums, but never really got a sure answer and it might just be due to the custom firmware from Geeetech. But basically I was curious if I can just create a custom gcode file to simply start a print and possibly get the disconnect out of the way in seconds, as opposed to the normal - heat bed, heat nozzle, g28, g29, ooze, wipe ooze, do purge line, etc. 

    I came up with this, which is honestly a bunch of Gcode without the "heating up" or purge line. But wanted a second opinion of if it looks like it could damage anything :

    M82                                                                   ;absolute extrusion mode

    G28                                                                   ;home all axes

    G29                                                                   ;auto bed leveling

    G90                                                                   ;absolute positioning

    M82                                                                   ;set extruder to absolute mode

    G92 E0                                                              ;Reset extruder position(zero the extruded length)

    G91                                                                     ;relative positioning

    G90                                                                     ;absolute positioning

    G92 E0                                                               ;Reset extruder position(zero the extruded length)

    M84                                                                     ;disable motors

    M104 S0                                                             ;turn off extruder

    M107                                                                   ;off fan

    T0                                                                        ;Switch to the first extruder

    M84                                                                   ;disable motors

    M82                                                                   ;absolute extrusion mode

    M104 S0                                                            ;End of Gcode

    Working Start Gcode for A30T (no mixing):

    ;M105                                                                     ;Report Temperatures

    M140 S{material_bed_temperature_layer_0} ;Start to heat the bed

    M109 S160                                                            ;Warm up the Hot end to 160 (lower when using PLA)

    M190 S{material_bed_temperature_layer_0} ;Finish heating bed

    G28                                                                         ;home all axes

    G29                                                                         ;auto bed leveling

    G1 Z30 F300                                                           ;move extruder up 30mm at 5mm/s for more room for oozing

    M109 S{material_print_temperature_layer_0} ;Set extruder temperature and wait

    G90                                                                          ;absolute positioning

    M82                                                                          ;set extruder to absolute mode

    M107                                                                       ;start with the fan off

    ;M163 S0 P0.33                                                      ;color mix extruder #1

    ;M163 S1 P0.33                                                      ;color mix extruder #2

    ;M163 S2 P0.33                                                      ;color mix extruder #3

    ;M164 S4                                                                 ;save color mix

    G92 E0                                                                    ;Reset extruder position(zero the extruded length)

    G0 X1.5 Y20 F2100                                                ;Move nozzle at 35mm/s

    G1 Z0.8 F300                                                          ;Move Z Axis up little to prevent scratching of Heat Bed

    G1 X180 E60 F300                                                 ;Move nozzle at 5mm/s and extrude filament 60mm

    G1 Z5 Y5 F300                                                        ;Move Z Axis up 5mm at 5mm/s

    G92 E0                                                                     ;Reset extruder position(zero the extruded length)

    ;T0                                                                            ;Switch to the first extruder

  • Link to post
    Share on other sites

    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    That second set of commands looks workable.  I would add the line I've put here in boldface.

    G29                                                                          ;auto bed leveling

    G1 Z30 F300                                                           ;move extruder up 30mm at 5mm/s for more room for oozing

    G1 X1 Y1 F6000                                                     ;move to the LF corner so the oozing happens there

    M109 S{material_print_temperature_layer_0} ;Set extruder temperature and wait

     

    You have commented out the M105 line.  If you were using Cura it would be looking for temperature responses over the USB to insure the printer was still paying attention.  I don't know about Octoprint.

    If you do not include the temperature "replacement words" in your startup gcode then Cura will automatically add temperature lines BEFORE the startup gcode.  (It's meant to make sure there is no cold extrusion.)  That can cause oozing during the leveling process as the hot end goes up to the printing temperature.

     

    Your first set (from above) has redundancies and looks like a combination of StartUp and Ending gcode.  This won't work.

    M82                                                                   ;absolute extrusion mode

    G28                                                                   ;home all axes

    G29                                                                   ;auto bed leveling

    G90                                                                   ;absolute positioning

    M82                ;redundant

    G92 E0                                                              ;Reset extruder position(zero the extruded length)

    G91                ;redundant                              ;relative positioning

    G90                ;redundant                             ;absolute positioning

    G92 E0         ;redundant                                ;Reset extruder position(zero the extruded length)

     

    From here on it appears to be an ending gcode but it isn't right.

    M84                                                                     ;disable motors

    M104 S0                                                             ;turn off extruder

    M107                                                                   ;off fan

    T0                                                                        ;Switch to the first extruder

    M84           ;redundant                                  ;disable motors

    M82                                                                   ;absolute extrusion mode

    M104 S0        ;redundant                         ;End of Gcode

     

    • Like 1
    Link to post
    Share on other sites

    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)
    3 hours ago, GregValiant said:

    Your first set (from above) has redundancies and looks like a combination of StartUp and Ending gcode.  This won't work.

    M82                                                                   ;absolute extrusion mode

    G28                                                                   ;home all axes

    G29                                                                   ;auto bed leveling

    G90                                                                   ;absolute positioning

    M82                ;redundant

    G92 E0                                                              ;Reset extruder position(zero the extruded length)

    G91                ;redundant                              ;relative positioning

    G90                ;redundant                             ;absolute positioning

    G92 E0         ;redundant                         

          ;Reset extruder position(zero the extruded length)

     

    From here on it appears to be an ending gcode but it isn't right.

    M84                                                                     ;disable motors

    M104 S0                                                             ;turn off extruder

    M107                                                                   ;off fan

    T0                                                                        ;Switch to the first extruder

    M84           ;redundant                                  ;disable motors

    M82                                                                   ;absolute extrusion mode

    M104 S0        ;redundant                         ;End of Gcode

    Well, basically with that gcode combo of start + end, I wanted to just edit a file and have just the start + end code, none of the actual "printing" in hopes Octoprint would begin, then disconnect in seconds, then I connect back and go about printing. I kinda just copied everything from my Start and End code, and the end code I believe I got from Geeetech's end code for the printer (or maybe somewhere else idk) but you are 100% right there is duplicates. I just didn't know if having no actual "printing" would cause anything weird.

    3 hours ago, GregValiant said:

    That second set of commands looks workable.  I would add the line I've put here in boldface.

    G29                                                                          ;auto bed leveling

    G1 Z30 F300                                                           ;move extruder up 30mm at 5mm/s for more room for oozing

    G1 X1 Y1 F6000                                                     ;move to the LF corner so the oozing happens there

    M109 S{material_print_temperature_layer_0} ;Set extruder temperature and wait

     

    You have commented out the M105 line.  If you were using Cura it would be looking for temperature responses over the USB to insure the printer was still paying attention.  I don't know about Octoprint.

    If you do not include the temperature "replacement words" in your startup gcode then Cura will automatically add temperature lines BEFORE the startup gcode.  (It's meant to make sure there is no cold extrusion.)  That can cause oozing during the leveling process as the hot end goes up to the printing temperature.

    I do like your idea for the LF corner oozing for sure and will use it, thank you. I will also remove the comment on M105, but the reason I kept it there was cuz Octoprint used to work fine a year ago with that commented out, but now suddenly, only 1 out of like 40 prints, worked fine without disconnecting after the first purge line. 

  • Link to post
    Share on other sites

    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    I'm sorry I really can't help with the Octoprint part.  As I say, Cura pings the printer with M105 every once in a while in order to maintain the connection so neither the computer nor the printer go dormant and kill the com port.  Doing that has it's own problems though.

    If it worked with the line commented-out then it's an option.

    • Like 1
    Link to post
    Share on other sites

    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    Oh no I def get it and appreciate the help regardless. I tried it with the M105 included and though it did allow printing without disconnecting at the beginning, I am under the impression it causes the disconnect to happen later on during the print. I need to do more testing but I'm sure its a not a Cura problem. Thanks for all the help and recommendations, I greatly appreciate it.

  • Link to post
    Share on other sites

    Posted · Trying to figure out the best way to work multi-extruder Cura prints Geeetech A30T (3 to 1 hotend)

    Here is my favorite theory of the M105 situation with the Cura USB printing plugin (which admittedly I haven't look at lately).  Cura isn't the only one...PrintRun/Pronterface did this as well.

     

    M105 was sent every 5 seconds to ping the printer into making a response.  That was all well and good.  BUT If the printer buffer was ALMOST full then the M105 would be truncated to M0 which is emergency stop.  That requires a button click to get the printer going again.

     

    Your startup gcode only sends it once at the beginning.  You may not really need it as the response is via the USB port.  I use it for my app.  Does Octoprint need it for something?

    BTW the response I get over the USB is:  "ok T:209.92 /210.00 B:50.26 /50.00 @:86 B@:0" so you see there was a print running when I sent the M105 command.

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 18 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...