-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
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
Support extruders with a differing number of heaters & steppers #1613
Comments
@daprice But yes on long term we have to distinguish better between nozzles an 'filament pushers' and have do define them separately. |
Just wanted to step in here and mention I’m working on implementing the DGlass3D extruders for Marlin. One configuration that makes possible is: One DGlass3D HPX2-MAX with One Cyclops That would be: One stepper motor The HPX2-MAX runs one direction to push one filament and the other direction to p us the other filament. Thus I’m interested in how y’all make this particular change. :-)
|
Forgot to say. DISABLE_INACTIVE_EXTRUDER is a bad idea then - or not? - you have to try.. |
@scotty1024 Well. the abstraction of an EXTRUDER in Marlin still assumes that there will be pins for a motor plus a heater plus a thermistor. The E axis is implemented as a single coordinate system, and at the planner level all it cares about is moving the axis +forward and -backward. I've just been into the As for the other part, where "switching the extruder" is actually only switching the direction of a single extruder, that's mostly a matter of interpreting the G-code a little differently for this setup. At the higher level it will switch the extruder in the usual way, but at the lower level it will talk to only the single stepper motor instead of two. The pins for a second extruder motor should just be left as-is, and they will be ignored. (The problem being that signals intended for two motors being sent on a single set of pins can cause bad things to happen.) I would start at that low level, where the E motor has a flag so it can be reversed. (Or, use the |
@thinkyhead All good thoughts, I'm chillin' letting the Kraken changes solidify a bit then going to dive in. I've been working on a RESTful build service for your configuration front end to call. At present you pass three arguments (motherboard ID, configuration.h contents, configuration_adv.h contents) and four seconds later you get an error message or a hex file back. Next iteration
|
@scotty1024 I'm looking forward to playing with that builder and continuing to make this tool more useful. I've been putting up some content on the new site wiki, and over the coming months I will move over all the documentation we have at present. I'd like to do some design mods on the wiki to put up the Marlin logo and make it look a little less generic and more readable on big screens, if there's some way I can get SFTP access. |
@thinkyhead I guess github filtered out my last attempt at getting you my email address. Scotty1024 the at sign thingy the domain "me" with a TLD of "com". I will happily set you up with accounts.
|
@thinkyhead Well email doesn’t seem to be working. I’ve added an account for you if you can get to it before anyone else does. :-) Username “scottl” password “scottl". You will be required to change the password upon first login. Let me know of any permissions you need tweaked. If someone else gets to it before you let me know and I will kick them out and we can try again.
|
When I can I will build my firmware with the function SINGLENOZZLE. This function enables all calls to go to the only temperature hotend said. So you can have up to four extruders and a single hotend. |
Hmm... what happened to OP ? is this an issue and if so can it be confirmed by others? |
@scotty1024 Ok I did get in - SSH |
@daprice |
@daprice Quite right. If you set more than one extruder to use the same pins the results will be unpredictable. I once killed a stepper driver by mistake simply by setting the STEP and DIR pins for more than one axis to the same values. It would be better to wait until there's a specific feature to support the configuration. For multi extruders that share a single heater, this will be similar to the various "DUAL" options. For something like a DGlass, it will be a little more involved, but along similar lines. |
I was able to work around the limitation for now by defining the same thermistor pin for all extruders (so Marlin would think they are all at the same temperature and still be able to detect and prevent cold extrusion), and an unused pin for heaters >=1 so commands to those heaters don't actually affect anything. As long as all the extruders are set to the same temperature, this works fine. It might be nice to be able to set each extruder to a different temperature and then have Marlin use the temperature setting from whichever tool is active, but that isn't critical. |
#1686 implements the code for a single nozzle+heater+sensor having two extruder motors. I'd still like to find a more general solution, that will allow defining which motors go with which nozzle+heater+sensor(s). I don't think the code can (yet) deal with something like the Kraken. |
Neither does it deal with the opposite case with two extruders and a single
|
@emartinez167 The DGlass is quite a special case, with a Servo to switch nozzles, and the motor reversing direction for the second nozzle. Someone who has one of these will have implemented it already. For example, Dglass3D themselves: https://github.com/Dglass3D (Repetier only… much code to steal…) |
This too I had done in my firmware when we started printing in 4 colors with a single hotend. The first lead to 4 extruders, the second was that of singlenozzle and finally the third virtualize extruders. |
A comprehensive approach… I think it would be worthwhile to work out what all the required variables would be to best make a generic model of the parts which correspond with one another, how and when they are engaged, etc. Just writing it up in a gist at first… |
It's crying out for an OO approach with objects for heaters, motors, feed mechanisms and nozzles, etc with associations between them represented by pointers or references. Totally the opposite of how Marlin is written at the moment. |
@nophead Pointers are a good thing, encapsulating things into structures and objects is a good thing, and I definitely vote for using more of both. Right now there are several arrays initialized with |
any news on this one? |
@boelle Still a lot of preliminary work before extruders can have more than one heater or more than one stepper. I'm thinking of a simple concept, like I described on Mar 28, but where you could even have two "tool" objects refer to the same "extruder" object, but with slightly different states. So for example, Tool A might be Extruder 0 with the motor moving forward and its servo in position 0°, while Tool B would be Extruder 0 with the motor moving the other direction and its servo in position 30°. Obviously we have a lot of preliminary stuff to make before we can do that. |
Looking at this one would it not fall in the category where we agreed that new hardware should be supported by the makers and not us? |
@boelle - I disagree. Marlin needs to have the infrastructure to permit this. Then it would be up to the manufacturers to configure that infrastructure to match their hardware. That said, this is a feature for, perhaps, Marlin 2.0. |
of course.... you are right 100% and 2.0 might not even be in my lifetime as the progress is now |
Sorry, I've been super busy! I will be doing more bug fixes soon to get back in the groove. |
Did you fix your singlenozzle multiple driver issue? |
@stanrob |
I repet if you want try my marlinkimbra version. It has multiply extruder and singlenozzle option... |
Yes I try it but I may have make mistake because it don't work on my printer |
@MagoKimbra How easy do you think it will be to integrate your solution into Marlin? I would like to give it a go. Have you made many other (unrelated) changes in your branch? |
@thinkyhead I try merge my solution width Marlin... |
@MagoKimbra Sounds like a good approach. |
I try it and it seems to work well. However I didn't find out how to use the 2 extrudeurs |
Thank you for your interest making Marlin better. |
Dear all, Output Log
|
Please ask there where you got "MarlinX2-master". Does not look as if this is one of our current branches or repositories. _WRITE() is normally defined right before WRITE() in fastio.h |
what source do you suggest? |
Apparently it comes from https://github.com/dob71/MarlinX2 |
Marlin 1.1.0 (any recent |
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. |
When attempting to configure Marlin with
EXTRUDERS
> 1 but using a board with only one heater output (in my caseBOARD_RAMPS_13_EFB
), compilation fails with the errors below because it can’t find the pin for the second heater (because there is none). This should be a valid setup for hotends such as the E3D Cyclops (which has two filament inputs and therefore two extruder motors, but only one heater and nozzle) and potentially others, so it would be nice if Marlin could support it.Probably either commands to set Heater >=1's temperature should control Heater 0 instead, or just be ignored entirely.
The text was updated successfully, but these errors were encountered: