Budget 2-Axis CNC Build
Hi, in this instructable I will go over how to create a 2-Axis CNC machine. This particular design utilizes parts which can be purchased at local hardware stores, reducing the price greatly. It also uses 3d printed parts which allow for customization and reduces the price even more. This design reduces the price of a typical 2-Axis laser cutter by approximately $100-$200 while maintaining similar quality.
Supplies
Here are the supplies needed with costs relative to the amount used
- One roll of filament ($20)
- One 5/16 in x 36 in Threaded Rod ($4.36 from Home Depot)
- One 5/16 in x 72 in Round Rod ($14.93 from Home Depot)
- Fifteen 8x22x7 Bearings ($4.14 adjusted from a $13.79 50-pack on Amazon)
- Three Stepper Motor Couplings ($5.40 adjusted from an $8.99 5-pack on amazon)
- 16 in x 13.5 in wood board (Left over from IKEA furniture)
Screws, Nuts, and Bolts (~$5, Screws, nuts, and bolts were used from various screw kits already on hand)
- Sixteen #5 x 5/8 in wood screws
- Six 5/16-18 Hex Nuts
- Ten M3x20 Machine Screws
- Eight M3x16 Machine Screws
Electronics
- Arduino GRBL CNC kit - Includes End-stops, Cables, Arduino Uno, Stepper Motor Drivers, and Jumper Caps. ($20.99 by Keeyees on Amazon)
- Three Nema 17 Stepper Motors ($24.99 on Amazon)
- 5 amp 12 Volt power supply ($10.99 on Amazon)
Optional - I used a laser module for this build since I had one from a 2-in-one 3018 CNC, however, this CNC could be used with a drag knife or pen or make a cutter or a pen plotter respectively.
- Laser Module - The CNC I purchased the laser with was ~$50 more expensive than the other 3018 CNCs so I will use $50 as the approximate price for the laser.
Total costs
- Without the laser, the machine comes out to ~$110.80, adding the laser increases the price to ~$160.80. This price is much lower than the other laser engravers that could be bought on Amazon at the same power by about $150 or more for most laser engravers.
Printing the Parts
I designed all the 3d printed parts in Onshape. I created the parts to have strong stability to prevent the machine from shaking or vibrating too much.
I printed the parts using 20% infill at a .25 layer height. Along with this, I used supports on the parts with overhangs.
Link to Thingiverse with STL files: 2-Axis CNC by Paragon427 - Thingiverse
Cutting the Steel Rods
I used a Dremel rotary tool to cut the steel and threaded rods. This allowed me to buy larger rods to reduce the price as I could cut them down to any size I needed. A hacksaw will also work if you do not have a Dremel or similar rotary tool on hand.
First, I took the rolled round rods and cut four 12.5-in rods and two 9.75-in rods. Next, I cut the threaded rods into two 11.5-in rods and one 10.5-in rod.
You may have to adjust the length of the rods if you use a different sized wood board or different printed parts.
Insert Bearing and Hex Nuts
Insert the 15 ball bearings and the 6 hex huts, using hot glue where needed. The bearings and hex nuts should not come loose from the printed parts.
Attach the Stepper Motor Couplings to the Motors
Use the included hex screw key to attach the motor couplings to the motors.
Insert Threaded Rods Into Steppers
Insert the three threaded rods into one stepper each. After they are inserted, tighter the hex nuts on the coupler to lock them into place.
Mount the Stepper Motors
Using four M3x20 screws attach the motor with the shortest rod to the Y-axis carriage (The tall printed piece). After, use four M3x16 each to mount the other two steppers to the Y-axis stepper mounts. Keep in mind the orientation of the stepper motor wire connectors, as a motor cable will need to be attached and routed along the machine.
Mount the Laser
Mount the laser or other module to the X-axis carriage using six M3x20 screws.
Attach Endstops
Attach the two end-stops to the end-stop pads using hot glue on the printed parts. Make sure the end-stop arm is in a position where it will trigger if a carriage comes toward it.
Assemble the X-axis
To assemble the X-Axis, you will need the two shorter round steel rods, the X-Carriage, and the two Y-Carriages. To start, screw the X-Carriage onto the Y-Carriage with the threaded rod. Do this until the X-Carriage is about halfway down the rod. Then slide the two steel rods through the bearings on the X-Carriage until they fit into the Y-Carriage. If they don't fit tightly, add some hot glue into the hole for the rods. Next, slide the other Y-Carriage onto all three rods, adding hot glue to only the round rods if they aren't tight. The threaded rod should turn easily in the bearing.
Assemble the Y-Axis
Assembling the Y-Axis is similar to the X-Axis. Take one of the Y-Axis stepper mounts and screw the threaded rod through one of the Y-Axis carriages. Repeat this process with the other Y-Axis stepper mount and the other Y-Axis carriage. Screw the threaded rod until the carriages are about halfway down the rod. Try to keep the carriages relatively even as it will lower the stress on the X-Axis while assembling. After the threaded rods are inserted, slide two of the four remaining rods through the bearings on the Y-Axis carriage. Push them until they fit into the Y-Axis stepper mount, adding hot glue if necessary to keep them snug. Repeat this process with the other Y-axis stepper mount and Y-Axis carriage. Finally, slide the Y-Axis ends to the ends of the three rods, adding hot glue to the round rods if they don't fit snugly, and allowing the threaded rods to rotate easily.
Connect the Machine to a Board
For this project, I had a spare 16" x 13.5" wood board from IKEA which I used as the base for this machine. You could use any size board but would have to adjust the rod lengths to fit your needs. To connect the machine to the base, simply line up the inner corners of the pieces on the machine with the outer corners on the board. The printed parts should fit flush against the wood. After lining it up, use sixteen #5 x 5/8 in wood screws to secure the machine to the base.
Wiring the Controller Board
For the Controller Board, I went with a kit from KeeYees, which includes several parts, however, the ones we will need will be eleven jumper caps, three stepper motor cables, two end-stop cables, and three stepper motor drivers, an Arduino, and a GRBL Arduino shield. Start by lining the Arduino shield pins up with the Arduino's female headers and connect the two. Next, to enable micro-stepping, insert three jumper caps in the middle of where the X stepper driver would be. Repeat this with the Y and A stepper driver spots. To make the A axis duplicate the Y axis, on the side of the board near the power connections, insert two jumpers in the section labeled "Y". This makes the two steppers that move the Y axis operate in unison. Next, take the three stepper motor drivers and insert them into the "Y", "X", and "A" sections on the board, lining the "EN" pin on the driver with the "EN" on the board. Next, take the two end-stop cables and plug the first one into the "Y+" making near the edge of the board. Plug the red wire into the white header and the black wire into the black section. Leave the green wire unconnected. Repeat this with the other cable and the "X+" header. Finally, take the three stepper cables and connect them to the headers next to the three stepper drivers we used. the direction of the cable will change the direction the stepper motor spins but this can be easily changed later in software or by reversing the cable. For now, plug them all in the same direction.
Optional - Connect Laser to Board
Whether you are using a spindle, laser, or another PWM-controlled device, you will need to connect it to the board. You can do this by connecting the PWM wire to the Z+ endstop header on the board.
Plug in the Motors
Connect the wires from the control board to the three motors and the two endstops. The A and Y axis motor cables will connect to the two Y-Axis motors and the X-Axis motor cable will connect to the X-Axis motor. Next, connect the Y+ endstop cable to the endstop on the Y-Axis. Finally, attach the X+ endstop cable to the endstop on the X-Axis.
Connect the Board to a Computer
Use the USB type B cable to plug the Arduino into a computer.
Installing Grbl
To control the motors on the machine, we will need to give our arduino code to follow. Start by going to this link to download grbl: grbl link. Download it as a zip and extract the files. Next, utilizing the arduino ide, navigate to File > Examples > grbl > grblUpload. This will open a new sketch which will need to be uploaded to the arduino.
Installing UGS
Now that the arduino has the code to control the machine, we need software to be able to communicate with the arduino. For this project, I used UGS or Universal G-code Sender. You can download it here.
Connecting the Machine to UGS
After completing any following installation steps, you should reach this screen. This is the main screen for UGS. From here you will want to press plug shaped icon in the top left. This will connect the software the the machine. You may need to change the comm port if it does not connect properly. You can do this by clicking on the drop down box near the top left and selecting a different comm port. Along with this, make sure the firmware is set to GRBL and the baud is set to 115200.
Setup Wizard
After connecting the machine to UGS, run set-up wizard by pressing "Machine" in the top left, then scrolling down to "Setup Wizard". This will allow you to change the settings of the machine easily in case your settings need to be different than mine. The settings I used are in the photos. Depending on the threaded rods used, you may need to change the step size. You can do this by following the instructions in the setup wizard which has you measure the actual distance traveled against the distance it should have traveled.
Adding G-Code
After confirming that all the setting are accurate and possibly adjusting a few parts (I had to move an endstop slightly), you can test the machine with a g-code file. I created a very basic square g-code file to give the machine a small test to ensure it worked properly. You can do this by downloading the provided file then pressing "File" in UGS then "Open" and selecting the new file. Finally press the play icon in the top left and watch the machine work!
Downloads
Using the Machine!
After the initial test g-code works, next, i wanted to find a program to create designs for the laser and send the g codes to it. I settled on using Easel as it seemed the simplest and easiest to understand for me, however there are other options such you could use. The only issue with Easel was that it was designed for 3-Axis machines, however, this could be fixed by following this tutorial by inventables: link.
Summary
Overall, the machine performs very well, especially for the price, and was a relatively simple build. Along with this, the customizability of the machine allows it to cater to anyone's needs. The 3d printed parts can be easily adjusted allowing simple and cheap modifications along with the size of the machine being easily upgradable. Along with this, the electronics make up the majority of the cost, meaning size upgrades do not increase the cost as drastically.