DIY CNC Router




Our school has 8 3D printers, but plastic has its limits and we wanted to use our 3d printing knowledge to build something that would allow us to machine metals. The goal of this cnc was to mill aluminum and wood, as well as other softer materials, while being as cheap as possible. The main cost savings comes from the frame, which uses smaller extrusions doubled up as well as a lot of 3d printed parts to be as cheap as possible, while preserving rigidity.
Supplies

A list of parts and materials needed to build the machine is given in the spreadsheet given below.
https://docs.google.com/spreadsheets/d/1Vp5v9VKP_h1m_WpIEtc5Nj9Q07uJlJp_5_D6csN1AIA/edit?usp=sharing
Each part was logically chosen in consideration of various factors such as cost, strength, and precision.
- The Bauer Router was chosen as it is essentially a more cost-effective Makita RT0701C, which is a popular hobby CNC router.
- 2040 aluminium extrusions were chosen in place of 3030 extrusions to address cost considerations.
- One important feature of our CNC is that we integrate rails and ballscrews instead of rods and lead screws. Using rails and ballscrews allows for greater rigidity and precision that a CNC mill demands.
- T-nuts are used to mount components onto the extrusions.
- NEMA23 stepper motors were chosen as they are capable of greater torque and strength needed to translate heavy components on the CNC such as the Router. DM542T motor drivers are used in conjunction with the NEMA23 motors.
- The emergency stop button addresses safety concerns by providing a convenient method to immediately stop any CNC operations.
- A 36V power supply is used to accommodate the power demanded by the heavy NEMA23 motors.
- A separate Z-Axis system is bought and installed to address cost concerns, as opposed to designing and building one from scratch.
You will also need basic hand tools, soldering tools, and basic electrical tools like wire strippers and crimpers.
Printing

Print all parts with the stiffest material you have available - in our case, we used PLA for its high stiffness and low cost. However, that comes at the cost of temperature resistance, so keep that in mind in case you intend to fully seal your enclosure or use high-current motors. As for settings, use a high perimeter count (we used 6) and additionally bump up the infill (we used 30%) to provide more strength/rigidity for all structural parts.
Once the parts are done, press nuts (m5 for parts like the motor mounts, and m3ns for the pulleys) into the parts. Clean up the parts using a deburring tool or knife so that any holes are clear and brims are removed.
You need:
1 Arduino Mount
4 DM542 mounts
2 Ballscrew_extrusion_mount
2 Psumount
2 Nema 23 y mount
1 nema 23 x mount
1 spindlemount (front and back)
2 xrailmount
1 zmount
1 Chainmount_xrail
1 Chainmount_spindle
5 Chainsupport
2 rearbase
6 pulleys - 3 8mm bore, 3 10mm bore
Y-Axis



- Cut two 1000 mm extrusions to 500 mm.
- Attach the ballscrews and the linear rails using t-nuts.
- Mount the motors using the motormounts. Mount the backfeet.
- Mount the Arduino, motor drivers, and power supply onto the right y-axis.
- Add pulleys to the motor and ballscrew. Add belts onto them.
- Loosen the motor mount, tension the belt, and retighten the motor mount in order to properly tension the belt.
X Axis


- Cut two 1000 mm extrusion to 700 mm (the offcuts will not be used)
- Mount the linear rails and ballscrew, using the z-axis ballscrew mount.
- Screw in the z-axis ballscrew mount onto the linear rail carriages.
- Mount the assembly onto the y-axis, using the 3-D printed rails and ballscrew mounts.
- Add the motor mount. Screw in the motor
- Add pulleys and belts to the ballscrew and motor.
Z Axis


- Attach the spindle mount onto the z-axis.
- Mount the z-axis onto the x-axis using M6 screws.
- Mount the router onto the spindle mount.
Wiring





- Follow the wiring diagram to connect the drivers to the arduino (credit Prontoneer). Two drivers should be used for the Y axis for the 2 motors, but for simplicity they are wired together into the arduino.
- Then wire the motors, taking care to match each driver to each motor (it can help to label them).
- Make sure to motor route all wires through the cable chains.
- Then connect the power lines to the PSU by daisy chaining all the drivers together (or use WAGOs if you want to be fancy)
- Depending on the specification of the driver and motor, set the switches on the side/top to set microstepping and current. A picture of our DM542 spec is above.
Flashing GRBL
- Use this GitHub repository link to download the .zip file for the GRBL firmware: https://github.com/grbl/grbl
- Open the grbl .zip, navigate to a folder called "grbl," and extract the folder.
- In the arduino ide, navigate to sketch>include library> add .ZIP library
- Navigate to the grbl folder and click ok.
- Navigate to file > example > grbl > grblupload.
- A new sketch will open with instructions on how to flash GRBL to your board.
Credits to “HasseB” in Instructables for these instructions to flash GRBL: https://www.instructables.com/How-to-Installuse-GRBL-With-Your-Cnc-Machine/.
Setting Up a Gcode Sender

- We used gSender from Scienci since it's actively maintained, has a clean ui, and has lots of features not found in other senders.
- Connect to the cnc with a usb-B cable and ensure all axes move correctly. If axes are reversed, go into the settings and reverse it.
Then run axis calibration:
- Go to “Tools”
- Select “Movement Tuning”
- Follow instructions on-screen to calibrate all three axes.
Bonus: Enclosure



The enclosure for this machine was built almost entirely out of scrap material - the frame was made out of pallet wood, and the drywall and acrylic were scrap. It cuts down on noise by quite a bit and contains sawdust and chips. While it isn't as quiet or as good-looking as more professional solutions, it's definitely a lot cheaper.
Machine!


Use a CAM software such as Fusion360, Openbuilds CAM, or Kiri:Moto to generate gcode for your machine. If your software requires a postprocessor look for one for GRBL machines.
Start off with a softer materal like wood - we used pallet wood since it's free - and use a cheap bit (we used one from a ten-pack on aliexpress) to understand how the machine works and learn speeds and feeds. This way, you don't risk damaging expensive wood or bits. Also, pallet wood is usually pine, which is pretty easy to machine.
You can use double sided tape or just screw your stock directly into the wasteboard.
Improvements
While the project did certainly meet the goals that it was designed to meet, there are a few improvements that are in the works.
- Automatic squaring - This will be a relatively easy feature to implement since it is already supported by GRBL and we already have two y motors and two y drivers.
- Better pulleys and belts - the printed belts work but over time deform under stress, so we will replace them with actual belts and metal pulleys.
- Better wiring management - the wiring is a little exposed, which over time would cause problems with the amount of wood chips, so we will be covering it.