[2.0.x] SWITCHING_TOOLHEAD#11623
Conversation
|
So now it's fully working besides the "empty tool" function |
Marlin/Configuration.h
Outdated
There was a problem hiding this comment.
Tabs are forbidden. Please set your editor to always use 2 real spaces for indentation.
There was a problem hiding this comment.
Do you have a recommendation for a good editor? I actually using xcode. It handled the spaces very bad...
Marlin/src/module/tool_change.cpp
Outdated
There was a problem hiding this comment.
Looks like you forgot the if here and on other debugging lines.
There was a problem hiding this comment.
Oh yes I see. I will clean up asap.
Thank you
95c6caa to
2e4e575
Compare
|
Rebased, squashed, fixed formatting, typos, spelling, and bugs. Added option to example configs. |
cd78565 to
c740ec2
Compare
Marlin/src/module/tool_change.cpp
Outdated
There was a problem hiding this comment.
Since the hotend_offset pertains to the nozzle's position relative to another nozzle on the same carriage, I'm pretty sure that it should not be included here. The switching toolhead docking positions should refer to the carriage's position, and not to the nozzle's position.
There was a problem hiding this comment.
So without the 'hotend_offset' the printer will crash by the next tool change as soon a offset is applied. Or is there a variable that refer always to the intal home position?
c740ec2 to
1e2cd36
Compare
First, split up the function so that the drop-off is in one function and the pick-up is in another function. Under normal conditions, the change will do both. But for a certain G-code command or parameter it could just do the drop-off. For example, |
4a3fc6d to
6dc68d7
Compare
|
This still needs more work to be fully comprehensive. With certain kinds of tool changers (such as E3D's) there's going to be a separate hotend (heater plus thermistor) for each toolhead. But for the E axis there may be either a single E stepper driver (with stepper signals routed through the carriage) or multiple E stepper drivers — one per toolhead. Regardless of whether there's only one E stepper driver or one-per-toolhead, each toolhead may want to use different E steps-per-mm, since different toolheads may have different sized drive gears, etc. And, we need to look at how the |
38ef351 to
026af7b
Compare
|
Sorry I don't got the point with one or more stepper drivers. In this kind of tool changer normally there use one per axis. Otherwise you can use switching extruder. And actually you can simply set the E-steps-per-mm per axis. With the function 'DISTINCT_E_FACTORS' you can set it per extruder. So the 'hotend_offset' always refers to first nozzle. As soon the tool change is finished the nozzle will move to the offset position. |
|
See https://www.youtube.com/watch?v=bn4gWYOzHxQ to see what I'm talking about with regard to a multi-tool setup that uses only a single E stepper driver, but where each tool has its own separate heater and thermistor. The "Switching Extruder" is a whole different beast. It is implemented with the assumption that there will be two nozzles on a single carriage, switched with a servo, and it is currently limited to a setup with either a single X carriage or a Dual X Carriage. Meanwhile, I have applied to be a Beta Tester for the E3D Toolchanger, and it's a merit-based queue, so there's a reasonable chance we will have a system to test with in the near future. |
|
On this video you see that for each hotend the use a separated extruder, stepper motor and stepper driver. You can see the 4 extruder under the hotend docking station. On Would be nice to handle all motors with one driver. But this should be switched to another feature or not? |
|
I was there at ERRF and got to see the beast for myself. Sanjay promised to send me a unit (but, he was kind of drunk at the time). E3D was also at ERRF with an more refined version. (By that time Sanjay had forgotten who I was….) There are electrical contacts on the carriage, so I was under the impression that they were there to pass signals to the stepper motor on the picked-up tool. But perhaps they do have separate signal lines for each tool. |
|
I think the wires from the carriage are only for the BLTouch and the lock mechanism servo. Is it possible to store the last used tool? |
|
Its in principle possible to use one stepper motor driver for all tools but in this case you need additional electronics (signal switching system, and stepper drivers protection) Personally i like your switching system very much and plan to use it on my corexy printer. |
|
yes thats right. In this case we need extra electronics. So i think this should be added in a additional feature |
|
Btw seems part of this mechanism is already available for Prusa i3 MK2 MK3 =) But without driver disconnect protection. |
a9f1cda to
a7139b8
Compare
a7139b8 to
696bfec
Compare
|
Actualy there is simple circuit that prevent damage to stepper motor driver =) and actualy this circuit can be built into switcher one.. (only few modifications needed) More interesting problem is in case you wanna switch heater and thermistor |
|
so thinkyhead is only talking about shared stepper driver not the heater and thermistor. Anyway I think this kind of multiplexer, should be done as an extra feature and not included into this. |
|
Multiplexer can be separate feature. Marlin already have one supported (Prusa Stepper multiplexer) |
|
I like it. Basically, the tool-changer I was imagining would be just like the E3D motion system with a multiplexer added on. So having this just target the tool-changing aspect makes good sense. |
|
I see that RepRapFirmware (on the E3D Toolchanger) uses |
|
@smoki3 @thinkyhead Problem: 4mm offset on T1 is never applied. Bed does not move 4mm up/down on extruder change. |
|
@UticaTechClub — What does Note that if the Z position is down at the bed, a |
|
Thank you @thinkyhead @smoki3 I tried both, positive and negative Z offset and it behaves the same, meaning print bed does not go up/down on tool change. Here is the exchange with negative Z offset: Is it possible that merely issuing T command is not enough to trigger offset adjustments? I also tried applying X and Y offsets and those appears to be not working either. Thank you so much for your help. |
|
@thinkyhead @smoki3 I thought that enabling
is enough to also make offsets work. |
I see a couple of bugs in the handling of
Not needed. |
|
@UticaTechClub — Could you ZIP your |
@thinkyhead Thank you!!! I will look at the debug output tonight with M111 (just saw this cool command), because tool_change.cpp sends some really good debug messages to at least distinguish the program flow. |
|
@thinkyhead I met you with my students last year and it was such a delight :) |
They should be even better if
Yes, I will be there. Last year was a lot of fun. It was good to see the RepRap spirit is alive and well! |
|
I have submitted these offsets, homed and switched over to T1: I can see how offsets applied to the current_position and they are proper, but then Move Back is happening and everything is getting lost: The but at line 857 of tool_change.cpp it moves back to So the question maybe is why |
|
@thinkyhead One other observation... Line 554 of tool_change.cpp, inside An then, on line 797, X, Y and Z offsets are applied, so Z gets applied second time. Function And that is what debug output is showing, when Z goes from 14.0 to 16.0 and to 14.0: |
|
I see you found the same code anomaly I was referring to above. |
|
@thinkyhead But, what about line 846 of |
|
@thinkyhead Here is the debug code of switching from T0 to T1: And T1 to T0: Offsets were set to: As you can see, offsets are applied to |
Add tool-changing with a single X-carriage and docking toolheads, as with the E3D Toolchanger system. More at the E3D TCBlog.
Hi everybody,
as i already mentioned here:
#11588
This PR also includes:
#11616
I prepared the main functionality by myself.
The tool change it self work already fine. But one required feature is still missing.
For this type of tool changer it would be great if we can place the actual tool head back and grab no new one. So that you don't have a active tool. But I have no idea to realize it.
Would be nice if someone can help me.
Thank you!