Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Duplicate Printing with Dual Extruder on Single X Carriage #4317

Closed
jstefanop opened this issue Jul 15, 2016 · 57 comments
Closed

Duplicate Printing with Dual Extruder on Single X Carriage #4317

jstefanop opened this issue Jul 15, 2016 · 57 comments

Comments

@jstefanop
Copy link

jstefanop commented Jul 15, 2016

I know marlin has Dual X Carriage support, but would be nice if there was a way to set both extruders to active on a dual setup (two extruders attached to same X Carriage). This way you can print two small parts at the same time (that are less wide than the nozzle offsets of course).

This should be a rather simple addition if its not already possible with a combination of M commands (new M command that sets both extruders to active, and sends extrusion commands to both stepper drivers?)

Referencing same issue below that was never addressed (user has same single carriage setup, but answer was given for a Dual X Carriage setup)
#2783

@thinkyhead
Copy link
Member

thinkyhead commented Jul 16, 2016

Marlin has only a single X, Y, Z, and E axis at this time, so it's not possible to run two extruder carriages with different objects. This would have to wait for a re-architecture of the axis handling.

And, on second thought, this is a physically impossible idea. The Y axis (often the moving bed) is shared. You can only do simultaneous printing (two identical objects) when the Y axis is shared. If XY were both independent, a shared Z axis would still have to wait for the other object's layer to finish. No intermediate Z hops would be permissible.

@thinkyhead thinkyhead added the T: Feature Request Features requested by users. label Jul 16, 2016
@jstefanop
Copy link
Author

@thinkyhead I mean two identical objects at the same time. Printing two different objects would obviously be impossible like you mentioned. The whole point is to utilize the second extruder on small parts to essentially build double the number of parts at the same time.

Firmware wise, all this would require is to send the same E commands to the second extruder at the same time. Currently the active extruder is set via T0, T1 etc. It would be great if there was an M command that would set BOTH extruders active, and the second extruder simply feed off the same signal as the first. This would involve the exact same method that dual Z steppers work(i.e. the same Z commands are sent to both Z steppers at the same time for printers that have two steppers to drive the Z axis).

@brainscan
Copy link

Just split the signal like when using two z motors.

Sent from my iPhone

On 16 Jul 2016, at 05:33, jstefanop [email protected] wrote:

@thinkyhead I mean two identical objects at the same time. Printing two different objects would obviously be impossible like you mentioned. The whole point is to utilize the second extruder on small parts to essentially build double the number of parts at the same time.

Firmware wise, all this would require is to send the same E commands to the second extruder at the same time. Currently the active extruder is set via T0, T1 etc. It would be great if there was an M command that would set BOTH extruders active, and the second extruder simply feed off the same signal as the first. This would involve the exact same method that dual Z steppers work(i.e. the same Z commands are sent to both Z steppers at the same time for printers that have two steppers to drive the Z axis).


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@jbrazio
Copy link
Contributor

jbrazio commented Jul 16, 2016

Indeed, for "duplication" it could be a matter of running two steppers from the same driver.
In the end the critical path is mostly slicer object placement "magic" rather than Marlin's printing.

@jstefanop
Copy link
Author

jstefanop commented Jul 16, 2016

Well double Z motors are driven by two separate drivers on the board, the same si(gnal)s are just sent to both stepper drivers at the same time in the firmware. Two E steppers are also plugged into two stepper drivers, just need the same behavior in the firmware, with an M command to disable/enable, since it would not make sense to keep flashing different firmware just to enable or disable this feature.

Slicer placement is easy, just a matter of making sure the object is 1) less wide on the X axis than the relative offset of the two nozzles, and 2) make sure the object placement on the bed will cause the second object by the second extruder to be printed on the bed and not run into any other objects printed(since as far as the slicer is concerned it has "no idea" about the second object being printed).

@brainscan
Copy link

You can also run two steppers on one driver.

Sent from my iPhone

On 17 Jul 2016, at 00:52, jstefanop [email protected] wrote:

Well double Z motors are driven by two separate drivers on the board, the same singles are just sent to both stepper drivers at the same time in the firmware. Two E steppers are also plugged into two stepper drivers, just need the same behavior in the firmware, with an M command to disable/enable, since it would not make sense to keep flashing different firmware just to enable or disable this feature.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

@jstefanop
Copy link
Author

How? With a Y cable? Wouldn't that exceed the current limits of the driver? Either way if that was possible its still not as clean as a firmware addition. Since you would still need to unplug/replug wires for normal operation.

@brainscan
Copy link

Have you never seen ramps board? It's actually a pretty easy thing you can set up without firmware change.

Sent from my iPhone

On 17 Jul 2016, at 09:04, jstefanop [email protected] wrote:

How? With a Y cable? Wouldn't that exceed the current limits of the driver? Either way if that was possible its still not as clean as a firmware addition. Since you would still need to unplug/replug wires for normal operation.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

@oysteinkrog
Copy link
Contributor

oysteinkrog commented Jul 17, 2016

This is already supported through the dual x carriage config option I think.

@thinkyhead
Copy link
Member

This is already supported

Correct. This is already supported, which is why the request confused me.

@jstefanop
Copy link
Author

I think there is still confusion in what Im talking about...I don't have a dual x carriage...i just have two extruders on a single carriage, that I want the same extrusion commands to be sent to both at the same time.

The whole point is to have an M option so you wouldn't need to flash firmware each time anyone would want this enabled. Either way, how exacty would sending the same signal to extruder #2 work via whats already supported?

@oysteinkrog
Copy link
Contributor

I see, that might be a little bit useful, but it's also very easily handled by the slicer?

@jstefanop
Copy link
Author

The only thing that can be done via slicer/gcode currently is switch which extruder is currently active, so that wouldn't help since you can't set both extruders active at the same time with T0, T1 commands.

@jstefanop
Copy link
Author

Here is another reference to this...this feature is actually part of Sailfish firmware for Makerbot clones and is called "Ditto Printing"

https://forum.simplify3d.com/viewtopic.php?f=8&t=1617

@brainscan
Copy link

How would you use the same X carriage for normal printing? You say it would be as simple as an m code to switch but that would mean permanently cutting down the available print area, or am I missing something. People have done this for a long time with milling machines just piggybacking the signals where needed.

Sent from my iPhone

On 18 Jul 2016, at 19:14, jstefanop [email protected] wrote:

Here is another reference to this...this feature is actually part of Sailfish firmware for Makerbot clones and is called "Ditto Printing"

https://forum.simplify3d.com/viewtopic.php?f=8&t=1617


You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

@jstefanop
Copy link
Author

This is strictly for mass producing small identical parts, it essentially cuts down the time in half. You place down a single part on the slicer, and make sure the next placement on the X axis is offset by the two nozzle separation distance + some padding.

So as far the the slicer is concerned there are only half the amount of parts placed on the bed, but because you duplicate the same extruder signal to extruder #2, you build two of the same parts at the same time.

I print multiple copies of the same small part all the time, but the second extruder usually sits idle (unless its printing support material or two color stuff). This would vastly increase the utility of dual extruder setups, and its a pretty common feature request if you do a google search.

Firmware wise can anyone with a dual extruder setup (NOT Dual X carriage) confirm whether enabling dual X carriage and then sending M605 S2 will do what I'm asking?

@thinkyhead is that what you mean by its supported?

@thinkyhead
Copy link
Member

thinkyhead commented Jul 20, 2016

whether enabling dual X carriage and then sending M605 S2 will do what I'm asking?

Mode 2: Duplication mode. The firmware will transparently make the second x-carriage
  and extruder copy all actions of the first x-carriage. This allows the printer to 
  print 2 arbitrary items at once. (2nd extruder x offset and temp offset are set
  using: M605 S2 [Xnnn] [Rmmm])

This is only supported for a printer that has two (well-separated) carriages on the same X axis, so they can each move in X, while Y and Z movement affects them both.

We don't support a single-carriage dual-extruder setup with both nozzles extruding at the same time. Your nozzles would have to be pretty far apart to print anything useful, for one thing. How far apart are your two nozzles?

Note that this kind of duplication mode can't be used with any form of bed leveling because Z needs to differ at different XY locations.

@jstefanop
Copy link
Author

@thinkyhead nozzles are 60mm apart, so its enough distance to double print many parts (the only limiting factor is 60mm X width...Y can be as long as the build plate and this will work).

Im assuming implementing this would be rather easy codebase wise? However the firmware handles double Z motors, it can apply the same logic to double E motors and an M toggle to enable/disable the feature?

Also why wouldn't the Duplication mode with M605 S2 not work? Obviously the printer does not have a second carriage so any commands to the second X motor will be ignored, but the second extruder should work no?

@jbrazio
Copy link
Contributor

jbrazio commented Jul 20, 2016

KISS.. Connect a Y cable to from E0 to both extruders.

@jbrazio jbrazio removed the T: Feature Request Features requested by users. label Jul 20, 2016
@thinkyhead
Copy link
Member

why wouldn't the duplication mode with M605 S2 not work?

It's just not supported for anything but Dual X Carriage. If you want the second extruder to synchronize with the first in other situations, it would have to be coded as a new feature. It would be a simple feature to implement. But how many users have their nozzles 6cm apart? Not too many. And Marlin will not help you if you try to print two objects larger than your setup can accommodate. You would have to tell your slicer not to start printing the object in the middle of the bed.

@jstefanop
Copy link
Author

@thinkyhead right I understand its not supported, but in theory if I enable Dual X Carriage and send that command, wont the second extruder activate and copy the commands for the first? Is that how M605 S2 is currently coded?

Since I don't have a second X carriage any other commands going to the second X motor will just be ignored? Or will the firmware crash since I have a RAMBO board which does not have a second X motor plug?

In terms of the feature request, its pretty common...there is actually another similar request for marlin (#2783), and a google search will bring up people asking for this feature in multiple places.

Im sure most people with dual extruder setups don't realize this is even possible, and would use the feature if implemented. If its rather simple to implement I think it would be a nice addition to marlin and add more utility for people with dual extruders.

@thinkyhead
Copy link
Member

thinkyhead commented Jul 20, 2016

You won't even have an M605 command unless you enable Dual X Carriage. And you also won't have any code that checks for dual extruder mode. It needs to be implemented as a new feature, in essence.

@jbrazio
Copy link
Contributor

jbrazio commented Jul 20, 2016

██╗  ██╗██╗███████╗███████╗           ██████╗ ██████╗ ███╗   ██╗███╗   ██╗███████╗ ██████╗████████╗     █████╗     ██╗   ██╗     ██████╗ █████╗ ██████╗ ██╗     ███████╗    ███████╗██████╗  ██████╗ ███╗   ███╗    ███████╗ ██████╗     ████████╗ ██████╗     ██████╗  ██████╗ ████████╗██╗  ██╗    ███████╗██╗  ██╗████████╗██████╗ ██╗   ██╗██████╗ ███████╗██████╗ ███████╗   
██║ ██╔╝██║██╔════╝██╔════╝          ██╔════╝██╔═══██╗████╗  ██║████╗  ██║██╔════╝██╔════╝╚══██╔══╝    ██╔══██╗    ╚██╗ ██╔╝    ██╔════╝██╔══██╗██╔══██╗██║     ██╔════╝    ██╔════╝██╔══██╗██╔═══██╗████╗ ████║    ██╔════╝██╔═████╗    ╚══██╔══╝██╔═══██╗    ██╔══██╗██╔═══██╗╚══██╔══╝██║  ██║    ██╔════╝╚██╗██╔╝╚══██╔══╝██╔══██╗██║   ██║██╔══██╗██╔════╝██╔══██╗██╔════╝   
█████╔╝ ██║███████╗███████╗          ██║     ██║   ██║██╔██╗ ██║██╔██╗ ██║█████╗  ██║        ██║       ███████║     ╚████╔╝     ██║     ███████║██████╔╝██║     █████╗      █████╗  ██████╔╝██║   ██║██╔████╔██║    █████╗  ██║██╔██║       ██║   ██║   ██║    ██████╔╝██║   ██║   ██║   ███████║    █████╗   ╚███╔╝    ██║   ██████╔╝██║   ██║██║  ██║█████╗  ██████╔╝███████╗   
██╔═██╗ ██║╚════██║╚════██║          ██║     ██║   ██║██║╚██╗██║██║╚██╗██║██╔══╝  ██║        ██║       ██╔══██║      ╚██╔╝      ██║     ██╔══██║██╔══██╗██║     ██╔══╝      ██╔══╝  ██╔══██╗██║   ██║██║╚██╔╝██║    ██╔══╝  ████╔╝██║       ██║   ██║   ██║    ██╔══██╗██║   ██║   ██║   ██╔══██║    ██╔══╝   ██╔██╗    ██║   ██╔══██╗██║   ██║██║  ██║██╔══╝  ██╔══██╗╚════██║   
██║  ██╗██║███████║███████║██╗██╗    ╚██████╗╚██████╔╝██║ ╚████║██║ ╚████║███████╗╚██████╗   ██║       ██║  ██║       ██║       ╚██████╗██║  ██║██████╔╝███████╗███████╗    ██║     ██║  ██║╚██████╔╝██║ ╚═╝ ██║    ███████╗╚██████╔╝       ██║   ╚██████╔╝    ██████╔╝╚██████╔╝   ██║   ██║  ██║    ███████╗██╔╝ ██╗   ██║   ██║  ██║╚██████╔╝██████╔╝███████╗██║  ██║███████║██╗
╚═╝  ╚═╝╚═╝╚══════╝╚══════╝╚═╝╚═╝     ╚═════╝ ╚═════╝ ╚═╝  ╚═══╝╚═╝  ╚═══╝╚══════╝ ╚═════╝   ╚═╝       ╚═╝  ╚═╝       ╚═╝        ╚═════╝╚═╝  ╚═╝╚═════╝ ╚══════╝╚══════╝    ╚═╝     ╚═╝  ╚═╝ ╚═════╝ ╚═╝     ╚═╝    ╚══════╝ ╚═════╝        ╚═╝    ╚═════╝     ╚═════╝  ╚═════╝    ╚═╝   ╚═╝  ╚═╝    ╚══════╝╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚══════╝╚═╝

@jstefanop
Copy link
Author

@jbrazio yes I know there are hardware hacks to do what I'm asking, but its inconvenient to need to take the printer apart and connect/disconnect Y cables every time I want to switch from Duplicate printing mode back to normal dual extruder for printing in dual color/support material. A simple M command to enable this would be awesome.

@thinkyhead
Copy link
Member

thinkyhead commented Jul 20, 2016

@jstefanop #4362 (branch) demonstrates how the implementation would have to be. Go ahead and mess around with it, see how it works for you.

@jstefanop
Copy link
Author

@thinkyhead awesome! Ill test this out.

@InsanityAutomation
Copy link
Contributor

For those looking, Ditto printing was done in the Shaqfoo fork of Marlin 1.0.0
https://github.com/ShaqFoo/Marlin_Firmware_Deluxe_With_Ditto_Print-Auto_Leveling

Note: it's crazy old Marlin 1.0.0 and Dual X Carriage support has been stripped out completely to implement Ditto printing. (the stepper.h file would be a mess to implement both the Dual X Carriage support and the ditto printing on a single X carriage... but everything else would be fairly straight forward)

The current branch supports ditto printing with up to 6 extruders. @thinkyhead and myself finished that before MRRF last year....

// Add a Duplicate option for well-separated conjoined nozzles
//#define MULTI_NOZZLE_DUPLICATION

@InsanityAutomation
Copy link
Contributor

@AnHardt Correct, with 3/4 point gantry leveling you can get a repeatable plane but still need an exceptionally flat surface (MIC6 plate) and nozzles set very carefully. I wish more manufacturers used jack screws on hotend carriages with fine thread bolts.... Thats part of why I like the Slice copperhead design, it allows some very simple adjustment.

@SlickNickeL
Copy link

SlickNickeL commented Jan 2, 2020 via email

@SlickNickeL
Copy link

SlickNickeL commented Jan 2, 2020 via email

@SlickNickeL
Copy link

SlickNickeL commented Jan 2, 2020 via email

@photodude
Copy link
Contributor

The current branch supports ditto printing with up to 6 extruders. @thinkyhead and myself finished that before MRRF last year...

// Add a Duplicate option for well-separated conjoined nozzles
//#define MULTI_NOZZLE_DUPLICATION

@InsanityAutomation Awesome, thanks for the information. Hopefully, I can get my printer's manufacturer to officially drop the crazy old ShaqFoo fork and move to Marlin 2.0.

I tried to look up the MULTI_NOZZLE_DUPLICATION documentation but didn't find anything on the marlin website search
http://marlinfw.org/meta/search/?q=MULTI_NOZZLE_DUPLICATION

the marlin website does have the old DUAL_NOZZLE_DUPLICATION_MODE documentation for M605 which it looks like the MULTI_NOZZLE_DUPLICATION replaced http://marlinfw.org/docs/gcode/M605.html

It would be nice if there was better documentation for this feature. Still awesome that it's there.

@SlickNickeL
Copy link

SlickNickeL commented Jan 2, 2020 via email

@SlickNickeL
Copy link

We have finished the testing.

We were not able to engage E2(Third Extruder) using M605 S2 P7 :Multi Nozzle Duplication on (012)

We tried P15 as well with no results.

We could not get The third Extruder to be addressed under any setting.

This was how the old Marlin worked. It could make one copy but that was it. Same is true now, from our testing.

M605 S2 P7 only engages E0 and E1 and it should be 0,1,2

What are we missing?

For clarity of use of ease, the ability to stop or exclude an extruder at this point should NOT be considered.

First state of M605 S2 should be E0 and E1 for a total of two prints. Second state of M605 S2 should be E0,E1,E2 for a total of three prints.
Third state E0,E1,E2,E3 for a total of four prints, and so on.
All cloning of code should always emanate from E0

@SlickNickeL
Copy link

SlickNickeL commented Jul 3, 2020 via email

@thinkyhead
Copy link
Member

@SlickNickeL — There might be some talented people who have time and space to help you over at Discord and at these other forums. Please try to remember that everyone who works on this project is just a hobbyist who works on the project for fun in their spare time. If you cannot be diplomatic and patient with these people under the most difficult of times then no one will care to help you.

@Roxy-3D
Copy link
Member

Roxy-3D commented Jul 3, 2020

@SlickNickeL

Who can I throw some money at, to solve this problem? All current players who were originally involved in delaying or ignoring this issue will be exempt from this offer.

You don't need to throw any money at this problem. I'll do what ever it takes to get this (and other features you want) working. But I don't want to code against a 'mythical machine'. I will need a production quality machine to write the code and to test against.

@SlickNickeL
Copy link

SlickNickeL commented Jul 3, 2020 via email

@Roxy-3D
Copy link
Member

Roxy-3D commented Jul 3, 2020

Mythical? Lol
How about magical?

Mythical as in I don't have one to see and understand. I don't have one to write code against and test that code for proper operation. Perhaps that was a bad term to use.
I would like to see some pictures.

@SlickNickeL
Copy link

SlickNickeL commented Jul 3, 2020 via email

@Roxy-3D
Copy link
Member

Roxy-3D commented Jul 3, 2020

Are you on Discord? (I don't see you there.) That would be a simple way to send you contact information.
Alternatively we can exchange contact information on www.3dprintboard.com. Or pretty much any way that works for you.

@MarlinFirmware MarlinFirmware deleted a comment from github-actions bot Jul 17, 2020
@Roxy-3D
Copy link
Member

Roxy-3D commented Aug 5, 2020

@SlickNickeL

Do you have everything you need?
Would some firmware help benefit you?

@SlickNickeL
Copy link

SlickNickeL commented Aug 6, 2020 via email

@InsanityAutomation
Copy link
Contributor

I dont blame you. Unfortunately those of us familiar with this area of code are few in number and quite simply currently totally overwhelmed. I havnt touched a thing that wasnt compensated in over 6mo not for lack of interest but lack of time. Its the nature of OSS development. Ive got working being paid for by 2 manufacturers and a distributor at the moment and even that is going at a pace slower than theyd like due to commitments in automotive automation applications that put food on my table.

I do know the issue is valid though and will need to be addressed at some point. There is an issue with the macro expanding the bitwise value.

@github-actions
Copy link

github-actions bot commented Sep 6, 2020

This issue is stale because it has been open 30 days with no activity. Remove stale label / comment or this will be closed in 5 days.

@github-actions
Copy link

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

1 similar comment
@github-actions
Copy link

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@a7madovic
Copy link

For those looking, Ditto printing was done in the Shaqfoo fork of Marlin 1.0.0 https://github.com/ShaqFoo/Marlin_Firmware_Deluxe_With_Ditto_Print-Auto_Leveling

Note: it's crazy old Marlin 1.0.0 and Dual X Carriage support has been stripped out completely to implement Ditto printing. (the stepper.h file would be a mess to implement both the Dual X Carriage support and the ditto printing on a single X carriage... but everything else would be fairly straight forward)

Hi @photodude! Were you able to build the firmware using the files by Shaqfoo? I am trying to use his files but not sure how to include them in the marlin firmware. Thanks

@a7madovic
Copy link

@InsanityAutomation @SlickNickeL @jstefanop I am relatively new to coding and editing the Marlin firmware and trying to use the duplicate printing command with 2 extruders that extrude simultaneously into a single nozzle. In addition, would like to vary the flowrate of one of the polymers relative to the other one both real time and fixed ratios. I tried using the MULTI_NOZZLE_DUPLICATION command in the configuration.adv file and that wasn't working for me. The firmware was not compiling successfully when I build it in visual studio. Has anyone tried the duplicate printing before with Marlin and had success with it?
I know some other hardware hacks but it's currently limited to only identical flowrates for both extruders unfortunately. I will appreciate your input. Thank you!

@AnHardt
Copy link
Member

AnHardt commented Feb 2, 2022

For two extruders feeding the same nozzle use a MIXING extruder.

@github-actions
Copy link

github-actions bot commented Apr 3, 2022

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked and limited conversation to collaborators Apr 3, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests