Open Source Tool Changer for Small Industrial Robots
by isenklopr in Workshop > 3D Printing
3204 Views, 33 Favorites, 0 Comments
Open Source Tool Changer for Small Industrial Robots
Hiya!
I worked on a tool changer for small robots for my bachelor's thesis. Part of the original task was to post the piece on an open source platform, so I chose Instructables to publish my desgin.
This project is supposed to enable everyone who owns an industrial robot to automate their tool changes. Buying a small robot can be a great productivity enhancement for small companies. They offer a chance to replace workers in very repetitive environments and can cut time in a variety of applications.
To maximize the potential benefits of a robot, tool changers can be utilized to increase the number of tasks a single robot can perform. By switching the tool autonomously during the program cycle, downtimes to do this step by hand can be minimized.
Since tool changers offered in industrial environments are costly, the goal of this instructable is to help you build an open source alternative, suitable for small robots designed for a max payload of 10 kg. It is mostly created from standard and 3D printed parts, in addition to an Arduino microcontroller.
The tool changer will be used in various projects of the Protohaus makerspace in Brunswick, Germany. They will include everything from making sculptures over deductive purposes to research. The makerspace houses an urban farming project called SmartDigitalGarden, that will make heavy use of the automation capabilities made accessible by the tool changer.
The required files can be downloaded from this github repo. Datasheets of the required parts are also posted there. Be advised that the files provided and the instructions given on this page were originally created to be used with a KUKA KR10 Agilus R1100-2 robot that was kindly provided by the Protohaus makerspace. The designs can and are intended to be used with other robot types as well, though. To do so, changes to the electric interface and the adapter plate between the robot and tool changer are to be made according to the specs of your specific robot.
Supplies
Tools:
- 3D Printer (alternatively you can send the files to an online 3D printing service)
- soldering iron and soldering equipment
- Allen keys
- cable stripper or a knife
- wire cutter
- hammer
Electronics:
- 1x Arduino Uno
- 3x relay assembly (equal to MAKERFACTORY Relay Module MF-6402384)
- 2x LM2596 DCDC Stepdown
- 1x low profile servo motor (e.g. SAVÖX SV-1254MG)
- 1x inductive proximity sensor (the Prusa Research M.I.N.D.A-probe is rather small, so this one is recommended)
- 1 m of shielded 12pole cable suitable for drag chains (this cable connects the tool changer to the electronics box, be sure to have enough slack here so your robot can move freely)
- 0,5 m of shielded 8pole cable connected to an M12 plug, A-coded to connect the electronics box to the X41 interface socket of the robot (e.g. Phoenix Contact 1522817)
- cables in various colors to solder electrical connections between all the parts (0,50 mm² recommended)
- heat shrink tubing in various sizes
- 3x resistors (1x 33 Ohm (R1) and 1x 6.8 Ohm (R2) for the voltage divider, 1x 470 Ohm as a pullup resistor)
Hardware:
- 12x 8 mm ball bearing balls (8 for the robot mounted tool changer, 4 for each tool)
- 9x DIN EN ISO 4762 - M3 x 8 - cylindrical head cap screws (additional 4 for each tool that is supposed to use electrical connections)
- 8x DIN EN ISO 4762 - M3 x 30 - cylindrical head cap screw
- 2x DIN EN ISO 4762 - M4 x 25 - cylindrical head cap screw
- 8x ISO 4032 - M3 - 10 - hexagonal nut
- 7x ISO 10642 - M5 x 10 - countersunk head screw
- 2x ISO 8743 - 5 x 30 - parallel pin
- 6x ISO 8743 - 4 x 10 - parallel pin
- 1x ISO 8743 - 5 x 12 - parallel pin
- 32x mainboard bolts (M3 x 8 mm length)
- 12x DIN EN ISO 4762 - M3 x 10 - cylindrical head cap screw
- 20x DIN EN ISO 4762 - M3 x 5 - cylindrical head cap screw
- 1x LAPP Skintop PG9
- 1x LAPP Skintop PG11
Print All the Files
To build the tool changer, you first need to print all the parts provided on the github repo linked above.
I printed the parts on a Prusa MK3S with PETG filament. Layer height should be 0.2 mm or smaller, we used 0.15 mm. Of course, printing with more infill and thicker walls etc. will create a more resilient coupling.
Enable support material where necessary, you probably know your printer better than I do. Most parts should be fine without it, apart from the middle part of the master Side-part. Don't use support material on the upper part, since it will create very rough surfaces in the tunnels for the ball bearing balls.
Inspect the parts and especially the threads on the electronics box, since they are needed in the next step.
Add the Hardware to the Electronics Box
Add the bolts and the LAPP cable tunnels to the 3D printed box for the electronics. Assembly should be self explanatory, look at the picture above or the CAD to see where everything goes. Don't forget the bolts used on top of the case that are not shown in the picture!
Add the Electronics to the Prepared Electronics Box
Again, rather self explanatory.
The microcontroller, relays and step downs should be screwed in using M3 screws and washers.
Be careful not to break off anything from the PCBs and check for any unwanted contact. A great tip is to 3D print your own washers from plastic if you don't have any fitting ones since they won't shorten any pins.
Take the 12pole cable and strip about 20 cm of the outer isolation layer. Push the wire through the cable PG11 cable tunnel as shown in the picture.
Get an Overview of the Electronic Layout
The circuit diagram shows the connections between the robot, the tool changer and the Arduino. It should help to gain an overview about the general wiring of the system.
Basically we have
- an Arduino Uno as a translator between the robot and the tool changer
- a servo motor to mount and dismount the tools
- a sensor to check whether a tool is mounted (or has lost mechanical contact to the robot during a process)
- connected to a pullup resistor (R3) so signals are clear
- a voltage divider to lower the signal voltage from the robot, so it won't fry the Arduino
- the resistors R1 and R2 are used here
- a relay to confirm a tool change to the robot
- a relay to stop the robot in case of a catastrophic failure ("emergency stop", i.e. in case the tool has fallen off or didn't connect successfully to the robot)
- a relay that disconnects the power from the tool if no tool is mounted or if the tool connected does not need power to protect the robots electronics
The Arduino, proximity sensor and servo need lower voltages than the robot provides. Hence two step down converters lower the voltages to 5 V DC and 7.4 V DC. Moreover, three signals from the robot and three signals from the Arduino are connected to pogo pins mounted on the tool changer. These lanes are used to allow communication between the tool and the robot, i.e. sending a command to close a gripper during a program.
We'll start by connecting all the wires between the tool changer and the electronics box in the next step.
Wire Up the Tool Changer Side of the Electronics Box
To get started, I collected all the wires and their according connections in the following table. (originally I had a nice table in html here - had to edit it to be plain text)
Arduino pin - part - wire number
10 - Servo PWM - 1
X - 7.4 volts for the servo - 2
X - KUKA DI 3 - 3
X - KUKA DI 4 - 4
A3 - proximity sensor signal - 5
A5 - tool Arduino signal 1 - 6
A4 - tool Arduino signal 2 - 7
X - KUKA DO 8 - 8
X - 5 volts for the sensor - 9
7 - 24 V DC relay for power on the tool - 10
GND pin - common ground - 11
11 - tool Arduino signal 3 - PE
3 - "confirm" signal - X
4 - "emergency halt" signal - X
I started the process by soldering all the ground wires in place. Use the connector strips to connect wires to the Arduino and relay pins. This keeps the heat away from the assemblies and makes future changes to the wiring a lot easier. Use shrink wire on all the connections and use a multimeter to make sure there are connections where you want them and disconnections where you need them. Wire the other parts according to the table and use cable ties to do some cable management when you're finished. Don't forget to solder the pullup resistor between the respective pins. I used heat shrink tubing to cover the resistor and keep it from unwanted connections.
As you can see in the picture, the wiring is a bit messy. When I designed the box I prioritized a small overall footprint over fancy, accessible wiring. This will be improved in a future version. Maybe even with a PCB shield on top of the Arduino to mount the resistors directly.
Wire Up the Robot Side of the Electronics Box
Again, same story.
The M12 cable will be connected to the robot. Strip the outer layer of the isolation and push the cable through the smaller LAPP cable tunnel on the side. Solder the connections according to the circuit schematics provided and the wiring specified in the datasheet of the robot.
Assemble the Printed Parts of the Tool Changer Itself
Since the electronics box is now finished, we can start working on the actual tool changer:
Insert the 4x10 mm parallel pins into the holes of the upper master Side of the tool changer as shown in the picture. Use a hammer if necessary. Make sure they sit tight, since they will be the primary contact surfaces between robot and tool.
For the next step, put the servo into its spot in the middle master Side piece. Be careful with the wires as you shove it in. It should be a tight fit though it shouldn't pinch the servo constantly. Use the screws provided with the servo and secure it in the 3D printed part. Insert the two 5 x 30 parallel pins into the piece and connect the middle and upper piece to one another.
Assemble the pins in the small 3D printed carrier as shown in the picture. Although this should be an interference fit, you can use a drop of super glue to secure it in place. Be sure to be quick at soldering in the next step though since the glue will loose its strength due to the heat.
Wire Up the Tool Changer
Since all the parts are preassembled, we can make the remaining electrical connections now. Use the aforementioned table to be sure which wires to connect. Use a wire cutter to cut the pre-fabricated connections and use shrinkable tubing to cover the soldering joints every time.
To create a common ground between the servo, the sensor and the power connector, the ground pins of the 24 V DC socket of the tool changer can be used. You can solder the three wires directly to the pins or use crimp-on DuPont sockets as an adapter piece. I used the latter method and then put a bit of solder on the connection to make sure everything is tight. To create a common ground, we need to connect the three pins with a piece of wire as you can see in the picture. Be sure to put the wires through the corresponding holes in the upper part of the master side of the tool changer. Solder the positive wire of the power connector to the other three pins and connect them with another piece of wire. Check the connections again with a multimeter and cover them with shrinkable tubing afterwards. By using three pins per pole, the electrical load is distributed between them, resulting in a safer use. Repeat these steps for the other pin connector that is used for the I/O of the tool, but wire all six wires individually this time.
Push the pin carriers into their respective places and screw them into place using M3 x 8 screws. Use the same screws to attach the proximity sensor to the tool changer. I used the lighter shown in the picture to make a first adjustment to the sensor. Its position can be changed later if you can't get a correct signal from it when mounting a tool.
Mount the Tool Changer to the Robot
Firstly gather the adapter piece between the robot and the tool changer and the M3 nuts. Push the nuts into the hexagonal holes in the 3D printed part. Then mount it to the wrist mount of the robot by pushing in the parallel pin and using the countersunk head screws to fix both pieces together.
Insert the ball bearing balls into the upper master side piece. Make sure the tolerances are tight, but won't stop the balls from moving. Also, make sure the balls don't fall out if you turn the tool changer. Mount the servo attachment to the corresponding axis of the servo and put the polygon wheel on top of it. Secure everything with a M3 x 8 screw. Next step: mount the preassembled tool changer to the adapter piece by putting in and fastening the M3 x 30 screws.
The electronics box will be mounted to the element of the robot between axis 4 and 5. Use M4 x 25 cylindrical head cap screws for the central mounting holes of the box.
Assemble a Tool
Since the tool changer itself is now assembled we need a tool to mount.
The process is rather straight forward. You need to push the steel balls into the holes in the 3D printed part. You can use a vise and a wooden dowel pin if the fit is very tight.
To mount your tools to the 3D printed part, use the CAD model and put holes into the part according to the hole pattern of your end effector.
Upload the Firmware
Flashing the software to the Arduino follows the same procedure as every other Arduino sketch. If you don't use VS Code and platform.io, you need to download the Servo library yourself.
Other than that, certain values may need to be adjusted:
- lock angle: according to the way you've mounted the polygon wheel and by extend the servo attachment, you may need to adjust the angle originally provided here. The arrow relieved in the wheel should point to the center arrow of the hub in the upper master side part.
- unlock angle: again, change the value so that the arrow points to the second arrow on the hub. The wheel turns 22.5° between the locked and unlocked position.
- sensor threshold: the sensor will output an integer value that will be compared to a threshold that is provided in the variable declaration of the program. If the measured value is above the threshold, the tool changer will register it as a tool. To adjust the threshold, mount a tool to the tool changer and check the value. Then check the value after dismounting to ensure the lack of a tool is detected as well.
- values for the servo library: if a different servo is used, you may have to change the range for the PWM signal. The values are specific to your servo and should be provided on its datasheet.
Of course, if you didn't use the pin numbers suggested in this Instructable, you need to change these as well.
The only thing needed to utilize the tool changer now is to implement it into the robot program. For KRL using the OUT function to initialize a tool change is an easy way to implement the command. An emergency halt can be produced by using the INTERRUPT function
Hello World!
And that's it! Your tool changer should now be ready to be used in your automation projects!