Aluminum Extrusion 3D Printed Gantry
by OliShor in Circuits > Arduino
910 Views, 8 Favorites, 0 Comments
Aluminum Extrusion 3D Printed Gantry
Hello! My name is Oli, and I'm excited to share with you my gantry project. This build was inspired by my passion for 3D printing, and I wanted to create something that not only fuels this interest but also serves as a versatile solution for various projects.
Throughout the development process, I've envisioned multiple applications for this gantry system:
- Drawing Machine: Pen is attached to the middle and is used to draw based on some code.
- Laptop Cleaner: A device that moves across a laptop screen to wash and dry it.
- Claw Machine: A fun, interactive project that demonstrates the gantry's precision.
- Modular Storage Solution: Collaborating with a friend, we're exploring how the gantry could optimize storage by relocating objects and eliminating the need for access pathways.
- Industrial Applications: Although these are not feasible with the scale of my gantry it is easy to see the use for a gantry and mine could be used in scale models.
For this project, I've utilized 5V motors to drive the gantry. While these were chosen primarily based on availability, I recommend experimenting with higher-power motors if speed is a critical factor for your specific application.
Join me as we explore the possibilities of this versatile gantry system!
Downloads
Supplies
- 5 segments of 500mm long 20x20mm aluminum extrusion
- Link here
- 2050mm of timing belt
- Link here
- 9 POM Wheels
- Link here
- Arduino UNO
- Link here
- 4 28BYJ-48 5V stepper motors
- Link here
- 4 ULN 2003 Motor drivers
- Link here
- 25 Male to Female cables
- Link here
- 4 internal corner brackets
- Including 2 pins for each
- Link here
- 9 M5xmmx30mm screws
- Link here
- 9 M5 nuts
- Link here
- 12 M4x20mm screws
- Link here
- 10 M4 nuts
- Link here
- 6 M4 threaded inserts
- Link here
- 18 spacers
- Link here
- 3 GT2 Timing Belt Pulleys.
- 20 Teeth 8mm Bore Aluminum Synchronous Wheel
- Link here
3D Print the Casings
Print out the following 3mf's. The side casings will be used for the y axis motion. There are two of each part because there will be one on each side of the gantry. The middle casing is a little bit different, and it is used for the x axis of the movement. I used 0.16mm layer height. I would not recommend going much higher as I used 0.24 and some of the parts don't fit tougher. The side casing file requires a bit of support as it is standing up. I recommend tree support for this.
Assemble the Frame
Use four of the 50mm long 20x20 aluminum extrusion to create a square. Join the corners using the internal corner brackets and tighten the pins into the extrusion so that they will not fall lose.
Prep the Side Pieces
Place in M5 screw coming out from the two bigger holes in the middle of the one piece of side casing that was printed earlier. Add 3 spacers and a nut at the end and tighten it down. Do this for both of the side casings as well as the one for the middle casing.
Attach the First Side Casings
Use the 3D printed parts from earlier for this step. From the 3mf labeled side casings you will make one of the two parts. Place the peice of the casing with the outline of the extrusion up agents the inside of the frame from earlier. Take one of the pieces that has just holes in the side and place it on the other side of the excursion so that they are clamping around it. Place 3 wheels between the two pieces of plastic lined up with the holes shown above. Use the M5 screws in order to tighten the casings so that they stay on the extrusion and hold the wheels in place. Use a bolt on the other side to fasten the screw.
Attach the Second Side Casing
Attach the second side casing in the exact same way as the first side casing. Ensure that they are a mirror image of each other. Before tightening down the casing, place the last bit of excursion in the hole that it fits in on the first casing and then in on the second casing before screwing it in.
Attach the Middle Casing
In a similar fashion, that the two side casings were attached attach the parts from the middle casing 3mf. Attach it to the middle bar that you added in in the last step. Ensure to include all 3 wheels and tighten down the screws with bolts. The orientation of this part does not matter at this moment.
Attach All 4 Motors
I used the holes in the side of the casings to attach the motor. I used M4x20mm screws through the holes and screwed them with a threaded insert. Make sure that the wires are pointing upwards. I attached a MXL Series Corrosion-Resistant Timing Belt Pulley with one flange to each motor.
Assemble Electrical for All Moters
Use the following electrical diagram to use your Arduino and motors to integrate everything to one single joystick. The two motors for the side casings can be put on in whichever order but the one for the middle casings must be in the specified pins. Note: If you are just looking at the image, make sure to expand it to see the whole thing.
Coding for Movement
Connect your Arduino to your laptop and open the UI. Use the following code to move the gantry. It is also included in file format so you can just open it and upload it to your Arduino.
// Include the Stepper library
#include <Stepper.h>
// Define number of steps per revolution
const int stepsPerRevolution = 2048; // for 28BYJ-48 stepper motor
// Initialize steppers on the ULN2003 pins
Stepper stepper1(stepsPerRevolution, 2, 4, 3, 5); // IN1, IN3, IN2, IN4
Stepper stepper2(stepsPerRevolution, 6, 8, 7, 9); // IN1, IN3, IN2, IN4
Stepper stepper3(stepsPerRevolution, 10, 12, 11, 13); // IN1, IN3, IN2, IN4 (new motor)
// Joystick pins
const int VRx = A0;
const int VRy = A1;
// Variables for joystick values
int xValue, yValue;
int motorSpeed = 10; // Adjust this value to change motor speed
void setup() {
// Set motor speeds (RPM)
stepper1.setSpeed(motorSpeed);
stepper2.setSpeed(motorSpeed);
stepper3.setSpeed(motorSpeed);
// Initialize joystick pins as inputs
pinMode(VRx, INPUT);
pinMode(VRy, INPUT);
}
void loop() {
// Read joystick values (0-1023)
xValue = analogRead(VRx);
yValue = analogRead(VRy);
// Convert joystick values to motor steps
int xSteps = map(xValue, 0, 1023, -5, 5);
int ySteps = map(yValue, 0, 1023, -5, 5);
// Move stepper3 based on left-right joystick movement
if (abs(xSteps) > 1) {
stepper3.step(-xSteps);
}
// Move stepper1 and stepper2 in unison based on up-down joystick movement
if (abs(ySteps) > 1) {
stepper1.step(-ySteps);
stepper2.step(ySteps);
}
// Small delay to prevent the motors from stuttering
delay(5);
}
Downloads
3D Print Slots for Timing Belts
3D prints 4 of the following (there are 2 in each file so you only need to print the file two times). I printed them on default setting, and they do require a bit of support.
Downloads
Scure Timing Belts to Both Sides.
Use one M4 screw as well as a bolt on the inside of the aluminum excursion to fasten the clip to the frame. You can then adjust the tension to whatever works best. This took a lot of fiddling to get it just right. I used zip ties to ensure that the timing belt didn't slip out of place.
Platform for the Electronics
I used a 50cm x 15cm piece of spare plywood and lay it across the two edge pieces of the gantry to hold the electronics. I added in two screws on the x axis similar to how we put the timing belt in place which helped to hold up the plywood.
Customize Z Axis for Intended Use
I have put in a motor on the bottom of the middle casing. This motor is not currently hooked up however there are endless possibilities. I am planning on attaching a spool to it and using it like a claw machine. Furthermore, this is a very good scale model of a storage solution where you are able to move things around with the gantry. The new motor would be implemented in the same way however it would require a new method of input for the motion if it were not automated.