diy CNC Router DIY-ers ultimate dream


  1. Introduction
  2. Goals
  3. GRBL – the brain
  4. Stepper Motors
  5. Power-Supply
  6. Linear Guide System
  7. Results
  8. Lessons Learned
Approved by teddy – everyone was hyped about cnc router, even kids

I’m a hobbyist and making things is always my passion. Like many DIYers, my checklist also contained the amazing machine called, CNC Router, that can take commands from a pc and execute it with either a laser, or a wood router. Imagine minion cnc army making things for you, evil laugh. Think of it as kind of a printer. I’ll go for the wood router only, since laser can be dangerous and I have young kids who touch things first and ask later.

Before we proceed further with diy CNC Router, let me throw a disclaimer, that this is not a step by step tutorial, but an inbetweener, i.e. experience and research that is gathered in past 2 years while drooling for a cnc … I’m in no way I’m an expert on the topic and the beauty of a CNC is, it can be in many shapes size and for multiple purposes.

What is it than?

You may be wondering , why another build log for a cnc router. Isn’t their enough already on internet? 

In my research, I noticed a pattern, I have seen many youtubers making a CNC out of dvd roms, plywood, heck with a broomstick. So this is established that it can be made easily with number of available things.

Goal here was to make a sturdy machine, using very common parts (tutorials making a cheap machine from thousands of dollar equipment is irony at its best). Following are the two extremes, that are not followed:

Extreme 1: Don’t be ultra cheap and make a useless machine

Youtube is filled with tutorial videos making cheap machines, using fragile and impractical parts like drawer slides (which is not good with dust collecting on it ). This led to an observation, that all those cheapo-CNC channels rarely use their own creation in later videos. So that might be a proof of concept with no/minor real world value.

Extreme 2: Nor be a snob and perfectionist

This lot can be found in forums, the ultra perfectionists with golden ears/eyes and what not. Unless you are working on a project to be sent to mars, a hobbyist may not feel the difference between 0.000001 and 0.0000001 mm (strictly for wood working, not metal milling) . As a hobbyist I dont need 0.00-gazillion millimeter perfection.

My goals for this hobbyist grade CNC are:

  1. Occasional pcb milling
  2. Occasional 3d carving
  3. 2d cutting of complex / accurate parts

GRBL – the brain

All thanks to Arduino platform, upon which good fellows developed the GRBL project, which brings joy of making a diy CNC. Its quite easy and there are tons of good tutorials on youtube. GRBL would be the natural selection for this project, due to ease and availability.

Arduino CNC Shield – the muscle

While GRBL is the mind of the project, an arduino CNC shield (famous) is the muscle, where all the action happens. (shield is a board that plugs in above arduino ) Although you can diy it too, but lets just say, this is enough diy for one project ;). In this shield you can plug DRV8825 stepper motor drivers (PURPLE COLOR) or the lesser current ones A4988. Would recommend the purple ones. They often come in pack.

Most famous shield in “UNO CNC SHIELD Version 3” << STAY CLEAR OF VERSION 3.0, but got for latest version OR another shield with better filtering circuits built-in.

Arduino CNC Shield version 3 issues:

Z Axis Limit Switch Pin Change: CNC shield version 3 is an older version (for GRBL 0.8 or earlier), the latest version 1.1 has some pin number changes, since the author made the files freely available for V3 only and not later, you can guess why vendors in china didn’t cloned it 😛

Poor shielding: CNC environment is very noisy electronically, with 24-36 volt stepper wires working on high frequency, they act like an antenna and cause issues with all arduino side switches and buttons wires. Even shielded wires wont resolve issues for me. Till I added a 0.1uf (ceramic 104 written on it) from arduino pins to ground. After that all switches worked reliably and no more false alarms.

arduino uno cnc shield noise filtering false alarm
Ideally use NORMALLY CLOSED limit switches

Grbl by default uses internal resistors to make switch float at +5 volt, which when pressed, connect to ground, therefore triggering alarm. Theory looks all good, but in real world, despite using a shielded wire, I got false alarms. This can ruin your long task, if happens in between, not because the machine touched its limits, but some noise triggered it. You can use ferrite bead to try to clear some noise, but its still possible to false trigger. Solution (from grbl wiki and forum post) to deal with this is actually simple but requires further effort and modification. You can use
Ground line > 0.01uf capacitor > Input line > 4.7K ohm resistor > +5V. For me just adding a capacitor worked.

grbl cnc false alarm issue capacitors filtering

There are shields available online, that are offering all these solutions built-in, so you dont have to bang your head, when things start to act spooky. After my experience, would recommend either to buy those or make one yourself.

Micro-stepping and its effects

In Microstepping, stepper motor can move in smaller steps than normally possible, all the thanks to electronics, and clever thinking. Although this can increase the theoretical resolution of a machine and reduce the vibration of stepper motor, there is some famous wisdom that it reduces torque. Since we wont be going for metals, its a waste to aim for so high accuracy when the wood we are working on itself can expand and contract much with seasons.

GOOD or NO-GOOD: Good, would love to improve by making circuit myself in future.

2. Stepper Motors

Q: Can I use nema17, for my purposes, or have to go for expensive nema23?

There are tons of opinions on this, some suggest to go for nema23 size steppers, while other say nema17 can work ok.

Whom do we believe?
What I understood in all this noise is that, its a compromise on speed. Faster speeds needs bigger steppers, you can do the same with slower speeds but much longer time. From experience, as you start CNCing, you do want faster speeds for your dream projects

As my first step in diy CNC world, I will start with nema17, than perhaps after much experience, upgrade to higher power.

Following are the old stepper motors from Electronics Market Saddar Bazar Karachi used in this project, with fairly common specs. Heres that shops Bcard. (no affiliation with them, its just hard to find used steppers here)

Nema17- hybrid
2.1 Volt
1.8° (200 steps/revolution)
with gear head (removed the gear to fit in diy coupler)
Holding torque assumed around 0.45- 0.48 Nm
Inductance 5.7 mH approx.
Rotor inertia: 0.08 kg-cm2
Detent torque: 0.0147 Nm (150 g-cm)
Since exact datasheet was not available, apart from volt amp and angle, other things are approxed from company datasheets of similar values

Japan Servo Co kh4jm2b1400
These specs are hunted from web, make sure to double check them, this is only to give an estimate.
Series: Nema17
Type: Standart
Coil Type: 2-Phase Hybrid
Supply Voltage: 12-36VDC
Rated Current: 1.2A
Holding Torque: 314mN/m (44oz/in)
Detent Torque: 14.7mN/m (2.1oz/in)
Rotor Interia: 56g/cm2 (0.3oz/in2)
Steps per Revolution: 200
Step Angle: 1.8°
Diameter – Body: Square 1.65″ (42.00mm)
Lenght – Body: 1.685″ (42.8mm)
Diameter – Shaft: 0.196″ (5.00mm)
Length – Shaft: 0.5″ (12.70mm)

Some good details and FAQs about stepper motors for newbies are compiled on this thread.

DIY Stepper shaft and lead screw coupler

Used piece of gas pipe as coupler between stepper shaft and lead screw. Used pipe clips to tighten the pipe.

This is a thick and stiff pipe and worked OK, with one issue, a tiny miss alignment can introduce vibration, which results in jagged lines/cuts, especially in diagonal movement. This was made much better with fine tuning the motor and threaded rod alignment.

diy-wood-cnc-diy-motor coupler with gas pipe cnc by choudry arif saeed

The ultimate goal would be to update it with proper coupler, but hey, I made it with not special parts. 🙂

TOP: result before alignment,
BOTTOM: After alignment

Power Supply

Each stepper motor is rated around 1.8 Amps current, so a total of 4 motors would take 7.2 Amps in theory. There are 2 options for power supply for CNC:

  1. Transformer based: Simple, rugged, can you can make it yourself, takes abuse, and absorb return current but bulky
  2. Switch Mode power supply (SMPS): light, complex, you have to buy premade, some smps don’t like return energy if/when steppers decelerate quickly, it can make smps panic and trip.

Had a transformer with 25+25+12 Volt winding spare from past project, so used it to get 36 volt rectified DC (voltage increases time 1.4ish when rectified), but under load, my voltages came down to original specification of 25 volts.

RESULT: Current with ac current meter, the whole system in use was taking 0.15 Amps continuous current with 3 motors in action.
0.15 Amps x 220 volts mains = 33 watts
so at 36 volts, the current required by 3 motors is around 1 amp. much lower than expected right? surprised me too. 🙂

Later it was discovered with 775 motor (as spindle) attached, that most of current was consumer at peaks and when spindle is running, I can see the led work area light dimming. My plan to tackle this with more capacitors in power supply to deal with peaks, that worked well for me. Given option to buy new one, I would aim for higher current transformer.

Linear Guide System with water pipes

For the frame, I will be using MDF board, since i can cut it easier that alternate, iron or aluminum. MDF can also have lamination, which will protect it from weather.

These are water pipes made up of rust free galvanized metal and can be very smooth when sanded down.

This way is not widely famous linear guide system in DIY CNC Routers, but for me it was readily available, as well as cheap (around $5 for pipe). Although this diy cnc router size is not that big, but it is future proof. All one have to do for larger setup is longer pipe and frame.

Two 2×2 pine wood pieces stacked with space for holding pipe – holes are made with Jigsaw
Cutting metal water pipes with hacksaw

This Pipe Rail Guide System can be updated, with just replacing the wood frame and pipe to larger size, therefore its a bit future proof.

Testing the bearing setup on mdf base

Result: Gave a little heart ache during alignments, would try to go for this (image below) style of guides, again using pipes, but a little different approach. It will also give more contact area between bearing and pipe instead of edges making contact currently.

2b. Bearings

Bearings used here are 6300-3rs sealed general purpose bearings found in hardware shops for around PKR 60 ish. NOTICE the round edges of bearing, that makes sliding possible, otherwise sharp edge will carve the pipe under weight.

Used some 3″ bolts (10ish mmt hick) and nuts to tighten and as spacer. Bolts have also an upper hand in terms of rigidity over screwing. Since this is going to be moved a shaken a lot during the process of routing.

3a. Threaded Rod

The cheapest option was using threaded rods. It just $2 for a 10ft piece. Screw also has benefit of increasing power, at the expanse of reduced speed. Finer threads = more torque (less speed). M8 was first choice. Later changed to 10mm threaded rods for stronger threads. Whole setup moves with quite a force. For People living in Karachi Pakistan, it can be found in hardware marked near Indus Chowrangi

Internet is filled with this, here I made an excel sheet, while calculating. Just put values in grey boxes to get results. Click here to download excel sheet

calculating stepper steps per inch excel formula

3b. DIY Anti Backlash Nut

Backlash is the small space between a nut and bolt thread to avoid jamming in normal usage. In cnc that space can be a problem, because you will loose some steps needed to compensate for minor gap before contact. This is usually tackled by using a special nut called anti backlash nut, having a spring between two nuts, to force remove the gap.

Since the scope of this build was to DIY (do it yourself) as much as possible, with commonly available items. I tried making a hole in wood block and adding nut on both sides, this arrangement removed the backlash and cheapest simple solution.

The block was than screwed with the rest of body.

DIY antibacklash nut with wood and 2 nuts, glued on each side of wood

Bearing Holder

This was due to my shortcoming in accuracy and planning, sometime holes were getting bigger than desired sizes when cut with hole saw. Now in this way, I can snug fit them. It will also give the ability to fine tune alignment, without disturbing the main body.

diy-wood-cnc-bearing_holder (2)
Some matches are made in heaven, others you have to cut yourself
diy-wood-cnc-bearing_holder (2)

Racking of y axis

I feared this and it happened. Imagine the axis shaped as H, racking is slight play when force is exerted from a side, i.e. both side wont move right away.

There are 2 solutions,:

1 – Either use moving base design with leadscrew in center i.e. force is applied from center.

2 – Use a stepper motor on each side of y axis, where second stepper is mirror and follows first. (Arduino CNC shield has place for 4 stepper drivers for such purposes )

Before making any decision, it was decided to test the results with a pencil attached to axis and draw a line on paper. Visually it looked pretty fine, so will add second stepper if need arises in future. EDIT: better sooner than later, and after some effort, added second stepper + threaded rod on Y axis. Now there is no racking issue, since both sides are supported.

Lines drawn to check racking effect practically

People don’t want drill, they want hole

if When I’ll make my workshop, buying a drill press would be my number 1 priority. Drilling straight with hand is not always error free and cnc requires most accuracy. Even a 1 mm wrong angle can cause much headache in later stages.

holes for z axis pipes as rail
hole for nema 17 stepper center part to fit right


Among most important things in a diy CNC Router, one is the spindle. You can start with simplest and easily found DC Motor called 775 motor, which comes in several power ratings. The one available in the inventory is 60watt 4500rpm. In my case I am using the same supply of 36V to run spindle.

Dc motor 775 spindle – 4500 rpm – 2 button on right for turning on spindle and lights attached at bottom

Due to covid pandemic I cannot import parts from aliexpress and had to settle with for a ER11 collect with 6mm hole instead of 5mm hole (5mm is the diameter of motor shaft). Well that was a mistake and desperation, but ended up learning about shimming :D. Used an iron thin strip, rotated it with help of nose plier and made a cylinder to fill the 1 mm gap between motor shaft and ER11 collet.


All those who make cnc with mdf recommend to paint it, to increase weather resistance, especially its sensitivity to humidity. MDF can absorb moisture causing bloat and weakness. Pat on the back for me for choosing laminated MDF 🙂

the remaining exposed parts were painted. To seal the exposed mdf, I pored super glue, it sealed the mdf. Which was later sanded and painted.

⚠️ super glue reacts with mdf and fumes are created, during this whole exercise, use common sense. Always work in well ventilated + bright area. Wear protective glasses and dust mask.

For this project, dark brown color was choosen.


Results and practice

Before diving in routing wood, plan was to get comfortable with CNC, and process. For testing purposes, attached a ball point and drew drawings. Here are some initial results. While learning and adjusting settings, both in software and hardware

for personal test from:

Hippo artwork from here, modified it as per my taste. Dxf and .nc to be opened in gcode sender can be downloaded here

Although at some places it left the copper, which was manually removed with knife. Overall it saved my messing with Photosensitive sheet and FerricChloride for etching

Lessons Learned

I’m am very proud to make this diy cnc router, with items commonly available in Karachi Pakistan. It pushed me to learn new things and opened a whole new world of CNC in front of me.

Due to Covid pandemic and time constraint, I was unable to source some parts directly from aliexpress for the sake of sanity.

No regrets, but future self notes for improvement.

  1. Further more improved the accuracy and sturdiness of setup. This diy cnc router is great for engraving or lighter tasks, but once you make diy a cnc router you always want it to be more accurate and faster
  2. Z-height was a bit more than ideal, resulting in some play near spindle.
  3. for linear rail, try to use 120° roller bearing setup, so that 2 bearing have more flat surface in contact with pipe.
  4. Electronics is too close to axis, and would be need more effort to open it, if any need arises. so perhaps electronics away or easily detachable area.