Resolution/Travel Distance

Using Ballscrews

Lets go back to the resolution for the moment and see how that works out when introducing different mechanical elements.

One of the most popular components used in CNC machines is the ballscrew that you connect to the motor.

As we are talking about resolution here, the main thing we are interested in, is the pitch of the ballscrew. You can get many different pitches and popular ones are 4mm and 5mm. The pitch determines how far the ball nut will travel when turned one revolution. So if the pitch is 5mm, then when the ballscrew is rotated one full revolution the ball nut will travel 5mm.

So based on this, we can now work out our best resolution of travel that is possible when combined with our Stepper driver.

If we have our stepper driver set to Full Step (200 Pulses Per Rev) then we know that sending 200 pulses will turn the ballscrew one revolution and move the ball nut 5mm. By dividing the pitch down by the pulses, we can calculate that 5.0/200 = 0.025mm resolution. If we send one pulse to the Motor driver then the ball nut will move 0.025mm. Now we increase the Stepper driver to 1/8 Step (1600 Pulses Per Rev) and we get a much better resolution 5.0/1600 = 0.003125mm.

Controlling a Stepper Motor with a Driver

Some drivers will let you go way much higher than the steps shown above in the example, but there does come a point where increasing the Pulses Per Rev is not really going to make a difference and most applications will not use above 1/16 (3200 Pulses Per Rev).

For an example if you set a driver to a really high divide of say 20’000 Pulses Per Rev and start sending some pulses you will notice that the motor will not move on every pulse and you indeed to need to send say 10 pulses before the motor moves to the desired position.
Also the higher the Micro step the less holding torque of the motor.


So if you need a better resolution then decrease the pitch of your ballscrew, like say a 2mm pitch which would give you 2.0/1600= 0.00125mm resolution could be a better option for accuracy.
As usual everything has it trade off’s and by increasing the resolution you will need to make sure you have a controller that  can send fast pulse trains, again this is where the PTHAT comes into it’s own and will be explained further down this page.

Most software out there likes you to specify the amount of pulses per unit of travel, so to find out how many pulses for 1mm when using a 5mm pitch ballscrew and 1/8 step would be 1600/5.0= 320 pulses.

Pulley and Belts

Now of course if you are not building a high torque CNC machine and you are moving a small mass, then you could use pulleys and belt as a drive system like 3D printers do.

Pulleys and belts will also divide the resolution, depending on what size pulleys you use and also the pitch of the belt.
The popular choice for 3D printers is to use GT2 (2.0mm) belts and the less teeth on your pulleys is going to give you a better resolution.

Calculating the Resolution

So first off lets take usage of a 2.0mm belt and 16 tooth pulleys, using 1600 Pulses Per Rev it would give us 0.02mm resolution, which gives us 50 pulses for 1mm of travel.

We can calculate the amount of pulses to travel 1mm by multiplying the pitch of the belt by the tooth count on the pulley 2.0*16=32 and then taking the Pulse Per Rev and dividing it by the result 1600/32=50. Then to get resolution just divide 1.0/50=0.02mm.

You have to be a little bit careful when choosing the amount of teeth on the pulley as you may end up with needing to send half a pulse to get your 1mm of travel and you cannot send half a pulse!.
For example lets take a 14 tooth pulley and do the same maths. 2.0*14=28 then 1600/28=57.14, as you can see you are not going to be able to send 0.14 of a pulse. So keep this in mind when calculating.

There are some handy online calculators such as this one that can make it easier.


The PTHAT Accuracy

The PTHAT uses a dedicated counter for each motor Axis and will monitor the pulse trains and keep an eye on how many pulses are being sent out to each Axis. When the target pulse count has been reached, it automatically stops the motor or continues on with the next pulse count command sent, even at very high speeds in ensures no extra pulses creep in or get missed.

Share This