I'm writing this article because of the massive frustration that I had when trying to design my own CNC machines. There is not a lot of good information out there, and what exists is scattered between forums, obscure manufacturer data and specialist articles. My hope is that after reading this, you'll have a better idea of which technology to use and why.
Where applicable, I'll be focusing on implementations using stepper motors such as the standard Nema 23 sizes, as these are the cheapest, easiest and most common solution - but obviously the same principles apply to all drive systems. That said, I will not be directly covering implementation using servos. A quick aside, my own personal preference is for closed loop steppers, which have come down in price so much recently that there is no longer any point in using open loop designs. Here is a 2.2Nm closed loop stepper on Aliexpress, usually the best source for CNC parts.
Also before we get started, I am British and trained in engineering, so although I will include imperial numbers, they will be calculated (or sometimes approximated) from metric. If you read me talking in metric and are confused, generally you'll be able to scroll down a little and see an imperial table showing all the relevant figures.
TL:DR: Use belts for wood or MDF etc, use leadscrews/ballscrews for metal.
For belts, calculate size based on run length and stretch. Don't be stingy.
For leadscrews, make sure you preload all drive side bearings and remove nut backlash.
Also be careful to consider screw critical velocity.
Try not to go on a rage fuelled rampage of destruction when things inevitably go wrong.
What are you Cutting?
The main consideration when choosing which system to use, is not about how “good” each system is, but what materials you are intending to cut, and what tolerances you will require. At the heart of it, do you want to cut softer materials like wood or MDF, or are you trying to mill metals like aluminium or steel? Each has very different cutting requirements, so lets start with basics like surface speed, spindle RPM and how this translates to linear velocity requirements - see last column below, for the actual result. For this example, we'll use 4mm and 8mm cutters with 2 and 4 flutes just to give us some useful data on the linear velocity that the cutting head will have to move along the driven axis.
|Mill End Diameter mm||Flutes||Surface Speed (meter/min)||Chip Load (mm)||Spindle RPM||Linear mm/min|
|Mill End Diameter in||Flutes||Surface Speed (feet SFM)||Chip Load (in)||Spindle RPM||Linear ft/min|
Highlighted RED are values that I have input. Values in black are calculated.
All numbers are rough and intended to get the point across, they are not recommendations! Especially with metal, the surface speed and feed per tooth can vary a lot with the type of tool used. Also note that I have used different input fields for wood or metal, because....
For wood, surface speed is irrelevant and left blank. Consider a craftsmen using carving tools - clearly there is no minimum surface speed. With wood, it's always a pure cutting action, and if this it not the case then your surface finish will suck! Even scrapers cut using the metal burr on the edge. Most people will be using a high speed spindle motor, probably a Chinese one such as this which maxes out at 24,000 RPM. You'll want to be able to actually use something close to that speed and power, so I've plugged in a reasonable 20,000 RPM.
With metals, the surface speed is useful because the cutting action needs to be fast and hard enough to causes micro-fractures in the material ahead of the cutting edge. That said, the above surface speeds should be considered minimums, faster is possible if you have the right setup (power, machine and tool stiffness, cooling) – or if you take a smaller depth of cut. In practice most metal mills top out at around 5000rpm. Anyway, for metal I have used the surface speed to calculate what we would need for RPM.
More details on chip load for wood and aluminium (in metric) can be found on this page
The takeaway from the above calculations, is that for cutting wood / MDF you want the mill end to be able to move fast enough to make best use of your spindle. For metals, you will likely want your axis to move at a considerably slower speed.
Now, that said, compare the above velocity requirements with what you might be able to achieve using a stepper motor directly driving a leadscrew or ballscrew, compared with belts. For the former, we are interested in the lead (movement forward per revolution), while with belt drive pulleys I have shown diameter, from which we calculate circumference (not shown) i.e. movement forward per turn. For a point of reference, D10mm corresponds roughly to a 16 tooth drive pulley with 2mm pitch, while D20mm is closer to 20 tooth 3mm pitch (actually closer to 21 tooth but hey, its just an example size). I've used 250rpm and 450rpm as two example values – above 450rpm you'll generally start seeing significant torque losses, although this does depend on setup. Closed loop can go faster without suffering such issues, but still, below is useful as an example.
Output values (italic) are all in mm/min:
|Leadscrew / Ballscrew||Belt Drive D|
|RPM||2mm Lead||8mm Lead||10mm||20mm|
Table 3 - mm/min linear velocity for given stepper RPM
|Leadscrew / Ballscrew||Belt Drive D|
|RPM||2mm Lead||8mm Lead||25/64"||25/32"|
Table 4 - ft/min linear velocity for given stepper RPM (note: keeping mm values for lead/ballscrew as as these are typically still sold in metric)
Realistically, we are unlikely to actually want out our 4 fluted 8mm mill end to move at 30 m/min or almost 100 ft/min (from graph 1), however a 20mm drive pulley could actually give us this speed!
Of course, as noted these figures only apply for direct drive systems, and big, powerful CNC machines driven by belts may require larger sizes with a bigger pitch, which means larger pulleys. If these larger pulleys were direct drive, it would likely result in unacceptably low linear force. In this case the stepper could be geared down relatively easily, however with screws you cannot easily increase the speed as you are severely limited by critical velocity (see below section on whip).
Lets also compare the cutting tolerances using a standard stepper motor with 210 steps/revolution. I have included ½ and ¼ microsteps, although there is some discussion about whether microstepping actually increases accuracy or just leads to smoother and quieter operation. My understanding is it is unlikely to significantly improve accuracy, so the first line is the most relevant and the only one I will discuss, but I have included microstepping data anyway for those who might disagree. Output is in mm/step for first table, and inches/step for second (ie for each step movement of the motor, how much linear movement this translates to on the axis).
This is of course again only relevant to direct drive systems, however while you could in theory gear down belts you will inevitably hit accuracy limits due to stretch. And if you gear up screws, you are again likely to have to deal with whip if your axis has any significant length. That said, it is useful to look at anyway, if only to get a general feel for the different systems.
|Leadscrew / Ballscrew||Belt Drive D|
Table 5: mm/step accuracy
|Leadscrew / Ballscrew||Belt Drive D|
Table 6: in/step accuracy
Again, as we can see a 2mm leadscrew will give us a resolution of 9.5 microns, pretty nice when milling steel but utterly useless for MDF or wood. Just pushing on the calipers will cause more compression in soft materials than this. Even if using high density woods, and ignoring material movement due to moisture content, who needs precision milled lignum vitae?! And even if we wanted to use an 8mm leadscrew, we're still seeing 38 microns, way tighter than a softer material could actually maintain. Belt tolerances are absolutely acceptable for such materials. Of course, we are ignoring the effects of belt elongation under load, which could potentially blow tolerances to unacceptable levels in a poorly designed system, or when using too aggressive tool paths. Stretch is covered in its own section below (see Stretch / Elongation)
Next, we need to consider the actual force that the different drive systems can deliver. This is more complicated for belts, and there are multiple factors to consider, but lets start by looking at pure linear force due to torque from the stepper, direct drive again. I've listed the figures in terms of mass-weight rather than newtons to make it more tangible. I'll also use our standard Nema 23 value of 2Nm for the calculations, which is of course maximum torque – drive force will decrease as speed increases. Finally I have added an estimate for force after efficiency losses in brackets (see notes below):
|Leadscrew / Ballscrew||Belt Drive D|
|2mm||8mm||10mm (25/64")||20mm (25/32")|
Table 7: Linear force produced by 2Nm stepper
- For those interested in how to do the calculations with lead screws, we can calculate work done for a full turn, and then divide that by the linear length travelled (lead).
Drive efficiencies: Belt drives suffer from negligible efficiency losses, running at around 98% efficiency (which is what I have shown), while ball screws are >90% efficient. Leadscrews however can be quiet inefficient, especially with smaller leads (due to friction per turn). This can be as low as 20%, although it will of course vary by design and circumstance (nut material, whether it is oiled or covered in oil soaked dust, how rigidly clamped it is with anti-backlash systems, etc). I have used values as taken from this page to give very rough estimates of 50% efficiency for 2mm lead, and 70% for 8mm lead, and used these values in the above table. Note also that efficiency varies with diameter of the screw, although not in a simple linear manner.
- An aside on efficiencies of various nuts, there is unfortunately very little information on the friction co-efficient for Delrin nuts (typically used in anti-backlash blocks). With metals, brass or bronze on an oiled shaft has the lowest friction co-efficient at around 0.1 to 0.16, while the extremely limited amount of manufacturing data on high quality plastic nuts tend to state friction co-efficient "as low as 0.1", sometimes claiming also that lubrication is not needed. Here is an article from a manufacturer which mentions friction, and goes into other design considerations on friction, vibration etc.
For people who are unfamiliar with the forces that a single relatively small stepper motor can produce, this can be quite surprising! I know I was surprised when I realised that a lead screw with even a 2mm lead could lift me off the ground, twice over.
The levels of force produced by screws are great if you want to mill hard metals like steel, but as we have seen many times already, completely pointless when milling softer MDF or wood. If anything it is a drawback – for instance, if your router is having to push this hard to drive forward, you have probably messed up with your tool path and are about to break a bit, or have your machine tear itself apart. Having the machine stall out at over 20Kg of force is an extra fail safe. If you are using closed loop steppers then the driver will go into error condition when position is outside of range, and can easily be made to communicate the error to your CNC controller (e.g. via the e-stop circuit).
Design and Implementation
Our final topic of consideration is how easily each technology can be implemented in a CNC build, and what unique problems you might have to deal with.
A quick aside, because there is no relevant section to say it, but belts have the additional advantage that when the motors are powered down, you can move the gantry around by hand.
Backlash on the drive nut and bearings constraining the shaft is inevitable and something that needs to be properly designed for. Anti-backlash nuts are one easy solution, with the off the shelf “block” from Openbuild being an excellent option. I did buy a few cheap Chinese anti-backlash nuts with springs on them to play with (see below), but decided the spring was much too weak for real world implementation, and it would never be as rigid as the block (solid vs sprung preloading). Unfortunately there aren't any easy solutions that I would trust in sizes other than 8mm, which leads to options like cutting and tapping you own delrin block, or 3d printing something up like I did (see below). In this picture, the long screws are pulling the smaller nut/block on the right in towards the larger block on the left. Both sides of this have threaded brass nuts/blocks (bought from Accu.co.uk) set into the 3d printed housing (hidden on the left hand side) - it may be possible to 3d print this threaded female section as well, but I am not sure what the resistance/wear would be like. Probably pretty horrible, even in Nylon. In this design, I wanted to separate the two nuts as much as possible whilst allowing them both to be rigidly held against the MDF, in order to help minimise leadscrew whip. As an aside, when designing these types of solutions, prioritise ease of adjustment and access!
Cheap Anti-Backlash Nut
Next, the bearings holding the leadscrew shaft in place needs to be preloaded to eliminate play. There are many ways to do this, one of mine is shown below. Here a clamp collar is sandwiched between two bearings, located into the router frame one side and held the other by a piece of plywood. The two larger oak blocks are cut slightly too small, so that when the whole assembly is screwed down (four screws coming in from the right, not shown), the central plywood plate (red/mahogany colour) is forced to flex slightly and compresses the bearing/collar/bearing assembly. This creates the preload. Stepper is joined to the 12mm lead screw with a flexible plum coupling, just shown here as a red block and not modelled properly. This or other solutions are not too hard, but do take a bit of thinking about to do right.
Bearing Preload system
Same requirement to preload bearings on the drive site, but much less backlash on the nuts holding the gantry. If this is an issue, then two preloaded nuts can be used to eliminate backlash, much as with leadscrews. However, nuts are often designed with solutions built in that are often acceptable.
Some sort of pre-tensioning system. In its simplest form, a U bracket with the idler pulley in the middle of the U and a bolt screwing in at the bottom, pulling the belt tight. You can also add in a third idler pulley as a tensioner pulley. All very simple, however the main cause of backlash in belts is stretch. This is covered in its own section below.
Whip / Whirl
A problem unique to long screws which are being rotated to move a rigidly constrained nut (see below for alternative implementation with stationary screws, that eliminates this issue). Essentially, when driven at high speeds the shafts can reach their critical velocity and start bouncing (resonating) from side to side, this phenomenon is generally known as whip but is also called whirl. The effect can be reduced by using larger diameter screws, or making sure each end has more than one point constraining its location. So for instance, a lead screw where the floating end passes though one bearing, then a second, say 100mm later. In terms of beams, this would be using a fixed support rather than a simple support – the difference between having a beam cemented strongly in a wall, rather than held to the wall by a pivot. The same concept can be applied to the anti-backlash nut, by separating the two halves and making sure each is rigidly constrained. All these approaches will better constrain the screw, and increase the whip frequency. A higher frequency means you can drive the screw faster before whip takes place, and you cannot realistically drive a screw when it is experiencing whip - it is quite a violent phenomenon!
There are charts and equations for determining the critical velocity for lead and ballscrews, however these are covered elsewhere and are generally beyond the scope of this article. But to get a flavour for the issue, here is a chart showing approximate critical velocities for a few values with 8mm and 12mm lead screws (approx 5/16" and 15/32"), although the important dimension is the root diameter which here is 6mm and 10mm respectively (not shown, and approx 15/64" and 25/64"). Rigid-Rigid or Rigid-Simple refers to how well constrained the screw is at each end (see above).
Because this is a function of the unsupported beam resonating, it is essentially the same for ballscrews and leadscrews.
Table 10: Critical Velocity in RPM for 8mm and 12mm leadscrews (root diameter not shown)
Very recently a new design of stepper motor has been popping up, with the lead screw running through the middle of the motor. Terminology is a bit confusing, in that there doesn't seem to be a consistent standard. They are sometimes called "stepper motor linear actuators", "hollow shaft" or "non-captive" steppers. However, the important design consideration is that the screw itself does not need to move - the stepper has a nut system built into it, which it then rotates. As such, they look like an excellent solution to the problem of whip on longer runs. They also simplify the issue of backlash a great deal, since all you need is the anti-backlash nut on the stepper itself. The screw can be then fully rigidly constrained one end, and only allowed to move for thermal expansion/contraction the other end. Also, no coupling needed at all! The main downside is the extra mass and bulk being added to the moving gantries, and less products to choose from. Note the rotational mass of a spinning lead screw is very small by comparison, due to a low moment of inertia, so rotating a thin metal shaft takes less energy than linearly moving a chunky stepper motor.
For an example product check out this link (Amazon affiliate) Precision Linear Actuator Nema 23.
Elongation / Stretch
Unique to belts, there will always be a degree of stretch when placed under load, and this needs to be brought to within acceptable levels given the length of each axis. While this is the main consideration when designing for belts, stretch can also be negated by using finishing passes when programming tool paths, removing a small offset left by previous operations.
More and thicker belts are the clear design solution. Again, Gates do not publicly provide any useful data here (and don't respond to e-mails asking for data), so we have to rely on the same third party source as linked above, with this document which shows us the tension in lb to create 0.1% stretch - or 1mm over a 1m axis. However, be warned! These figures are misleadingly simple. There is a big difference between taking a simple length of belt and measuring the stretch under load, compared to the same length of belt in a CNC machine when preloaded. Both the preload in the belt and the flex in the teeth as they are meshed into the pulley, will act to counteract externally applied force. This is because as the belt stretches, it releases tension from the slack side while increasing it on the tight side. It is the difference between these two forces that acts to counteract externally applied loads. Imagine it as a spring, if you were to take a spring from neutral position and try to stretch it, this would be very different to linking two such springs together, stretching them out and then trying to move the mid point. The resultant stiffness is much greater than the simple case would imply, and is further complicated by where the force is being applied, i.e. the relative lengths of the tight and slack sides. There are equations governing all of this, but they are beyond the scope of this article - if you want to get a better feel for it, check out the bottom of this article Timing Belt Theory from the Gates Mectrol website (Mectrol were another belt manufacturer, purchased by Gates), or this article on Drive Calculation from drive manufacturer Stemin Brietbach. But to simplify, we see that the effectiveness stiffness of a belt is at its minimum at the center of each axis (tight and slack sides equal length). In this case, stiffness is 4x the specific spring rate (natural stiffness) of the belt. It may be actually be higher due to extra forces from the teeth, but lets just use x4 for now.
So! We now have elongation data, and a rough extra stiffness factor. Lets get into the numbers.
For a 2mm pitch, 6mm wide belt (2MGT, commonly used on 3d printers), the force for 1% elongation is just 3.8lb or 1.72Kg - multiplying in our extra stiffness coefficient, that gives us a real number of 15.2lb or 6.88Kg. For a 3mm pitch belt, 15mm wide (3MGT) belt our simple number is 16.5lb or 7.5Kg, multiplying up to 66lb or 30Kg. Pretty good, and if we then use two such 15mm belts, for instance one on each side of a Y axis, we get 132lb / 60Kg, which is quite respectable. Third party belts and pulleys are cheap on Aliexpress, and it is easy to double or even triple them up for extra stiffness. Sticking to these smaller pitch size belts is also useful as it means you can keep the pulley size down, and use direct drive from the motors rather than having to gear them down in order to keep linear movement within a reasonable range. Unfortunately, the Chinese sellers do not provide much in the way of stretch data, however again it is not hard or expensive to just add more belts as a safety factor. Given very the high efficiencies of belt drives, there really is little to no drawback in doing so.
Alternatively, if you want to go with Gates 5MGT, i.e. 5mm pitch, and again use a 15mm wide belt, then 0.1% stretch only occurs at 50.8lb / 23Kg, which translated to a real world figure of 203.2lb / 92kg. Official Gates belts in this size can be purchased on various third party websites, but only in set sizes and not in continuous reels, and they are more expensive. An alternative are the HTD belts, which can be purchased in the 5mm pitch, 15mm width size on Aliexpress and have exactly the same stretch characteristics (if not as good in other regards).
This mostly applies to longer runs, but does mean that a leadscrew / ballscrew should only be fully rigidly constrained at one end. The other must be “floating”, so that it is constrained by a bearing (preferably two, with a distance between them), but free to move within the bearing(s) as the shaft expands and contracts with temperature. With belts, the problem becomes a little loosening on hot days, which can be remedied by a few turns on the tensioner.
Firstly, you should have good extraction. It is much better, both for you and for your machine, to design a system that doesn't need to be dust proof! However, while all the technologies discussed here can have issues, it is easier to add brushes or even vacuum/blowers to the belt just before it hits the pulley. Screws typically need oil or grease, which make dust and chips stick to them – clearly not an issue for belts. That said, it is less of an issue on leadscrews than you might expect. My first attempt at leadscrew anti-backlash blocks was poorly designed, to the extent that the space between both halves of the blocks actually because a solid mass of wood dust, chips and oil. Incredibly, it didn't seem to affect performance in the least. The same cannot be said of ballscrews, which need to be kept relatively clear to stop small dust particles getting into the bearing races.
Leadscrews and ballscrews have enough flex in them that they can cope with small misalignments, but there can still be problems at the ends of travel as the misalignment forces steeper angles into the screw. Of course, this shouldnt be a problem, but accidents happen! Belts are, of course, entirely forgiving to any such misalignments.
Belts are the cheapest of all solutions, and look increasingly cheaper on longer runs where you would otherwise have to deviate away from standard 8mm leadscrews. Even given the need to use more and/or heavier belts, non-standard sized leadscrews and their respective nuts can be very expensive. Ballscrews are clearly the most expensive. All in all, belts are the simplest and cheapest to implement.
Belt Failure Modes
When designing for belts we need to consider the force required for actual failure, here defined as the force required to make a belt jump on the pulley, or even to break the belt itself. So for the latter, we're going to look at thin, flimsy, 6mm (1/4") GT3 with 2mm pitch, a minuscule thickness around 0.7mm (not including tooth height). With such tiny numbers, you might expect low breaking strength, however from the document linked below, we get a working tension of 39lb or 17.7Kg and a minimum breaking strength of 125lb or 56.8Kg. Of course, for a real CNC machine you would have some unpleasant stretching issues if you used such a belt, see Stretch section above.
A quick aside on the terminology, construction etc of these belts:
The GT3 is roughly identical to the GT2, only they are constructed with carbon tensile cords rather than the aramid cords of the GT2. However, from the manufacturers own documentation we know that "Aramid tensile cords used in rubber synchronous belts generally have only a marginally higher tensile modulus in comparison to fiberglass" (see page 172 here). With regards to the actual tooth profile, there may be minor changes to the design but since they both fit same pulley profile, these are unlikely to be significant. GT stands for “Gates Pulley” after the manufacturer, Gates. The belts are a part of their “Powergrip” line, and are successors to HTD belts. Gates claim the GT3 can transmit 30% more power than GT2!! However I have never seen independent verification of this, and especially in light of previous statements it does sounds a bit suspect... Original Gates company parts are more difficult to find for independent makers than their Chinese counterparts, but again I have not seen any comparisons in mechanical properties between the real deal and knock offs.
Perhaps more importantly however, when analysing belt failure we need to visit the maximum torque rating for a given profile, for a given number of teeth on the pulley. This is the torque required to make the belt jump or slip on the pulley. Here are a few numbers for 6mm (15/64") wide GT3 belts, with both 2mm pitch and 3mm pitch profiles - note maximum torque decreases with rpm, but that't not such a problem because so does stepper output torque. Data taken from Gates Powerbelt Characteristics Datasheet (note: this and last datasheet provided by Rodavigo, an industrial design company in Spain - unfortunately, the Gates website itself is not especially helpful).
|2mm pitch||3mm pitch|
Table 8: Torque in N-m required to make a 6mm GT3 wide belt jump on a pulley with given number of teeth, at specific RPM.
|5/64"mm pitch||1/8" pitch|
Table 9: Torque in lb-in required to make a 15/64" GT3 belt jump on a pulley with given number of teeth, at specific RPM.
- The values are for a minumum of 6 teeth meshing, and a belt length of between 294mm to 345mm (11.6" to 13.6"). There is a "length correction factor" that must be applied for different lengths, downrating for shorter belts (e.g. x0.7 for 120mm / 4.7" belt) and uprating with longer (e.g. x1.4 for 1150mm / 45.25")
- Maximum torque does NOT increased linearly with belt width, presumably due to edge slippage. The multiplication factor from 6mm to 9mm, 12mm and 15mm are 1.64, 2.32 and 3.03 respectively. So for example, a 12mm wide belt will be able to hold 16% more torque than two 6mm belts (calculation: (2.32-2)/2).
So to conclude with belt failure modes, you are not going to break the belt but it is conceivable the teeth might jump in certain conditions, although this is only going possible if the CNC machine has been badly designed and the tool is forced into a failure condition (like trying to cut without turning the spindle on).
Where to Buy
All the components discussed above can easily be purchased over at Aliexpress. I have bought a huge amount of CNC components from Chinese sellers on this site, and generally been happy with the process.
If you want to accurately mill metal, you would be better off with leadscrews or ballscrews. For wood or MDF, use belts! They are simpler, cheaper, and faster.
If you want a machine that can do both, then consider which material is your priority. Belts can cut metal if you keep the cuts shallow enough, although you will struggle to get tight tolerances. Leadscrews and ballscrews can easily cut wood and MDF but will be limited to much slower speeds.
This page took days of work to put together, and was make entirely to help others avoid the headache I went though. And while I am happy if I have achieved this, it is also true that I make no money from doing so! I have a few affiliate links, but only about 5 people per day land on this article and almost nobody clicks though to buy something. So if you found this information useful, please consider donating!