Automatic Tool Changer

I’ve been working on this the past few weeks and I’m finally ready to show it off!

I am giddy with excitement, I can barely contain myself!

It’s not yet fully finished. I am wanting to add electrical contacts between the tool mount and the tool, to allow extruders and probes.

I contemplated perhaps a dozen different styles for the locking mechanism, and the hardest part was trying to maintain a really low profile. I think this solution works pretty well.

I’ll dump the STL files on Thingiverse and include a link.


Well done! Where’s the tool change that pops open a cold one to celebrate?

1 Like

:slow clap:

Great job! That looks great. I have a million questions.

So are you going to add a small army of dw660s with different bits? How do you get the Z of each tool known or the same?

What is the gcode magic, and how is the servo controlled? After you set the workpiece origin, how does it know where the tools are (multiple coordinate systems?).

I can see the energy that went into preserving the X,Y space. Does the Z need to be that large, or is that your preference? It seems like the mounts for the idle tools coul be shorter to allow smaller Z.

I couldn’t tell from the shape of the twisting parts. Is it a snug fit even with a not perfect print? It looks like maybe it gets tighter as it turns so if there was a gap, it would just turn more, correct?

I think keeping all the wires attached is a good choice. At least for the AC. I worry a misconnect is going to toast some stuff.

Next up, we need to find a project that uses a couple bits, a laser, markers, drag knife, 3D printer, and a plasma cutter.

1 Like

Uhhh, well, DAM. That is just one heck of a project. I am shocked. Freaking awesome!

That is just nuts. Best showcase project ever by the way. Seriously speechless right now. Fill in some of the details when you stop messing with it and good job, seriously awesome project.

1 Like

Yes the basic idea is that you could have an array of DW660s with different bits installed, or even two. I had thought you could use the electrical connection for steper enable to activate a solid state relay to enable power on each DW660. That way a single electrical connection is multiplexed to enable N routers.

I measured the tool offsets and hard-coded work offsets into the tool-change g-code. I installed the black pen, and just touched a surface, and reset G92 X0 Y0 Z0. Then I installed the red pen, and jogged (only a bit) so that it was just touching the same place. Then M114 tells me the offset. Then I installed the router, jogged to that it was touching the same place, and M114 again tells me the offset.

Then this is where work offsets M54, M55, M56, M57 come into play. When I home the machine, I set M54 work coordinates to be machine relative. I physically hold against X Y hard stops and home Z, and this is M54 G92. Then when I touch off the workpiece, I perform this:

G92 X-5 Y3.4 Z1.1 ; Router position relative to pen 1
G92 X0 Y0 Z0 ; Pen 1 numbers zero by definition
G92 X-1 Y-1 Z-0.7 ; Pen 2 position relative to pen 1
; Change back to machine coordinates

Then after that, picking up the router for example is this:

; Pickup router sequence
G1 Z185 F1000
G1 X577 Y39 F3000
G1 Z30.4 F1000
G1 X587.8 Y28.7 F300
G4 S1
M280 P0 S160 ; Latch
G4 S1
G1 Z185 F1000
G55 ; Switch to router work offset

So it uses machine coordinate space to pick up or park the tools, and switches to the per-tool work offsets to perform the work. Then it will switch back to M54 to put it back and pick up the next tool.

As for Z height, yes it is a disadvantage, but I think it’s necessary for the gantry rails to clear the tops of the parked tools.

To mitigate the Z height, I was thinking I would put a tall “box” to provide an elevated work surface, and stiffen the side rails with boards. Or alternatively you could put holes in the deck and reach down through the deck to get the tools.

The twisting cleat has somewhat of a cam on it’s working surface, and there is a similar cam surface on the movable mount. This allows it to grab, even when it it a couple mm out of position, and pulls it into place. But in the latched position the surface is flat so that it doesn’t “want” to unscrew itself and there is some allowance in the amount of rotation. The servo is driven to a fixed position so it’s not really possible to grab with a given force. I think this means that errors in the print do matter. Being plastic, the pieces can deflect somewhat, and I think this flexing is having to accommodate all the imperfections in the dimensions.

Once the electrical connections allow driving steppers, It’s really sky’s the limit.

That is very cool. I’ve been talking to Ryan about this over the last couple of MRRF’s. (Frosty just pointed this out to me)

The approach I was contemplating was a bit different. I was thinking about some type of curvic/hurth coupling to hold the plate in place. The approach I was contemplating was that instead of multiple stations having just one hole the z-axis would go to grab a tool.


Having only one hole would be a good improvement to not consume so much work space. I assume you would have a turret of some kind below the table. If the tools have power cords or the filament for a 3d print nozzle, then it might need some more care in how the cords are placed.

I just looked up the curvic coupling (new to me). I was originally thinking of a kinematic mount with three balls, but the pieces are thin enough that it behaves like a flexure. So eight balls is technically over-constrained but it flexes into position where all eight balls seat, and so it should be very repeatable.

Curvic Couplings are cool to me. Warner Swasey SC turret lathes had a curvic inside their indexing turret head(not exactly applicable here but it’s a cool story) These where some of the first CNC lathes made and where made in a time where the parts for this machine where made by machinists using manual engine lathes. These things are basically battle tanks and virtually indestructible . When a turret crashed it basically made the indexing more accurate. The downside is that the massiveness of these machines made them very slow. Even so people still rebuilt this machines for turning rough forgings, where you can spin the work very fast.

At MRRF I saw the E3d tool changer. That looks cool as well as uses a locking cam and pins for locating. Have you seen that…

Any chance you can post some picks how the locking motor actuates. There’s not a lot of room between the z-axis lead screw and the block. I’m curious how you got it to fit in there.




I had seen e3d’s tool changer a little while ago, I think it was Tom’s factory tour. Very cool and in some ways an inspiration. I had actually wanted to avoid the twist cleat because they had used it, and I didn’t want to be too much of a copycat. But my other ideas were worse.

I’ll post more renderings in a bit. The servo motor is above the z motor and operates the cleat by pulleys, so the pulleys can be pretty thin. I had just enough room for a 608 bearing too so the radial (vertical) forces of the cables are supported, but the axial forces are just plastic rubbing on plastic.

Ok I’ve posted to Thingiverse here:

Here is an exploded view:

[attachment file=“exploded_view_labeled.png”]

Part “D” is not really a printed part, it’s just representative of a 608 bearing.

The pulley on the cleat C is larger than the OD of the bearing, and part E holds the outside of the bearing and fits inside the bore of A. Part E also holds the cleat+bearing from falling out the back when it’s not engaged.

Everything is assembled with half-inch #6 “sheet metal” pan-head screws, which I use for everything, not just this project. Part E screws onto part A with half-inch #6 screws. Parts F and G use #6 screws to tighten onto the conduit. The servo is attached to part G with #6 screws. The servo horn is captured between parts H and I, which are secured to each other with #6 screws. Part J is attached to the table with #6 screws.

I also have a trimmed down version of parts B and J specifically for the pen holders, because for pens it is a waste of plastic and time to print the full tool mount and parking fixture. The parking fixture J is reversible, so if you had a humongous monster of a tool you could turn it around and there is enough clearance between the “wings” for the Z axis to fit.

Found it! And wow still. It’s officially on my one day list. The people on this forum amaze me.

Very nice design for the locking system, congrat’s.

I think you might need to find a solution for parking the tools themselves. You can’t park them all on your build space, because it will take a lot of usable space and also because the X and Y axis have to be able to move over them.

So maybe you might want to think about some kind of rotative tool charger, you could use one of the vertical foot bars as the main axis and make it so every tool will come up at the same spot in the corner of the machine. I think this might not be very difficult to build.

That was something I wanted to try too for a while, but since I’m about to move to a new house I’ve put most of my projects in standby. But once I’ll be back on track I think I’ll use your system for the Z, it seems pretty nice.

Just wondering, how is the repeatability? Did you try to measure how accurately it locks the tool in place if for instance you pinpoint a spot, then drop the tool, pick it again and pinpoint the same spot?

But again, kudos on your great success!

Little remark just in case you don’t know it already: your cutting speeds are way too low, you can go much faster than that!

Well you made me curious about repeatability so I measured it (Z only):

I had figured the repeatability would be pretty good because the 8 balls serve to locate the tool mount and the cleat clamps pretty hard. But I wasn’t sure I was expecting it to be below 25 microns (0.001 inch).

As for your other comments about tools consuming working space, and perhaps a turret might work, your points are valid. I have so many directions I want to take this, I’m not sure what will get prioritized next…


Very nice test setup and very nice video.

Just a little remark, you might want to measure directly at the tip of the router, that’s where you’re likely to see the biggest deviation

But it seems really consistent so good job!

Thank you.

You are right, the overall effective repeatability will be worse and will depend on the particular tool and the environment, like if there were a slight (and non-repeatable) pulling on the power cord for example. But my aim was to measure the repeatability of the detaching mount itself to see how much additional error it will contribute. In principle there would be six degrees of freedom in the mounting error, and I have measured only one, but I feel pretty good about the other five.

WOW! This is amazing! Is there a component list or links for the parts that are not 3d printed?

Seriously pondering this one as a build.

Thanks for such awesome, amazing, astounding work!


Thank you for the kind words. There are two specific components that are incorporated in the design, one is this servo:

The design could be made to use other servos, but the mechanism to attach the pulley to the servo uses a pair of parts that clamp around the servo horn that comes with this servo in particular. Other servos from the same family will probably be fine, but a random servo of the same size is likely to come with a horn that might not fit well.

The other part that is specific to the design is a bunch of half-inch #6 sheet-metal screws. I use these for everything. Sheet metal screws are like wood screws except they tend to have pan-heads whereas wood screws tend to have flat heads, which are not good because they split the plastic. The screw holes in the design are intended to fit #6 screws specifically. Buy a box of 100 for like $3.50.

There are some other parts that you will need but the specifics are not critical. I use a buck converter ( to produce 6V from the DC supply with plenty of current. I did not try, but I would not expect the servo to get enough current from the main board. The 6V output of the buck converter is wired directly into the positive wire of the servo.

I also use some 50lb braided fishing line with Dyneema. It is similar to aramid, I think it’s in the same family, which is important in that it is very low stretch. I have not tried other types of string but I would expect it to be worse the more the string stretches.

Oh, one more thing, the little metal balls are standard 0.177 caliber BB’s, which I had handy. The 8 BB’s are glued with epoxy onto the tool changer.

Nothing else is coming to mind right now. I’ll post back if I think of anything else.

I’d be honored if you decided to try to build this. There has been a lot of interest but none have tried to replicate it yet as far as I am aware. I’ll do my best to answer any questions you might have along the way.

Thank you for the parts and info! The one thing that would be really good is dust collection on the router. I know that complicates matters exponentially but it’s something that really helps. Maybe even a side bracket or something would be worth it.

Will probably start trying to figure out how to print up the parts over the next week or so. The concept is absolutely brilliant and so needed!

1 Like