Since building my first Hemera tool controlled by a Duet3D Tool Board, I have built a second one and made some improvements.
Improved dock brace
The Hemera tool can be made more rigid by improving the bracing between the tool plate and the dock. The same printed design used for the first dock brace will fit in the vacant position, so initially I just added a second brace as shown here. However, I have now replaced this by a single large dock brace, described in Part 4.
Lubricated docking pins
The Hemera tools are quite heavy and this can result in them tending to judder as they are pushed back over the docking pins. A small amount of silicone grease on the pins (including on the the undersides) helps.
Dock sense switches
RepRapFirmware 3.1 has a conditional GCode facility so that operations such as homing and changing tool can be made to depend on the state of the machine. By adding a dock sense switch to each tool, we can check that tools are docked when they are supposed to be.
Some Tool Changer owners have mounted switches on the docks to sense when tools are present. However, when Duet 3 electronics and tool boards are used, you can save wiring by mounting the dock sense switch on the tool itself and reading the switch via the CAN bus.
The switch I chose was Omron type D2FD-01L30-1T. This is a subminiature microswitch with low activation force and gold plated contacts designed for low current operation.
It turns out that if it were mounted directly on the PCB, it would be just the right height to trigger when the acrylic panel pushes against it as the tool is docked. Maybe in a future revision of the Duet 3 Tool Board we will extend the PCB slightly and add holes to add the microswitch. But for now I soldered wires to the ends of the pins, then attached the switch to the PCB using epoxy resin so that the pins were hanging over the edge.
The most convenient connector to connect the switch to is the adjacent 4-pin Z probe connector. Use the two middle pins, GND and IO_0_IN. I used the normally-open switch contacts so that a disconnected switch looks like a tool that is not docked.
Here’s how I configure the dock switches on my Hemera tools, which are tools 2 and 3 with CAN addresses 22 and 23. I chose to assign GpIn 2 and GpIn 3 to the tool 2 and tool 3 docking switches, leaving GpIn 0 and GpIn 1 free for future tool 0 and tool 1 docking switches.
; Set up the dock indicator switches on the Hemera tools. These are wired NO so invert the pin.
M950 J2 C"22.!^io0.in" ; GpIn 2 = tool 2 dock switch
M950 J3 C"23.!^io0.in" ; GpIn 3 = tool 3 dock switch
I also added created a macro called Report Docking Status containing these lines:
while iterations < 4
if iterations >= #sensors.gpIn || sensors.gpIn[iterations] = null
echo "Tool", iterations, "has no docking switch"
elif sensors.gpIn[iterations].value = 0
echo "Tool", iterations, "is not docked"
else
echo "Tool", iterations, "is docked"
This macro assumes that GpIn pins 0-3 are reserved for the dock switches for tools 0-3 respectively. Here is an example of the console output it produces:
06/06/2020, 16:04:07 | M98 P”0:/macros/Report dock status” Tool 0 has no docking switch Tool 1 has no docking switch Tool 2 is docked Tool 3 is not docked |
I also amended the homeall.g file to prevent homing being attempted if a tool is not docked:
; homeall.g
; called to home all axes
while iterations < 4
if iterations < #sensors.gpIn && sensors.gpIn[iterations] != null && sensors.gpIn[iterations].value = 0
M291 S1 T5 P{"Please return tool "^iterations^" to dock before homing"} R"Cannot home"
abort
M98 Phomec.g ; Home C (ToolHead)
M98 Phomey.g ; Home Y
M98 Phomex.g ; Home X
M98 Phomez.g ; Home Z
G1 X0 Y-148 F15000 ; Park
The docking switches could also be used to verify that tools are properly docked after tool changes; but I will leave that for another day.
In Part 4 I add filament monitors to the Hemera tools.
Greetings,
Anyone knows how to tighten a clutch on an aztec trim servo?, pulley turns but won’t Cary the cable, I have turned the adjustment nut, but I can’t hang on to the Pulley, any tricks one can share would be greatly appreciated
Sam
Pingback: Converting the E3D Tool Changer to Duet 3 with Hemera Tools (Part 2) | David Crocker's Solutions blog
Hi. Did you get around about properly docked implementation? My tool was knocked off the tool head and kept extruding filament and of course the heater was on and kept printing (moving XYZ), which could have caused a fire. Fortunately it was laying on the bed most of the time until it was done printing and moved to the back left knocking it off the bed onto the wooden table, luckily I heard the thud and caught it in time.
I want to set it up so that if it’s printing and gets disconnected (without a tool change command) then it stop/pause printing and turns off the heater and stops extruding, and of course an error message. I’m also thinking of adding another switch to make sure when it’s parked and if it gets knocked off somehow it will turn off he heater and pause the printing, don’t want it to try and change to that tool if it’s not where it’s suppose to be.
I already have switches on the Hemera tools to check that they are docked. Currently I only check them during homing, however it would be possible to set up a daemon.g file to check them continuously.
I don’t currently have a switch to check whether a tool is loaded correctly. However, there is a spare wire pair going to the tool carriage. I don’t think it would be hard to add a “tool loaded” switch using these wires, such as a small push button or microswitch mounted on the back of the tool mating plate just above the rotating shaft, with the actuator protruding through a hole drilled in the plate. Perhaps you should post on the E3D forum asking if anyone has designed one?
Thank you for the reply.
My apologies I should’ve stated what I had. Duet 3 in standalone mode, Toolbaord1LCs, tool distribution board now running V3.2, Hemera and a tool changing system on CoreXY system.
I thought there would be an interrupt type for a tool mounted like one that the filament run out sensor has.
Just read up on daemon.g file and to use it. I would have to check to see if it’s printing or not, also if it has started a tool change (and maybe if it done with the tool change) and which tool is suppose to be in use. If I add a parked switch, that would be 6 switches to check along with the printer state status above (for 3 tools). (Side question: Is there a custom user created global variable? Like putting a value in that variable in the tool change g file to be used/accessed by daemon.g file?). It seems like a waste of processing time.
My Tool head and tool mount, along with the Hemera mount, are designed and built by me. So it’s no problem added a parked switch and hooking it up to the toolboard. The Hemera is heavy enough and I didn’t want to add more weight to the X carriage with another motor like e3D’s tool changer system not to include loosing build area in the Y axis. I use stainless steel dowel rods, magnets and bearings for the tool head and tool instead.
Thank you for your time