Skip to content

10. Machine design

this week is about machines, I will be designing and building a milling CNC machine, hopefully, it will be accurate enough for PCB milling.

this week project is a group one, but since I am the only student in fablab Irbid I am doing the project be myself as a challange.

Here is the lab’s page


After looking for all the CNC designs suggested in the lecture material I choose a simple lead screw mechanism to move all three axes as I am the only student in fablab Irbid and building the machine by myself.

I took the saintSmart 3018 CNC router for inspiration as it uses leadscrew for all its axes.

I used 8mm lead screw and linear guide rods, I used a block bearing for the screw and a simple aluminum mount and a linear bearing block and some 8mm rods from the lab, I ordered the parts before the design and only counted one linear rod so I was short on rods mounts and linear bearing, therefor I 3d printed some it will be a good way to compare their performance and life, I designed them exactly like the one I ordered so that I get to change them in the future if the 3d printed ones didn’t hold up.

and I was short on one 8mm rod and used an 8mm wood dowel, hope it’ll work well for the machine test till I get another one.

Since its tough to get parts here in Jordan, I wanted to make the whole frame in the lab, for now, I made the frame using MDF since its cheaper, once I make sure the design is good I can remake the frame using a more durable material like PVC or Teflon.

for the motors, I used a nema17 stepper motor, and for the controller, I used an Arduino Uno with a cnc shild.

Here is the design!

For some reason, the imported parts are not showing the embedd veiwer so here is a photo of the design till I get how to fix it.



I made the frame using Shopbot CNC, 3D printed motor mounts, the part that links the leadScrew nut with the bed for the Y axis, the part that links the leadScrew nut with the Z axis to move it in the X direction, the part that links the leadScrew nut with the dpindle for the Z axis, some spaceers, some if the linear bearing blocks and rod mounts.


Here are the 3d printed parts that connects the y axix screw with the bed along side some 3d printed spacers connecting the linear bearings with the bed.

leadScrew to bed link

here is the 3d printed parts that connects the x axix screw with the z axis assemble.

leadScrew to x axix link

here is the 3d printed z axis assemble with the spindel connected to it.

leadScrew to spindle link

Here is 3d printed linear bearings, the teeth shape holds the rod tightly but quickly matchs its shape with very littel backlash.

linear bearings

Here is 3d printed rod mounts, one broke in assemble, so they works well but should be carful while using them.

rod mounts

here is another rod mount, that goes on top of the screw bearings.

rod mounts

Here is 3d printer motor mounts.

motor mounts

the final shape, I am one rod short, a wooden dowen is in its place for now.

final assemble


I used the Arduino library for the Arduino, which takes grbl commands using serial communication.

I used GRBLcontrol software on Win10 to send grbl commands to the arduino shild.


These test are after I assembled the machine, it does not work well yet and I have to replace to wooden dowel with a metal rod.

Video 1

Video 2


click here to download the desighn files.

What to improve

  • Make the machine more stiff.
  • costum made electronics.
  • cover wires and screws.
  • paint and plasit covers for better looks.

Last update: July 10, 2021