Skip to content

Conversation

@dob71
Copy link
Contributor

@dob71 dob71 commented Dec 6, 2011

Hi guys,

I'm working on adding another extruder to my Prusa. I haven't found suitable firmware w/ multiple extruder support, so grabbed Marlin and made the changes (saw a commit about that, so assume you are interested in multiple extruder support too). There are a lot of changes happening and merges will quickly become difficult, so don't want to hold on sending the pull request even though I havent' spend much time testing.

The changes should allow support up to 3 extruders. I have RAMPS 1.4, so the config is chnaged to show how to use it w/ 2 extruders (fan moved to pin 4).

There are quite a bit of changes. I've just merged them on top of Bernhard last commit.


  • The temperature control is pretty much complete
    (not sure what to do w/ autotemp though)
    Changed the pins assignment to clearly separate bed and extruder heaters
    and temp sensors, changed a bit how termistor tables are handled.
  • The steppers control is rudimentary
    (only chanages what pins it uses depending on the active_extruder var,
    but that's enough for switching extruder in the start.gcode in the
    the profiles)
  • Tested only w/ RAMPS 1.4

@dob71
Copy link
Contributor Author

dob71 commented Dec 7, 2011

Thanks guys, all sounds good.
Bernard, regarding a couple of things in your comment. I think people are more likely to use a single type of hotend on the multiple extruder systems. If that's correct the majority is likely to be OK with single temp control method until more weired configurations become common. I'd expect the most interst would be in the areas of switching extruders in the middle of the print and fine-tuning stepping for different extruders. As for combining the bed's temperature control with hotends, the code has too many special cases for handling the bed (my impression was that it became much easier to read and understand the code when the corresponding pins and defines were named accordingly). I totally agree with everything else.

dob71 and others added 11 commits December 12, 2011 00:16
of the global set by T command
- per extruder config
  Major parameters like steps/mm, acceleration, etc. are now configurable
  for each extruder.
- retract jerk
  Added DEFAULT_E_JERK parameter for extruder retract moves to allow fine
  tuning (without it the intial speed varies and retract is not efficient
  in eliminationg blobs)
- extruder offset
  Added parameter for extruder offset that allows configuring how the
  priniting head should be repositioned when switching extruders.
  The T* command can now also accept the feedrate at which to reposition
  the head when switching extruders.
Notes:
  There were changes in LCD management code I did not test.
  In general, the commands and settings for extruder are applied only to the
  active extruder. For example, to change max feedrate for extruders 0 and
  1, one has to switch to the first extruder, set its rate, then switch to
  the second and set its rate. M503 shows multiple 'E' values starting
  with extruder 0 and so on.
  As of this commit the firmware can be used to print suport in different
  material by simply switching extruder in skeinforge support start/end
  script and adjusting the steps/mm, etc. to make the same gcode work for both
  main and support material extruders.
Made some redame and config changes.
position for the extruder. It can be either its own last position
or (if S option is specified) the last position of any other extruder.
The latter is useful when using for printing support, the former makes it
easier to print skeined independently parts of the object.
Fixed issues:
- The retract was not detected when preceeded by
  a very short moves that were ignored and merged into the next
  (retract) move. That caused incorrect speed used for those
  retracts and steps skipped in complex small size objects.
- The output during temperature wait was too long causing
  Printrun's UI to misbehave.
The PID_RANGE define can be used to set range (in degrees) within the
target temperature where the PID is active. Outside of the range the
simple heater on/off method is used.

Changed config to speed up getting to the target temperature, enabled
min/max temperature safety check for the second extruder
- rewrote M109 code to be less confusing;
- removed do not wait if lowering temperature configuration var
  (just use m104 if lowering);
- changed the wait logic to consider any temperature within
  the TEMP_HYSTERESIS range to be acceptible to stop waiting;
- added W parameter to allow changing the time it waits for
  temperature stabilization after reaching the target range;
- added A parameter that if set to non 0 value will make the
  command wait for all the extruders that have non-0 target temperature;
- added experimental L and H parameters (to M104 too) that allow to
  make the temperature lower or higher than the current target
  (will remove if temp control can't help with oozing from idle hotend);
- added m208 command that take parameters T,X,Y for configuring extruder
  offset (T - extruder number, X,Y offset from the imaginary printing
  point);
- made the extruder offset be a EEPROM storable/retrievable;
The temperatuires are printed like this "ok T0:27 T1:28 B:27".
Here the 0 is the active extruder (active elways printed first).
@BCN3D
Copy link

BCN3D commented Sep 12, 2012

We are trying only a dual extruder, and for start with, we will try to print only suport material with the second extruder. It's marlin capable?

Also if you have a beta I will be very interested in testing all types of new stuff for RAMPS v1.4 board, so I can try the improvements and say if they are working or not!

- Cleaned up and removed a bunch of unnecessary and inefficient
code in the serial input processing;
- Made the error detection ignore the incorrect line numbers if
it saw an error and might be still looking at the bufered input that
the host side sent before it saw the error message;
- Added bed temperature window parameter and made the wait for bed
heater code ignore the request if the target temperature is not set.
@daid
Copy link
Contributor

daid commented Nov 6, 2012

Is this pull request still live? It seems quite old?

@nothinman
Copy link
Contributor

Clean up daid, clean up! and keep it up :) I'm here for the exactly same reason. I think some people just give up given how long it takes moderators to clean stuff up (not blaming, just saying). Would be good to improve it...

@dob71
Copy link
Contributor Author

dob71 commented Nov 12, 2012

Weired, I didn't get any notifications about the posts.
The beta changes are on the branch https://github.com/dob71/Marlin/tree/m

I'm not sure about the pull request status, but the code is fully functional (for RAMPS electronics, the LCD support is untested). I've been using it for a while (it's quite stable now) and adding minor improvements from time to time (here are some recent experiment results: http://www.okob.net/wp/index.php/2012/10/29/dual-extruder-pla-printing/ ).

I'm thinking of merging the mainstream changes in eventually. If/when done it will be easy to pull it back into mainstream, but the merge won't be simple (thousands of lines have changed in both my code and Marlin_v1). Not sure when I can undertake it. Might be a good idea to wait till Marlin_v1 is released.

@daid
Copy link
Contributor

daid commented Nov 12, 2012

The current Marlin_v1 already supports 3 extruders, with LCD. (I know, because I have 2 dual extrusion Ultimakers that I can use)
So I'm wondering what the difference is between the current Marlin_v1 and your implementation.

@dob71
Copy link
Contributor Author

dob71 commented Nov 12, 2012

GIT log says that everything commited up to Dec 5 2011 has been merged in (commit 4fd75dc). I saw that Eric has created dob71merge branch a few months ago and can see that something (for example code for E-jerk) was moved in manually. Without knowing which commits were looked at it is hard to tell what other changes made it in. There are a number of things that I have added since the last year and from the quick look at the 'T' command code and the configuration file not many have made it in. Here are a few things from the top of my head:

  • Per-extruder configuration (max speed, stepping, acceleration);
  • Extruder offset and options for the T command how to re-position the head;
  • Options to the T command for chosing how to treat the E axis (shared between the extruders or individual E axis per each extruder);
  • PID range (actives PID only withing the specified range of the target temperature);
  • Temperature control commands for lowering/increasing temperature using relative values;
  • M109 option allowing to wait for all hotends;
  • a couple bugfixes.

Since you know the state of the dual extrusion support that is currently available in the mainstream one way to start might be checking what's available against the "Multiple extruder support" section of the README file on the https://github.com/dob71/Marlin/tree/m branch. It mentions almost all the changes visible to the user (I haven't described the options for relative temperature adjustments yet).

@daid
Copy link
Contributor

daid commented Nov 13, 2012

While I would love to check out the changes, I currently have other priorities. I will keep this pull request open as a reminder that multi-extruder support can be improved quite a bit. As I see some changes in your list that I like 👍 so nice job!

@platvis
Copy link

platvis commented Jul 2, 2013

hey is there already a completed zipe file of all this changed programme.
I want to try to add a extruder, so i can use the printer with 4 extruders.

@nothinman
Copy link
Contributor

is there anything news in this pull request that's worth implementing? we do have multi extruder support now, but we might be missing out on some of the features from here.
I can't see anything that we don't have in the current code, but can someone confirm please?
@daid @dob71 ?

@dob71
Copy link
Contributor Author

dob71 commented Feb 12, 2014

There might be a few things that could be useful for mainstream, but that pull request is really old.
I'd say it should be closed.

All the new developments have been moved to "https://github.com/dob71/MarlinX2".
If anything should be merged into mainstream, it should be from that new repo.
The list of features is here: "http://reprap.org/wiki/MarlinX2"
If find anything useful the merge can be done directly from that repo (the history is preserved).
I can also pull the changes into a fork repo and submit a pull request.
There are a lot of changes, that won't be a trivial merge.

@nothinman nothinman closed this Feb 14, 2014
rosenhouse pushed a commit to rosenhouse/Marlin that referenced this pull request Feb 16, 2015
…ersioning

explicit release versioning with check
SimoneCarnio pushed a commit to SimoneCarnio/Flying-Bear-Ghost-5-Marlin-2.0-Firmware-Red3D-Edition that referenced this pull request Dec 8, 2020
b3tuning pushed a commit to b3tuning/Marlin that referenced this pull request Feb 23, 2021
Allow build-firmware to work with ccache in lib64
tonokip pushed a commit to ultimachine/Marlin that referenced this pull request Jan 24, 2022
Resolve "Hotend Idle Timeout not being used"

Closes MarlinFirmware#27

See merge request lulzbot3d/marlin!19
classicrocker883 pushed a commit to classicrocker883/Marlin that referenced this pull request Oct 20, 2023
arades79 pushed a commit to CELLINKAB/Marlin that referenced this pull request Mar 15, 2024
…ly-responses

EX-1723 Com module friendly responses
- add G7 relative move
- add M801/M802 printbed temp commands
- add M824 get active printhead command
- add M797 reset calibration command
- add M1015/M1016 position reporting commands
- add M821 axis homing check
- add M1017 multi status report
arades79 added a commit to CELLINKAB/Marlin that referenced this pull request Mar 15, 2024
avs777 pushed a commit to avs777/Marlin that referenced this pull request Jan 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants