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.
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. We wont be covering servos, although a quick mod to the integrated servos in Nema 23 package size that do now exist, as do closed loop steppers, both of which can be controlled in the same way as your standard stepper motor. Here is a 3000rpm, 180W version servo and a 2.8Nm closed loop stepper on Aliexpress, usually the best source for CNC parts.
Now, I am British and trained in engineering, so although I will try and include imperial numbers where possible, they will be calculated (or sometimes approximated) from metric. But seriously, USA, come join us in the 21st century! I know inches are a more human scale, but metric/decimal is just so much easier to engineerify things with.
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 and ballscrews, 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 killing spree 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 (last column below). 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 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 just displayed 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 – 450rpm is fairly quick for stepper, above this value you'll generally start seeing significant torque losses.
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:
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 likely to have to deal with whip again 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 most soft materials to compress more than this. Even if using high density woods, and ignoring material movement due to moisture content, who needs precision milled lignum vitae?! 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, are 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.
|Leadscrew / Ballscrew||Belt Drive D|
|2mm||8mm||10mm (25/64")||20mm (25/32")|
Table 7: Linear force produced by 2Nm stepper
Note that I have not included the drive efficiency in these calculations. Ball screws are >90% efficient, whereas leadscrews can be quiet inefficient, especially with smaller leads (due to friction per turn). Belt drives suffer from negligible efficiency losses, running at around 98% efficiency.
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).
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 quite surprised when I realised that a lead screw with even an 8mm lead could pretty much lift me off the ground.
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.
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.
Potential for backlash on drive nut and bearings constraining the shaft. Anti-backlash nut required, with the off the shelf “block” from Openbuild being in my opinion the best solution. 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 e.g. cutting and tapping you own delrin block, or 3d printing something up like I did with the 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 have brass threaded brass nuts/blocks set into the 3d printed housing which I had to buy (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. 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
Much less backlash on the drive nut, but same issues with preloading bearings holding the shaft in place. Two nuts can be used to eliminate backlash on the drive, much as with leadscrews.
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.
A problem unique to long screws, when driven at high speeds the shafts can reach their critical velocity and start bouncing (resonating) from side to side. This 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.
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"). 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)
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-mail 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 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. 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 belt 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 a in other regards).
This mostly applies to longer runs, but does mean that a leadscrew / ballscrew should only be rigidly constrained at one end. The other must be “floating” in that is is constrained by a bearing, but free to move within the bearing 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 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 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 system with leadscrew and 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 didnt 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 better 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 but since then both fit same pulley profile, they 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 frankly 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, and given number of teeth 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 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.
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.